PR

ノリでコンピュータ将棋を開発し始めた。

別に電脳戦の影響ってわけでもないが(というか観てなかったが)、将棋を作ろうと思って実装を始めた。
どうやって作ろうか悩んだが、どうせなら友人にプレイしてほしいので以下の条件を満たすように作ることにした。

  1. ブラウザ・タブレットで遊べる(Javascript実装)
  2. 話のネタになるように強さは端末によらず一定(読みの実時間による探索打ち切りではなく、深さ、ノード数による打ち切り)
  3. 将棋好きでない人間に程よい強さと弱さ(ハム将棋とかかなりいい感じに思う。あれでも強いかな?)
  4. (なるべく)読み易いソースコード

3と4は相反するかもしれない。シンプルに書いた場合、水平線効果などのコンピュータ特有の癖がモロに出て来るのは見えているので、いろいろ探索部に手を入れないといけないかもしれないがそうなると読み易さが保てるかは怪しい。そもそも読み易く書けるかも怪しいが。
Javascriptによる実装ではそういう弱さが見えにくくなるほど深く読めるように高速化はまず無理だし、そもそもそれでは強くなりすぎる。限定的に静止探索を導入するぐらいが落としどころかもしれない。

この辺りは要研究なので、これから月一ぐらいで進捗を書きたい。
ここのところ仕事が忙しいのでもしかしたら更新を待たずに死ぬかもしれないが。

後、今回の実相に際して、昔作った将棋のソースコード(C++)を引っ張り出してきたが、かなり泥臭い方法で実装されている。何がヤバいって、もっと良い書き方を今思いつかないのがヤバい。

とりあえず過去のバージョンはCSA将棋というフリーの将棋UIありきで動くので、今回の場合まずはHTML+CSS+JSで動く将棋盤を作るところから始まった。
が、この時点でというか、この部分がというか、かなり面倒くさいのでこの部分が出来たらまずは進捗報告したいと思う。

実際UI作成と最低限ルール通りに将棋を指せるようにするところまでがコンピュータ将棋作成で一番めんどくさいし、つまらない部分だと思う。が、やらないと仕方ないのでやるのであった。


コンピュータ将棋の進歩 6 -プロ棋士に並ぶ-

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