藤井棋聖、おめでとうございます! 最年少タイトル獲得は、三十年振りだそうですね。とんでもなく規格外の人が現れたもんだ。MLBの二刀流大谷選手みたいに信じられない快挙です。
そういえば、ラズパイで本格的な将棋ソフトは動くのかな?と思い調べてみました。将棋界が盛り上がっているので、学生の時に1年間だけ将棋部に在籍していた者として、ちょっと将棋熱が再燃したので試してみることにしました。
結果として、将棋の思考エンジンは沢山ある中、ネットで調べたところ、3年前にRaspberry Pi 3BのRaspbianで動かした例があり「やねうら王」のエンジンにパッチを充てた場合に動きました。
一応、問題無くラズパイ4でもプレイも出来ましたのでご紹介します。
決して藤井棋聖にあやかった記事で・・・す。
将棋所
将棋所は、USI(Universal Shogi Interface)プロトコルに対応した将棋GUIソフトです。
引用元:http://shogidokoro.starfree.jp/
今回は有名な「将棋所」をインストールしてみます。
※もう一つ有名なShogiGUIも同じように試しましたが、monoが拒否して起動できませんでした。何らかの方法はあると思いますが、今回はパスします。
この「将棋所」などのようなソフトは、基本はWindowsで動作するソフトウェアです。しかも、思考エンジンとなるAIは複数あります。
Windows環境で動くため、Raspbianにはmonoというアプリケーションが必要です。
説明が難しいのですが、monoで.NET Framework互換の環境を実現させるため動きます。考え方としてはwineと同じだと思います。(詳しくは避けますけど、wineでも動くんじゃないかな?)
そして、ラッキーなことに先人の手順があったこと、そして結果的に動いた「やねうら王」というのも、2019年の世界コンピュータ将棋選手権で優勝した有名なAIですので、今回ラズパイ4でプレイできてとても満足です!
一部、手順で、zipファイルの解凍にunzipではなく、unarを使い文字化けを回避しました。
また、先人の例では、ShogiGUIでローカルサーバー経由で動作させていましたが、ShogiGUIがインストールできなかったため、将棋所にして直接指定することでも動きました。
monoの導入
先ずはmonoをインストールします。これは簡単。
sudo apt install mono-complete
「将棋所」をダウンロードして展開する。
こちらの将棋所の導入も簡単で、解凍して実行させるだけです。
wget http://shogidokoro.starfree.jp/download/Shogidokoro.zip
zip解凍
Windows用のファイルのため文字コードが異なりunzipコマンドでは文字化けします。Raspbianでは”オプション-O 文字コード”も指定できないので、unarを追加でインストールしてから解凍します。(unarなら文字化けしない)
sudo apt install unar ./Shogidokoro.zip
unar ./Shogidokoro.zip
解凍結果の違い
unar ./Shogidokoro.zip
./Shogidokoro.zip: Zip
Shogidokoro/Engine/Lesserkai.exe (216576 B)... OK.
Shogidokoro/Engine/Lesserkai_ja.txt (123 B)... OK.
Shogidokoro/Engine/public.bin (5338112 B)... OK.
Shogidokoro/ja/Shogidokoro.resources.dll (232960 B)... OK.
Shogidokoro/Shogidokoro.exe (3795968 B)... OK.
Shogidokoro/お読みください.txt (41326 B)... OK.
Successfully extracted to "./Shogidokoro".
そのままunzipだと・・・(テストモード指定しています)
nzip -t ./Shogidokoro.zip
Archive: ./Shogidokoro.zip
testing: Shogidokoro/Engine/Lesserkai.exe OK
testing: Shogidokoro/Engine/Lesserkai_ja.txt OK
testing: Shogidokoro/Engine/public.bin OK
testing: Shogidokoro/ja/Shogidokoro.resources.dll OK
testing: Shogidokoro/Shogidokoro.exe OK
testing: Shogidokoro/?????????.txt OK
No errors detected in compressed data of ./Shogidokoro.zip.
起動方法
起動はコマンドで行います。これも簡単ですね。
mono Shogidokoro.exe

但し、このままでは何もできません。
この将棋所は思考エンジンが入っていません。ですから、動作させるために別途で思考エンジンをインストールします。
ソースからコンパイル
思考エンジンはたくさんあるものの、冒頭のようにほぼ動きません。というより、各エンジンをそのままダウンロードしても、exeファイルを指定できず登録できないのです。
ラズパイではどうやらソースからコンパイルして動くということなのですが、記事執筆時にはコンパイルエラーばかりでまともにコンパイルはできません。
ここで参考にしたのは主にこのページです。
このページ最下部に2017年当時の記載があり、結果的にここから実現できました。ありがとうございます。
2017/10/03 Rasberry pi 3 Model Bでも将棋エンジンは動きます。なのはmini/nano, やねうら王kpp_kkpt(評価関数を小さくしたバージョン)はソースからコンパイルすることにより動くことを確認しました。やねうら王のビルドの方法と外部のPCからラズパイのエンジンを使う方法はこちらを参考にしてください。(なのはのコンパイルはmakeするだけです。外部との接続はやねうら王と同様にできると思われます。)ラズパイのレーティングはやね+epoch4評価関数の組み合わせで3000前後(現在測定中)。なのはとの組み合わせだとアマチュア有段者のレベル(R2000)くらいです。
そして、githubに丁寧にまとめられていました。記事執筆時点で3年前の物です。
基本はこのリンク先の通りに実行しました。
また、なのはminiというのはmakeしてもエラーだったので無理でした・・・。
唯一、先例と異なるのは、途中の解凍はunzipではなくunarを使った点と、tcpserverとかのインストールはせず、コンパイルして出来上がったYaneuraOu-by-gccを起動した将棋所から指定することで呆気なく動きました。
KPPT評価関数を変換するにあたり、スワップファイルを作成しています。これは3Bであったためと思われます。ラズパイ4なら4GBなら要らないと思われますが、一応、例に倣ってやってみました。試していませんが、スワップファイルを作らなくても大丈夫だと思います。512MBだったし。
エンジンの登録
コンパイルした実行ファイルを、エンジンといて登録するだけで動きました。設定方法は上部メニューから行います。
対局−>エンジン管理

スクリーンショットでは登録されていますが、追加ボタンで追加します。

エンジンの指定は、作業したworkフォルダにコンパイルした「YaneuraOu-by-gcc」を選ぶだけです。

AIと対局するには、対局から相手をエンジンにします。他のエンジンが登録できれば、ここでどちらもAIとすることで、どちらが強いか観戦できるわけですね。

やった!動いた!
ご覧のようにプレイ中はCPU負荷率は100%です。それでも他のことをしなければプレイに支障はありません。

持ち時間の設定が必要なのですが、10分と1時間とどちらも問題無く指せました。長いとAIがより深く手を考えてしまうため、その分負荷がかかるかも知れません。手によってはかなり長いこともあるので、短めの方が無難でしょうか。

細かい設定などはまだ全て試していませんので、止まったりエラーが出たらすみません。
少なくても私がイチコロで負けるくらいの手数であれば、全く問題なくプレイが可能でした! 強い人は・・・知らん。
AI将棋の世界ってかなり奥が深いので、あくまでも単純にプレイするだけを楽しみました。定跡、棋譜データの読み込み、棋譜解析、などなど、色々なことができるのですね! 藤井棋聖の局面を再現なんて面白そうです。
ラズパイ4でどこまで動作するのかは試してみてください。他のエンジンがコンパイルできて動いたのなら、ご一報ください。
参考:将棋GUIソフト「将棋所」のページです。
参考:将棋フリーソフト レーティング