nounai.output(spaghetiThinking);

趣味と実益を兼ねて将棋プログラム(研究ツールなど)を作ってみたいと思う私の試行錯誤とか勉強したことを綴ってゆく予定です。 主目的はプログラミングの経験値稼ぎですが、コンピュータ将棋の製作も目指してみたいとも考えています。

KFEnd

実装レベルに近いお話。

http://www31.ocn.ne.jp/~kfend/inside_kfend/data_structure.html

まだすべてを見たわけではありませんが、AI側の都合なども頭に入れてあげる必要性を感じますね。UI部分とAI部分の分離手段としてメジャーなUSIプロトコルは色々アレだ、という評判のようですし。将棋のことはある程度知っていても、AIを作る人の都合、、、「世界」を知らないと良いモノは作れませんしね。私としては人間にもAIにも適応しやすいモノを作りたいので。

さらっとどういう機能(インタフェース)が欲しいかを知り、要件をつめていくつもりです。

上記のサイト様から引用しますと、例えば、

・局面のハッシュデータが欲しい

・損得の評価値が欲しい

AI作成者としてはこうした機能が欲しいようです。

前者はその機能をどこかしかるべきクラス、あるいはインタフェースで定義する必要があるな、というのがわかりますし、

後者については少なくともシステム内部の表現・・・生データを渡すようなインタフェースではAI側の実装を制限してしまい、不便なわけです。少なくとも、システム内部の表現は「プレイヤー側」からは見えないようにしなければ、ということは言えそうです。

まあこのへんの話は考えればすぐに思いつきそうなあたりではありますけどね。

なにぶん経験がありませんし。それに、一見すると「当たり前じゃん」と思っているような部分こそ、軽視せずにちゃんと認識して、文字や図に落とし込む作業というのが大事なのではないかなと考えます。

・・・ただ、開発のハウツーやノウハウを知らない私としては

プログラムをちょこちょこ作りながら考えていく方が効率的じゃない?

という気持ちもかなり強いです。

クラスを作ってみることで「ああ、このへん全然考えてなかったな」って振り返ることができますし。実際どうするのがよいのでしょうね。

***

引用サイト様

 将棋プログラムKFEnd

  URL > http://www31.ocn.ne.jp/~kfend/index.html

***

2012/06/24(Sun)

 Ver.1 投稿