ホーム>なぜGUIと思考部分を分離するのか?


将棋やチェスなど、思考ゲームのソフトを作る人にとって、重要なのは「いかに強くするか」という思考アルゴリズムの部分であって、盤面表示などのGUIの部分は本質的ではありません。
しかし、ゲームソフトにとって、GUIというのは欠かせない部分です。しかも、その作成は面倒です。この、「本質的ではないのに面倒な」GUIの作成というのが、思考ゲームのソフトを作成する上で大きな障害になっていたのは間違いありません。
そこで、GUIと思考部分を分離すればいいのではないかという考えが生まれてきました。チェスにおいては、既にそのような仕組みが一般的になっています。
思考部分はGUIのないコンソールアプリケーションとして作成し、GUIソフトがそれらの思考エンジンのプロセスを呼び出して、テキストでコマンドをやり取りすることによって操作するという仕組みになっています。このような仕組みにより、チェスソフトの作成者は面倒なGUIを作ることなく、肝心の思考部分の作成だけに集中することができます。
チェスにおいては当初、Xboard/WinboardというGUIソフトと通信プロトコルが使われてきました。その後、UCI(Universal Chess Interface)というプロトコルが制定され、それに対応したGUIソフトが登場しています。現在、Windows用のチェスGUIソフトとして有名なのはArenaというソフトで、WinboardとUCIの両方のプロトコルに対応しています。Arenaは単に思考エンジンを動かすことができるだけではなく、GUIソフトとして豊富な機能を持ち、チェスにおける標準的なGUIソフトとして使われています。

Arenaの画面(クリックで拡大表示)

ArenaSmall.png

また、GUI側から思考エンジンを呼び出すことにより、任意のエンジン同士の対戦も簡単にでき、エンジン改良のデータを集めるために、自動で連続対局させることもできます。
このような仕組みが普及したことにより、チェスソフトを作るための負担が減り、大勢の人がチェスソフトの開発に参入するようになりました。Arenaのページでエンジンのリンクを見ると、今ではもう数百種類のチェスエンジンが存在しているようです。

しかし残念ながら、将棋ではこのような仕組みは存在しませんでした。そこで、将棋でもチェスのように、開発者が思考部分の作成だけに専念できるような環境を作り出すことを目的に将棋所を作成しました。


ホーム>なぜGUIと思考部分を分離するのか?