Linux用チェスエンジン

 現在のLinux用チェスエンジンは、他のプラットフォーム用で利用可能な商用チェスエンジンに引けを取らないレベルに達している。そこで本稿では、特に有名な6種類のLinux用チェスエンジンについて、その特徴を解説することにする。

 コンピュータと人間とのチェス対戦と言った場合、人間相手にチェスを指している実態はチェスエンジンと呼ばれるプログラムである。この場合のゲームは、人間側の駒の動きを入力としてチェスエンジンに与えると、次に打つべき手が計算され、出力としてコンピュータ側の駒の動きが返される、という流れで進行する。

 こうしたチェスエンジンとの対戦は、ユーザインタフェースを介して行われる。多くのチェスエンジンではコマンドライン形式のユーザインタフェースが採用されているが、実際にゲームをするとなると、この形式は非常に扱いにくい。チェスエンジンとの対戦をスムースに行いたければ、グラフィカルなユーザインタフェースを使うべきだろう。そうしたグラフィカルユーザインタフェースとチェスエンジンとを仲介するフリー/オープンソース系のプロトコルとしては現在、XBoardとUCI(Universal Chess Interface)の2種類が双璧をなしている。

 チェスエンジン本体とグラフィカルユーザインタフェースが独立した存在となっている以上、各ユーザは好みのインタフェースを選択すればいい。なお、これらのプロトコルをサポートしているチェスエンジン同士であれば、XBoardないしはUCI系インタフェースを介することで、2つのチェスエンジンを対戦させることも簡単に行える。

Crafty

 Craftyは、Robert Hyatt氏が開発したチェスエンジンであり、その原型となったのは、1983年から1989年まで世界コンピュータチェスチャンピオン(World Computer Chess Champion)の座に君臨していたCray Blitzである。現在の実力をインターネットチェスクラブ(ICC:Internet Chess Club)のレーティングとして記録された最高成績で見てみると、3,286(ブレット早指し)、3,388(ブリッツ早指し)、2,792(標準)という腕前だ。スウェーデンチェスコンピュータ協会(SSDF:Swedish Chess Computer Association)のレーティングでもCraftyは36位につけており、実力評価用のイロ(Elo)というレーティングでは2,616と評価されている。また2004年の世界コンピュータチェスチャンピオンシップでCraftyは4位で終わっているが、3位のFritz 8とポイント的には同点であった。

 Craftyが対応しているのはXBoardプロトコルであるため、その対戦にはXBoard対応のグラフィカルインタフェースが必要になる。

 CraftyのFTPサイトからはバイナリファイルおよびソースコードをダウンロードすることができる。ここでのメインディレクトリに収められているファイルおよびフォルダの構成についてはFTPディレクトリのread.meファイルを参照して頂きたい。FTPサイトには、チェスエンジンの強化に必要なオープニングブック(opening book:序盤の定石)およびエンドゲーム(endgame:終盤)データベースも用意されている。

 インストールの終了したCraftyと対戦するにあたっては、下記のコマンドにおける「-fcp」パラメータを用いて、XBoardにCraftyの格納位置を指定する必要がある。

xboard -fcp "./crafty" -fd crafty_directory

 Craftyをインストールしたディレクトリはcrafty_directoryに指定しておく。

 CraftyはANSI Cで記述されており、Unix、Linux、DOS、Windows、OS/2、Mac OSで動作する。その指し手としての強さは、実行するマシンの処理速度や、ユーザの用意するオープニングブックおよびエンドゲームデータベースの大きさによって変わってくる。とは言うものの、最小限のリソースしか与えていないCraftyでも、対戦相手とするには手強すぎるくらいだ。自分の実力ではまともな勝負にならないようであれば、コマンドラインからの起動時に下記のオプションを組み合わせて、プレーヤとしての実力を引き下げることができる。

book off――オープニングブックの使用を停止させる

ponder off――人間が考えている間はCrafty側の解析を停止させる

st 1――Craftyによる解析の最大時間を1秒に制限する

sd n――Craftyの行う先読みをn手先までに制限する

 逆にCraftyが弱すぎるというようであれば、下記のオプションを試してみればいいだろう。

hash nK――ハッシュテーブルを大きくする

hashp n――ポーン用ハッシュテーブルを可能な限り大きくする

GNU Chess

 GNU Chessは、Free Software FoundationによるGNUプロジェクトの一環として作成されたフリーのチェスゲームプログラムである。これは古参チェスエンジンの1つであり、SlackwareやRed HatなどのLinuxディストリビューションにもバンドルされている。最新バージョンのGNU Chess 5では、これまで放置され続けてきたスパゲティプログラム状態のコードを整理すると同時に、旧式化したコンピュータチェス用のデータ構造を近代的なフォーマットに置き換える目的で、全面的な再構築が行われている。このエンジンで使われるオープニングブックは、チェスの達人たちの棋譜を研究して作成されたものだそうだ。またユーザが独自のオープニングブックを作成することも可能で、それには取り込みたいゲームの棋譜をPortable Game Notation(PGN)ファイルに登録しておき、コマンド行からbook add bookfile.pgnと指定してgnuchessに読み込ませればいい。オープニングブックを作成する際には、正式にリリースされているPGNファイルをダウンロードして雛型とすることもできる。

 インターネットチェスクラブには、GNU ChessをSGI Onyx R4400で実行したハンドル名MaxIIにより達成された記録として、ブリッツ早指しで2,500以上、標準で2,300以上というレーティングが残されている。

 また、Webブラウザを介して対戦できるWebベース版GNU Chessもあるので、興味がある人は試してみればいいだろう。

