リアルタイムに将棋の検討が行える将棋盤つくった

Javascript

既存の将棋盤の問題点

さて、自分は将棋が趣味で検討することももちろん大好きなのですが他の人と一緒に検討していて「ここでこの変化は~」って言われても「ん、どんな変化?」って符号からすぐに脳内将棋盤が浮かばないんですよね。

簡単な局面ならいざしらず、複雑になるとこれはもうお手上げです。

ShogiGUIを開いて一緒に駒を動かしていればいいのですが、一人が動かしているのを符号をきいて自分も動かすのは正直めんどくさいんですよね。

「一人が動かしたらこっちの盤面も動いたらええやん?」って思うわけです。それは例えば将棋倶楽部24とか将棋ウォーズで友達対局しながらやればいいのですが、あれらは元々のコンセプトが「対局」なので持ち時間などがあるし、第一「待った」ができないので戻って検討ができません。

なので「待った」ができて局面をいくらでも戻せる上に相手が指したら即座にこちらの画面に相手の指し手が反映される仕組みが欲しかったのです。

リアルタイム将棋盤

shogiboard

で、ここ一週間くらいブログの更新をほったらかしてつくっていたのがこれでした。

実際には二日くらいはスプラしかやってなかったので実働は五日くらいでしょうか。

将棋盤の見た目は至ってシンプルで局面図のように文字だけで構成されています、とっても軽いです。

リアルタイム将棋盤の仕様

以下、簡単にリアルタイム将棋盤の仕様について解説。

リアルタイム反映

相手が指してから1秒以内に反映されます。指したときしか通信を行わないのでデータ転送量を気にする必要はありません。

アクセス制限

GoogleのFirestoreというクラウドデータベースのサービスを利用しているので一日に読み込みが50000回、書き込みが20000回しか行えないという制限があります。

これは一手指せば盤面を更新して対局者二人に変化した盤面の情報を送るので、結局の所一手指すと読み込みを二回必要とすることになります(観戦者がいない場合)

つまり、全ての部屋の合計で盤面変化を25000回行うと読み込み上限に達して、その日の間はリアルタイム将棋盤は動作しなくなるということです。

最終手表示

リアルタイム将棋盤は最終手表示に対応しています。また、選択した駒を強調表示する機能もついています。

盤面反転機能

後手番をもって指す人は盤面を反転させることができます。

一手戻る機能

下部のボタンをクリックすることで一手戻れます。分岐機能はないので戻った場合、指し手の情報は完全に失われます。

初期化

下部のボタンをクリックすることで初期盤面に戻れます。これも同様に指し手の情報は完全に失われます。

未実装の機能

以下の機能はめんどくさかったりあんまり必要としてなかったので実装していません。

筋などの表示

どこが1筋なのかとかがわかりません(実装がめんどくさかっただけ)。要望があればやります。

合法手判定がない

王手がかかっていても王手を解除する以外の手を指せますし、逆にわざと玉を取られるような手を指すこともできます。

二歩対策がない

リアルタイム将棋盤は二歩ができます。

できたからといって何なんだって感じなんですけど。

局面出力機能がない

局面出力ができないので、別のソフトで検討しようとしたらいちいち操作しないといけません。が、これは希望があれば実装しようと思っています。

棋譜出力機能がない

同様に棋譜出力機能がありません。

追加してみたい機能

日本将棋連盟は未だにFLASHとかいうロストテクノロジーを使っているので、iPhoneなどで棋譜をみることができません。

最近は動画配信サイトなども充実していますが、やはり手元で棋譜を見たくなる場面もあります。なのでURLを指定すれば棋譜を読み込める機能はつけてみたいなという感じもします。

まあでもこれはKifViewerに任せればいいのではという気もしています。

まとめ

一週間くらい放置していましたが、ようやく完成してよかったなという気持ちです。

次はRN版Salmoniaの改修を行いたいと思います、とりあえずはUIの強化とiksm_sessionの再取得に対応するくらいでしょうか。

記事は以上。

コメント

タイトルとURLをコピーしました