将棋ソフト開発 Week0 ~ 将棋アプリ開発始めます ~
コンピュータ将棋の勉強をしていると以前振り返りの記事で書きましたが、理論だけではなく実際に作ってみたいなぁと思いました。 とはいえ勉強していたのはAIの部分でしたので、今回はゼロから将棋アプリを作って行こうと思います。
目次
目的
今回強い将棋ソフトを作ることは目的としません。
今の将棋ソフトがもう強すぎるため、強いソフトを作って自分の将棋の勉強のために使うとかそういうのもあんまりモチベーションにならないので。 また強いソフトを作るための機械学習とかやり始めたら、計算リソースとかも必要なので。
というわけで今回何を目的にするかというと、主に下記を目的とします。
- プログラミングの勉強
- 拡張性の高い将棋アプリの作成
- 変則将棋などもやることがあるので、自分で作れたら便利なため
プログラミングの勉強
今回はプログラミングの勉強を一つの目的として行うため将棋アプリをゼロからスクラッチで作ります。 スクラッチというのは、yaneuraouなど既存のOSSの将棋ソフトがあったりしますが、そういったものは使わずに自分でゼロから開発していきます。
拡張性の高い将棋アプリの作成
将棋系Vtuberとしても活動をしていますが、その中で仲間内でこんな変則将棋やってみたい、といったアイデアが出てくることがあります。 そういった企画をやりやすくするために、拡張性の高い将棋アプリケーションを作ることを目的とします。
方針
UI面の要件はまだ未定です。 まずは将棋のコアとなる部分を作成します。 確認のために最低限自分で対局できるくらいのusiは実装するかもしれません。
UIは未定ですが、コア部分さえ作成すれば、あとからアプリに組み込むこともできますし、サーバで動作させて通信によりブラウザで動作させることも可能なためです。
コア部分の作成には一般的に将棋に必要な機能の他に、AIの思考ルーチンも含めます。
コア部分で作るもの
- 盤面の表現
- 合法手生成
- CPU指して生成
作らないもの
- 棋譜保存
さいごに
将棋などのボードゲームを作るのは初めてで、うまくできるかわかりませんがとりあえず動くものは作れるようにまではしたいと思います。 進捗に関しては毎週報告できればなーと思います。