Phalanx

 Phalanxというチェスエンジンは、当時まだ学生であったチェコのDusan Dobes氏が開発したものだが、残念ながら同氏は2000年ごろを境にその開発から手を引いてしまっている。ただし残されたコード自体はGPLのライセンス下で使用することができ、現在も何人かの有志がその開発を継続中だ。プレーヤとしての実力はCraftyやGNU Chessに比べると見劣りするが、平均的な腕前の人間にとっては充分に手強い対戦相手となってくれるだろう。インタフェースプロトコルはCrafty同様XBoardに対応しているので、xboard -fcp phalanxとコマンドを入力すればXBoardを介した対戦ができる。

 Phalanxの対戦レベルは下記のオプションで調整する。

-e レベル ――対戦レベルを0から100の数値で指定する(0が最強)

-b [+/-]――オープニングブックの使用/不使用を切り換える

-f [検討時間]――Phalanx側の検討時間を制限する(単位は秒)

 その他のコマンドラインオプションについては、ソースに同梱されているREADMEファイルを参照して頂きたい。

Sjeng

 SjengはGian-Carlo Pascutto氏と他数名の協力者により作成されたチェスエンジンである。Sjengは解析プログラム兼用のプロフェッショナルなチェスエンジンであり、必要なインタフェースやオープニングブックが取りそろえられているのはもとより、チェスサーバアクセス、パーソナリティ、マルチプロセッサ、Universal Chess Interface(UCI)などもサポートしているのが特徴だ。ゲームの腕前については、高速マシンで実行した場合のイロレーティングは2,750を越えるとされている。また通常ルール以外にも、バグハウス(bughouse)クレイジーハウス(crazyhouse)スーサイド(suicide)などの変則チェスでの対戦も行える。インタフェースプロトコルについてはCraftyやSjeng同様に、XBoardが使用できる。なおSSDFの番付を見ると、Sjengのレーティングは2,674と評価されている。

Faile

 Faileは、実行するマシンの処理能力によってエキスパートクラスからマスタレベルの実力を発揮可能なチェスプログラムである。イロレーティングでの評価は2,050から2,250という値を示している。Faileのデフォルトブックは過去の名人戦に関する膨大な量の棋譜がそのベースにされており、Encyclopedia of Chess Openingsの全収録データを網羅できるよう設計されているとのことだ。Faileのソースコードはそれほど大きくはないが機能的には充実しており、またコードに対する説明もよく整備されているので、これから自分でチェスエンジンを開発しようとする初学者が参考にしてもいいだろう。

 Faileの設定に関しては、ハッシュテーブル用のメモリ割り当てを増やすことで、より高い実力を発揮させることができる。

faile -hash [サイズ] ――サイズをMB単位で指定する

 Faileにはデフォルトのオープニングブックが付属しているが、ユーザがFaile上で再現させたいオープニングの棋譜をPGNファイルとして独自に作成することもできる。自分で作成したPGNファイルをFaileに読み込ませるには、下記のように指定すればいい。

faile -mbook [PGNファイル]

Fruit

 FruitはFabien Letouzey氏が作成したものだが、そのチェスプレーヤとしての腕前は尋常ではないレベルに到達している。例えばFruit 2.2は、2005年にレイキャビクで開催された世界コンピュータチェスチャンピオンシップにて2位の座を獲得しているくらいだ。

 Fruitの場合、突出した長所が無い代わりに目立った弱点も無いというのが、その特色になっている。あえて言えば、ゲーム序盤は手堅く進め、中盤は優れた戦術を駆使し、終盤を巧みに導くといった具合だ。また対戦相手の駒の進め方からその弱点を非常に的確に分析し、その結果を最大限活用するという手腕にも秀でている。その他の実績としては、ShredderやJuniorなどの商用チェスエンジンを打ち負かしたこともある。

 Fruitはバージョン2.1まではオープンソースの形態を取っており、バージョン2.1のソースコードは現在でも入手できる。ところがFruitがチェスエンジン最高峰の座に登りつめるに至り、そのソースコードをクローンして正式なトーナメントに参加する輩の出現を懸念した作者によって、今後はクローズソース化することが決断されたのである。なおFruitバージョン2.1をベースにした派生エンジンとしては、Toga IIおよびGambitFruitが存在している。

まとめ

 Linuxユーザが選択可能なチェスエンジンは多種多様であり、エンジンごとにゲームの腕前もプレイのスタイルも異なっている。現存するチェスエンジンの一覧は、Tim Mann’s Chess PagesというWebページで確認可能だ。これらのエンジンは、自分のチェスの腕前を確かめたい場合の手強い対戦相手として使うこともできるし、プレーヤとしての実力を高めるための学習ツールとして役立てることもできるはずである。

コラム:チェスエンジンのレーティング

 チェスエンジンは一般のチェス大会に人間と同条件で参加している訳ではないため、チェスエンジンに付けられたレーティングを人間のレーティングとそのまま比較することはできない。FIDEUSCFその他のチェス協会による公式なレーティングからチェスエンジンが除かれているのは、そうした理由によっている。実際こうしたチェスエンジンに関するレーティングは、その大半がコンピュータ間の対戦結果を基にしたものなので、チェスエンジンと人間とのレーティング比較は本質的に意味をなさない。またコンピュータ同士の対戦に求められる能力と、人間相手に対戦する場合の能力とは異なっている。チェスエンジンは戦術的には強いが戦略的には弱く、長考型のゲームよりも早指し型の対戦の方に適している傾向にある。

NewsForge.com 原文