2018「5五将棋」アプリについて現在リリースしている「3三将棋」アプリとUI部分以外はほとんど同じソースを使って作った5五将棋アプリです。幾つかの5五将棋アプリと対戦させてみたところ、結構勝ったり負けたりのいい勝負なので機種によっては動作が重いとはいえ、そこそこ楽しめるかもしれません。アプリの仕様は3三将棋アプリとほとんど同じなので3三将棋アプリの記事を見ていただくとして、ここでは3三将棋アプリと違う点について書いておこうと思います。5五将棋ならではの仕様(桂馬の扱い)本来の5五将棋?では敵陣一段目(後手は5段目)に駒が進むと駒が成れますが、5五将棋アプリでは初期配置によって駒が成れる段が変わる仕様にしています。使用する駒に桂馬が含まれている場合に一段目(後手は五段目)でしか駒を成れないとすると不都合が生じるからです。打った桂馬が3二に跳ねた場合に、その時点で駒が成れないと次に駒の行き場がなくなってしまいます。通常の将棋で先手の歩が一段目に進んだ場合強制的に「と金」になりますが、それと同じで使用する駒に桂馬がある場合は二段目でも成れるようにする必要があります。そのため「初期配置に桂馬が含まれている場合は、桂馬だけでなくすべての駒が二段目(後手は四段目)で成れるルールにしています」。詳しくないですが、一段目で駒が成れるルールの本来の5五将棋に桂馬が使われていない理由は、もしかしたらこのことが理由かもしれません。たしかに全部で五段しかないのに敵陣が2段を占めるというのもバランスが悪い気がしますので、5五将棋では桂馬は使うべきではないのかもしれません。7七将棋ならちょうど良いバランスになるような気がしているので、次は先手が二段目、後手は六段目で成れるルールで7七将棋を作ってみようかと思っています。「3三将棋」アプリでは千日手回避のために特別な処理はしていません、千日手になるのが当然の成り行きと思えるケースが多いためです1。5五将棋アプリの場合は駒の損得が発生しない序盤の段階で千日手になってしまうケースがあまりにも多いので千日手回避のロジックを組み込んでいます。同じ局面が3回発生した場合にはAIの手を次善手(あくまでもアプリのAIが次善手と判断しているだけです)を指すようにして、なるべく千日手を回避するようにしています。次善手を指していても千日手になることもあるので、絶対千日手を避けるというわけではありません。瞑想モード追加Version1.0.0.2で瞑想モードを追加しました。「読みの深さ」のところで説明していますが、「長考」モードでは3手読みで候補手を13手に絞ってその候補手に対して5手読みを行いますが、「瞑想」モードでは候補手を絞らずに3手読みしたすべての手を評価値でソートした後に5手読みしています。読みの深さは変わっていませんので、詰みを見つけた場合等、枝刈りが効果的に働いて「長考」モードより応答が速くなることもあります。ゲーム終盤に詰みを逃しにくくなったのは確かですが、自分がテストしている限りにおいては「長考」モードより強いかどうかは微妙なところです。瞑想モードの評価関数変更Version1.0.2.0から瞑想モードの評価関数が新しくなりました。瞑想モード以外は「駒得」しか考慮していない評価関数を使用していますが、瞑想モードでは「駒得」+「駒の働き」を考慮した評価関数を使用しています。人によっては対戦して棋風が違うと感じるかもしれません。強くなったとは思いますが、長考モードより指し手に時間をかけていることを考慮すると、強くなったと言っていいかは相変わらず微妙なところです。評価関数の変更がどのように作用したのかは詳しくは分かりません。評価関数の変更内容に関してはこの記事を参照してください。二ヶ国語対応Version1.0.1.0から二ヶ国語対応しました。Androidの言語設定で日本語以外を選ぶとアプリで使用するメッセージが全て英語表現になります。クリップボードを使った棋譜出力Version1.0.2.0からCSA形式(*.csa)での棋譜出力が出来るようになりました。左上のチェックマークアイコンをタップすると共有画面(インテント)が表示されるので、クリップボードを選べばテキストファイルを扱えるアプリに棋譜データを貼り付けて保存出来ます。CSA形式の棋譜はヘッダ部分に駒の初期配置を定義出来る(駒落ち将棋にも対応している)ので、駒の初期配置パターンを選択出来るこのアプリに都合がいいと思ったので採用しました。CSA形式の規約を全て網羅しているわけではなく、必要最小限の部分だけ実装しています。Tで始まる指し手の消費時間や$で始まる棋譜情報は出力されません。以下が出力される棋譜の一例です。P5+OU+KI+GI+KA+HI-+4544KI-4132KA+5453FU-2122KI+2534KA-5141HI+3524GI-1213FU+2413GI-2213KI+1513HI-0012GI+1312HI-1121OU+0011KIクリップボードを使った棋譜読み込みVersion1.0.2.4からCSA形式(*.csa)の棋譜入力が出来るようになりました。テキストボックスに棋譜テキストデータを貼り付けて読み込みボタンをタップすれば、棋譜を読み込みます。このアプリ自身が出力した棋譜データは読めますが、他のソフトから出力された棋譜データは読み込みに失敗するかもしれません。エラーが発生した場合はその行数を表示しますので、データを編集して試してください。※カンマ区切りのマルチステートメントには対応していません。※たとえCSA形式(*.csa)の棋譜であっても本将棋(9×9)の棋譜は読めません、5五将棋専用です。棋譜を読み込んだ後は通常の対局通り、対局者を変更したり局面を戻して途中から指し継いだり出来ます。CSA形式の初期配置定義を利用するCSA形式の棋譜読み込みが出来るということは初期配置を自由に定義出来るということです。試しに以下のような上下左右の隅に飛車を配置した棋譜(飛車が4枚)を読み込ませてみました。+FUP5+HI+GI+OU+KI+HI+飛車4枚の盤面がちゃんと表示されました。ここで「再開」ボタンをタップすると通常通りゲームを開始できます。メニューで選ばれている初期配置から新規対局が始まってしまうので気をつけてください。独自に編集した棋譜ファイルや他のソフトから出力したファイルを読み込む場合はエラーになる可能性があります。以下の表を参考に棋譜ファイルを編集して再度読み込みを試してみてください。盤面データの一行が長すぎるか短すぎます。盤面データは一行ずつ改行する必要があります。盤面データのアルファベット2文字の駒の略号が間違えている可能性があります。持ち駒データのアルファベット2文字の駒の略号が間違えている可能性があります。盤面データの先頭Pの文字の次は、数値か+か-です。指し手データの持ち駒を打つ時の記述が間違えている可能性があります。指し手データの指し手に誤りがあります。P、+、-、'、V、T、%、N、$以外の文字が行の先頭にあります。ちなみにP、+、-以外の文字は読み飛ばして無視しています。指し手データのアルファベット2文字の駒の略号が間違えています。手番データ(+か-)は盤面データが記述された後に書かれている必要があります。駒に毛筆フォントVersion1.0.5.3から駒のフォントに毛筆フォントを選べるようになりました。Version1.0.9.0から盤面の反転(先手・後手を上下逆さま)表示機能追加しました。画面右上の回転矢印アイコンをタップすると後手を手前にして将棋盤を表示出来ます。この機能追加により今までAndroid4.4以上が動作対象機種でしたが、Android5.0以上が必要になります。Push通知対応Version1.0.7.2からPush通知を受信できます。左上右側にあるアイコンをタップすると受信した最新のメッセージを再度表示します。受信したメッセージがないときは何も表示されません。局面の評価方法変更Version1.1.1.0から詰み判定(ゲーム終了判定)処理を導入し、局面の評価方法を変更することによってユーザーレスポンスを改善しました。い」モードで指し手が早くなっています。「瞑想」モードの応答時間はあまり変わっていませんが、従来より一手読みが深くなってさらに強くなったと思います。どのように変更したかアルゴリズムに興味ある方は以下の記事を参照してください。メモリ逼迫時にAndroidによってアプリが強制終了されるケースが多いので、Version1.1.2.0から一手指す毎に棋譜を自動保存する機能を追加しました。不意にアプリが落ちても起動後「再開」ボタンをタップすることで対局の続きが可能です。※棋譜入力欄から入力された棋譜は自動保存の対象になりませんので、必要であれば棋譜出力して保存してください。※万が一自動保存に失敗して何らかのエラーが発生しても、「新規開始」すれば新たにファイルが作成されるので問題ありません。それでもエラーが表示される場合は、「アプリ情報」メニューから「ストレージ」を選んで「ストレージを消去」の操作をしてください。その際には対局データは消失し各種設定も初期化されますがご了承ください。千日手になって当然に見えると言ってもその局面を迎える前にもっといい手(最善手)を逃していると思われるケースが多いのですが、同一局面の繰り返しが始まってからでは時すでに遅しとなっていて千日手を避けられなくなっているという意味です。この辺りの事情はAIの出来の悪さなので仕方がありません。3三将棋の場合は無理に千日手を避けると致命的な悪手になるので敢えてそのままにしています。↩5五将棋大会の棋譜を読み込んでテストしていたら、成りを不成で出力していると思われる棋譜も混じっていました。↩svgファイルにフォントデータを埋め込んでいるため、再配布可能なフォントが必要でした。将棋の駒に使用する文字分だけなので自作も考えられますが、当然有名な書家が書いた字の方がいいでしょう。アプリ内にリンクを貼ったほうがいいのかどうかわからなかったので、一応権利者にも確認しました。