ブラウザで将棋の検討できるってマ?

将棋の検討ソフト

将棋の検討ソフトとして最も有名なのはおそらくShogiGUIでしょう。

フリーのエンジンをどんどん登録すればいろいろ弄れて、これ以上便利なソフトもなかなかないのではないかと思います。

が、これはWindowsでしか動作しないという致命的(そこまで致命的ではないが)な問題がありました。

Mac用にビルドしている方もいらっしゃるのですが、手間の割にレイアウトが崩れていたりでちょっと使う気にならずにいたのですが…

Shogi-Board

なんとブラウザ上でJavascriptを使ってShogiGUIのようなものを作成されている方がいました。

ちなみにデモ体験は以下のURLでできます、便利!!

ちょっとした不満

ここが直れば更に良くなるのではないかという不満点を先に挙げておきます!!

成り判定がめんどくさい

成と不成の選択ダイアログが、常に駒の移動先に表示されてしまいます。常に中央にするかもうちょっと大きく表示しないと誤クリックしちゃいます!!

後手の成り判定が上下逆

駒を逆に表示している関係上だと思うのですが、上下逆に表示されているのでどっちがどっちなんだかわかりにくいです!!

画像の解像度が低い

これは別に不満というわけではないのですが、4Kモニタを使って大きく表示していると駒の画像の粗さがちょっと目立ってしまいます。

ベクター画像にするとかで対応できたり?

一般の方はこっちのほうがいいと思いますが、ぼくは以前つくったようなこんな感じのシンプルな将棋盤でも問題なしです(もちろんこの将棋盤だと駒台から駒が指せないのだが)

局面出力機能が欲しい

現状、棋譜コピー機能があるのですがそれに加えて現在の局面をSfen形式で出力する機能があるとぼくがつくった局面ジェネレータが使えて便利です(完全に私用であるが!)

導入の仕方

導入自体は簡単で、Webサーバにshogi-boardのファイルを置くだけです、うん、簡単。

というわけで、最近復活させたぼくのサーバにshogi-boardを導入してみました。

駒を動かしたりするだけならこれで完結します。

評価させたいよね?

このブログの読者さんが考えているのはブラウザ上で評価値や読み筋を見たいってことだと思います。

ただし、Javascriptはローカルにおいてある思考エンジンを直接起動することができないので、思考エンジンの出力をJavascriptに渡してあげる何かが別途必要になります。それが、shogi-board-serverです。

なんと同じ作者さんなんです、神かな?

検討機能をつける

検討機能の導入方法はここに書かれているのですが、でき合わせのものを使う場合はローカルのWindowsかMacのマシンにshogi-board-serverをダウンロードして使うようです。

ただ、ここで注意しなくてはいけないのはJavascriptはドメインを超えてファイルをダウンロードすることができないので、ウェブ上で動作するShogi-boardにローカルのShogi-board-serverを連携させるといったような事ができないわけです。

ひょっとしたらローカルならいけるかもだけど、割愛。

なので、ぼくのサーバ上のShogi-boardに検討機能をつけようとしたら同じくぼくのサーバ上でShogi-board-serverを動作させないといけないわけです。

さて、ここで勘の良い方なら気づいたと思われます。

これ、AWS上のハイスペックなマシンの上で動作させ続ければ、ブラウザにアクセスするだけで検討できる超絶便利な環境ができるのでは???

思考エンジンの導入

dolphin+illqhaは最新のものだと何故かビルドでコケる問題があるので、旧バージョンを使いましょう。

もちろん古いものなのでちょっと弱いはずですが、人間に比べたら遥かに強いはずなのでそこまで問題にならないはず。

ビルド方法については以下の記事で解説。ってか自分も久しぶりすぎてこの記事読んでなんとか対応しました。

評価関数

dolphin+illqhaはNNUE型の評価関数に対応しているのでその評価関数をとってきます。

特にこだわり、というわけではないのですがorqha2018が好きなのでそればっかりつかっています。

nn.binというファイルがあるはずなのでそれをevalフォルダにコピーします。

ディレクトリ構成

ここで詰まって作者の方にissueを投げたのはここだけの秘密だ。

さて、ディレクトリ構成なのですが、以下のようにすれば多分問題ないです。

__shogi-board
   |__engines
   |   |__YaneuraOu-by-gcc
   |   |__shogi-board-server 
   |   |__eval
   |       |__nn.bin 
   |__config
       |__app.config.yml

shogi-board-serverとYaneuraOu-by-gccを同じディレクトリに置くのがミソです。

app.config.ymlはドキュメントを参考にYaneuraOu-by-gccまでのパスを絶対パスで記述しましょう。

ぼくの場合は以下のような感じになっています。

engines:
  dolphin+illqha: /home/ubuntu/shogi/shogi-board/engine/YaneuraOu-by-gcc

実行してみる

これはコマンド一発でできるのでscreen ./shogi-board-server -app_config ./config/app.config.ymlみたいな感じで大丈夫かと。

先頭のscreenっていうのはSSH接続を切っても動作させ続けるためのおまじないなので、不要な人は削除で。

実際に使ってみる

ぼくのサーバ上のshogi-boardにアクセスして、shogi-board-serverのURLとして以下の画像のとおりに入力しましょう。

HTTPSからHTTPのデータを取ってくることができないので、アクセス先に注意!

あとは設定を押せば無事にエンジンが起動します。

エンジンを選択する

今のところはdolphin+illqhaしか実装できていません。

いろいろ設定を選ぼう!!

無事に検討成功!!

既存のバグ?

表示の問題

例えばこの局面はソフトの検討通り2五飛打が最善手と言われているのですが、その評価値がおかしいです。

本来この状況だと後手大優勢なので評価値は-1548を示さなければいけないのですが、手番が後手のために「後手から見て評価値1548の後手大優勢」という表示になっています。

ちなみに後手が指すと「先手から見て評価−1710の大劣勢なので」、評価値は-1710という値を示します。

このフォーマットだと、評価値を見る際に手番を考慮する必要があるのでめんどくさいと思います。

まとめ

Macでもサーバさえ用意してしまえば手軽にブラウザから検討ができるのはものすごく便利。いくつか改善点はあると思うが、それは伸びしろがあるとポジティブに考えることもできる。

局面のSfen出力機能がつけば局面ジェネレータを使って簡単にブログ用の局面が生成できるので、対応してくれないかなーなんて思ったり。まあ、オープンソースなので最悪自分で実装しちゃってもいいでしょう。

多分、内部的にはSfenで局面を管理していると思うので。

記事は以上。