将棋ソフトをLispで開発しよう

第17回コンピュータ将棋選手権のようす

大学生の頃からコンピュータ将棋の開発をやってみたいと思っていたが、なかなか踏み出せなかった。今年3月のボナンザ対渡辺竜王戦に触発された事もあって早く開発を始めたかったが方針が決まらない。これまでのコンピュータ将棋の開発手法をそのまま踏襲したのでは面白くない。

ボナンザが評価関数を機械学習により生成しうまく行ったのを見て、私も評価関数は基本的に自動生成したいと考えた。私自身の棋力が非常に低い(将棋クラブ24の段級位で13級)というのも大きな理由である。
昔からニューラルネットに興味を持っていたので機械学習のみならずニューラルネット、エージェント学習、GAなぞいろいろな手法で試してみたい。

しかしながらニューラルネット等を勉強しながら、評価関数の部分からいきなり作り始めると言うわけにも行かないのでまず指し将棋プログラムの骨格を作らなければならない。
GUIや通信モジュールはCSA将棋かMyBona、あるいは最近発表されたばかりの「将棋所」を利用させてもらうとしても思考ルーチンの開発をどのように始めるか?

「うさぴょんの育ての親」さんの著書を参考にC++Javaで開発する事も考えたが、どうにも個性が出せそうにない。その方針で始めてしまうと「れさぴょん」そのままからなかなか抜け出せずに苦労しそうな気がする。
すなわち自分で将棋プログラムの骨格を考える事をサボってしまうと、後に評価関数を自動学習タイプのものに変更する時点でも相当な困難に突き当たるように思える。

そこで何か、自分でプログラムの骨格を必然的に考えなければならないような開発手法は無いかと考えてるうちにLispで開発を始める事を思いついた。Lispにも前々から興味だけはあったが全く習得していない言語である。
何もかも初めての方法にチャレンジすると言うとんでもない方針ではあるが、ともかく今日から少しずつ始めてみようと思う。