コンピュータ将棋入門について

コンピュータ将棋界隈には色んな人がいます。

奨励会員などの将棋の強い人,ゲーム情報学含め情報系の学生・研究者,対戦大好きなゲーマーやプログラマーなどジャンル分けはクロスするので避けますが,結構な色物揃いです。

理由は実のところ要求スキルが幅広いことが挙げられます。

将棋のルールをコーディングするだけにも二つのジャンルの知識が必要になります。

近頃はこれに加えて最先端のAI技術ですね。

  

じゃ,今から入門って大変なのかと言うとルート次第でしょうね。

簡単にできるものとして,ゼロから全部作るのではなく既存の物を改造する方法があります。

ライセンス問題も生じないようにオープンソースの物をベースにするのがよいでしょう。

やねうら王の評価関数や定跡のみを差し替えるというのが今定番の入門でしょう。

 

別のルートを案内します。

棋譜解析です。実際欲しい機能がこちらと言う方が相当多いはずです。

自分なりの棋譜解析なんかは結構面白いと思います。

以前より紹介してるpython-shogiなどを用いると棋譜ファイルの読み込みなどは簡素に書けるのでお勧めです。

 

昨年学生向けに提示した練習課題をリストにしておきます。

練習用の棋譜ファイルは適当に対戦させて作るか,floodgateからでもダウンロードしてください。

1.棋譜ファイルから終局までの手数を得る

2.棋譜ファイルから初手を得る

3.棋譜ファイルから玉の移動した手だけを得る

4.棋譜ファイルから玉の移動したマスに着色する

5.複数棋譜ファイルから玉位置のヒートマップを作成する

6.複数棋譜ファイルから入玉した棋譜だけ得て,入玉率を算出する

 

同様に

1.棋譜ファイルから桂打ちのみを得る

2.桂打ちの際の利きを確認する

3.多くの棋譜ファイルから桂打ちを分類する(合い駒,両取り,繋ぎ桂,王手など)

 

駒の損得を計算する

成り駒を出現を検出する(さらに馬や竜など駒を区分する)

多くの棋譜ファイルから同一手順や同一局面を探すツールなどは簡単に作れるはずです。

頓死や戦型など様々に分析をすることも可能だと思います。

高度な解析をするには他のプログラムを呼び出して使うようなことがあると思います。

たとえば「詰めろ」を検出するには手番をパスして,詰将棋エンジンに詰みがあるかどうかを判定してもらえば簡単に答えが得られます。

振り飛車の左桂に着目して大量の棋譜から統計的なデータを得るような試みがあってもよいように思います。

 

ってことで,対戦や評価値だけじゃないのよ。

 

つーか,そもそもそういう動機でコンピュータ将棋やってるので,独自の出力データを上手に可視化すると結構面白いと思ってる。