直近のエントリーで触れた、Tord Romstad 氏の shogi-l への投稿について、本人から転載翻訳許可が出たので、拙劣ながら訳してみる。
I am new to this list, and apologise in advance if the topics below have already been discussed to death before. Before posting, I spent some time browsing the archives and couldn't find any such discussions, but I may have missed something.
私は、このリスト(shogi-lメーリングリスト 訳者註)に入ったばかりです。そしてあらかじめ、この話題が既に議論しつくされているのであれば、あらかじめ申し訳なく思います。投稿する前に、アーカイブを幾度か探しましたが、もしかすると見逃したものがあるかもしれません。
I know very little about Shogi, but I have some experience with computer chess. I am the author of Glaurung, one of the stronger opensource chess engines (it is stronger than Crafty, but weaker than Fruit). In the near future, I will get an enthusiastic Shogi playeras my colleague (hi, Oluf!), I have therefore decided to stop doing chess programming for a while, and spend some time working on computer Shogi instead.
私は、ほとんど将棋を知りません。ですが、コンピューターチェスについてはいささかの経験があります。私は Glaurung の開発者です(Glaurungはオープンソースのチェスエンジンで、Crafty より強く、Fruit より弱いです。)近い将来、私は熱心な将棋プレーヤーを同僚として迎えます。(ハイ、オルフ)。そこで、私はしばらくチェスのプログラミングを中止して、コンピューター将棋のために時間を使おうと決めました。
There is no doubt that computer Shogi is currently quite far behind computer chess, in the sense that the strongest chess programs are almost certainly stronger than the best humans, while the top shogi programs have no chance against professional players. To a big extent, this is without a doubt because Shogi is a more difficult game to program. But I don't think this is the only reason. This brings me to the topic of this e-mail.
最強のチェスプグラムは最強の人間よりほとんど確実に強くなっているのに対し、トップの将棋プログラムは、プロ棋士に対してノーチャンスである、という意味において、コンピューター将棋は、現在、コンピューターチェスよりもかなり遅れていることは疑問の余地がありません。このことは将棋のほうがプログラミングがより難しいゲームであることがその理由の大部分を占めるのは疑いようがありません。ただし、私はそれだけが理由だとは思いません。これこそが私がこの話題を提起する理由です。
One of the most striking things about computer Shogi, from the perspective of a chess programmer, is the lack of "technical infrastructure". In chess, there are two wide-spread chess engine protocols (the XBoard and UCI protocols) for communication between a chess engine and the GUI, and almost all of the about 400 publicly available chess engines support one or both of these protocols. GUIs with support for these protocols exist for all major operating systems.
1人のチェスプログラマーの目から見て、コンピューター将棋に関して最も驚いたことのひとつは、「技術インフラ」の不足です。チェスでは、チェスエンジンとグラフィックユーザーインターフェースの間を取り持つ広く知られたプロトコルが2つ存在します(XBoard と UCI プロトコル)。そしておよそ400本の公開されて使えるようなっているチェスエンジンが、そのプロトコルの片方ないし両方をサポートしています。これらのプロトコルをサポートする GUI は、すべての主要なOS用に存在しています。
The existence and ubiqutouness of these protocols gives several benefits: It makes it much easier for the programmer to make a chess program, because he can write a simple text-mode program instead of writing a full-featured GUI app. Because the engines are running in console mode, they are usually very easy to port to different OSes. From the user perspective, it is nice to be able to run all chess engines from a single GUI, instead of having to start a new GUI every time he wants to switch to another program.
これらのプロトコルが存在し、いつでもどこでも使える様になっていることは、いくつかの利点をもたらしていいます。プログラマーがチェスプログラムを作るのは非常に簡単です。というのは、彼は、単純なテキストモードのプログラムを書けばよく、ごてごてした GUI アプリケーションを書く必要はないからです。また、チェスエンジンはコンソールモードで走るので、異なるOSにポートするのが非常にたやすいのが普通です。ユーザー側の目で見ても、すべてのチェスエンジンがひとつの GUI で動き、別のエンジンを走らせようとするたびに新しい GUIを立ち上げる必要がないのは良いことです。
The most important advantage of all, however, is that it is very easy to run automated matches and tournaments between chess engines. There is a huge crowd of enthusiasts who run tournaments and produce rating lists with all the programs. Have a look at the CCRL and CEGT ratinglists, for instance (and note in particular the immense number ofgames played with every single engine):
http://computerchess.org.uk/ccrl/404/
http://www.husvankempen.de/nunn/しかしながら最も重要な利点は、チェスエンジン同士で自動的に試合やトーナメントを組むことが非常に簡単になることです。非常に多くの熱心な方々が、トーナメントを行い、あらゆるプログラムでレーティングリストを作成してます。ちょっと CCRL とか CEGT とかのレーティングリストをご覧になってください。(そして、とりわけ、莫大な量の試合があらゆるエンジン同士で行われていることに注目してください)
(リンク先は上記リンクと同じなので省略 - 訳者)
The big community is one of the main attractions of computer chess, and probably also the most important reason why computer chess has progressed so much in recent years. Needless to say, I would like to see something similar in computer Shogi.
大きなコミュニティがあることが、コンピューターチェスの主要な魅力のひとつであり、また、おそらく、コンピューターチェスが近年長足の進歩を遂げたことはそれなしには考えられません。いうまでもないことですが、私はコンピュータ将棋の世界でそれと類似のことが起こるのを見たいのです。
Another problem with computer Shogi seems to be that there is no really strong open source program. Of course there is GNU Shogi, but I've been told that it is rather old and no longer close to the top programs (please correct me if I am wrong). I think strong open source programs are an important resource for beginners.
コンピューター将棋のもうひとつの問題は、強いオープンソースのプログラムが見当たらないことです。もちろん、GNU Shogi というのがあります。が、GNU Shogiは、やや古く、トップのプログラムにはもはや全然及ばないと聞いています(もし間違いであれば教えてください)強いオープンソースのプログラムは、初心者にとっての重要なリソースとなると私は考えています。
My ambition is to work on these two problems. I want to design an engine communication protocol for shogi engines, and to write a strong open source shogi program (the latter goal will take some time to achieve, of course). But evidently, I cannot do this without support from the community. An engine communication protocol is worthless ifit only works with my own engine and GUI. It is necessary that asmany shogi programmers as possible add support for the protocol to their engines, and that someone is willing to do the work of writing GUIs for Windows and Linux (I'll write a Mac OS X GUI myself). Before I start programming I therefore would like to hear some opinions from the rest of you.
私の望むところは以下の2つの問題に取り組むことです。私は将棋エンジ
ンのためのエンジンコミュニケーションプロトコルを設計し、強いオープンソ
ースの将棋プログラムを書いてみたい(後者のゴールはもちろん時間がかかるでしょう)。明らかに、これはコミュニティのサポート無しには、実現できないことです。エンジンコミュニケーションプロトコルが、自分のエンジンとGUI でしか動かないとしたら、全く価値はありません。できるだけ多くの将棋プログラマーがそのプロトコルのサポートを彼らのエンジンに追加することが必要です。また、誰かが、Windows と Linux で動く GUI を書いてくれることが必要です(私自身は、Mac OS で動く GUI を書きます)。プログラミングを始める前に、皆さんから意見を伺いたいです。My suggestion is that we use the UCI ("Universal Chess Interface")
protocol as the basis for a shogi engine protocol (USI?):私の提案は、将棋のエンジンプロトコル(USI?)のための基礎として、UCI を
利用することです。(リンク先は上記と同じなので省略 - 訳者)
As far as I can see, it should be possible to adapt the UCI protocol to shogi with just a handful of small changes, but beging a computer shogi beginner, I might be missing something obvious. I would appreciate if the programmers among you could have a look at the UCI specification and let me know what we should change in order to make it work for shogi.
私の見る限りでは、UCI プロトコルを将棋に適用するのは、小さな変更をちょっと積み重ねればできるはずです。しかし、コンピューター将棋の初心者なので、明らかな点を見逃しているかもしれません。皆さんのうちのプログラマーの方が UCIの仕様を見て、将棋で使える様にするための変更点を教えてくれるとありがたく思います。
筆者はコンピュータ将棋には暗いので、都万のソフトでダウンロードが可能なCSA将棋などが、氏の問題提起とどういう関係になっているのか判断がつかない。そのあたりに詳しい方のご教示があればありがたい。というか、本件に関して英語で、shogi-l の彼の提起した議論を受止めて深化していただける方はいないだろうか。門外漢の筆者の直観なのでおおはずれであるならお笑いいただきたいが、これはコンピュータ将棋界にとって大きなチャンスのような気がするのである。
Tord氏の意見と全く同じことを私も感じていました。チェス用のソフトはGUIと
エンジンが分離されていて、使いやすいGUIソフトがあるので、作者はエンジン
部分をコンソールアプリケーションとして作成するだけで済みます。
GUIソフトの操作でエンジン同士の対局も簡単にできます。
それに対して将棋はそのような仕組みがないので、全ての作者が面倒なGUIを
作成しなければなりません。ソフト同時の対局も面倒です。これが将棋ソフトの
発展において大きな障害になっていると思います。
そのため、GUIと将棋エンジンの通信プロトコルを自分で設計して、将棋用のGUI
ソフトを作ろうかと思ったくらいです。(途中まで作成して、面倒になって中断
していますが。)
その時、参考にしようと思って、UCIも少し調べました。印象としては、厳密過ぎて
ちょっと冗長に感じています。UCIを元に将棋用プロトコルを作成するのであれば、
もう少し簡略化した方がいいように思います。
あと、Tord氏が将棋用のGUIソフトを作成するのであれば、以下のページにある
画像を使うことができます。
http://mucho.girly.jp/bona/
投稿情報: 暇人 | 2007年1 月17日 (水) 23:46
>暇人さん コメントありがとうございます。
なかなか利点が多そうな提案なのですね。
Bonanza の保木さんは、商用版でどうしたのかは知りませんが、当初フリーウェアのときは、思考エンジンはご本人が開発して、GUI はCSA将棋とその拡張版を使ったのでしたよね。CSA将棋は、暇人さんのおっしゃるようなGUIとは違うものなのでしょうか。
駒の画像の URL 情報ありがとうございます。Tord氏に伝えたいと思います。
投稿情報: takodori | 2007年1 月18日 (木) 13:10
CSA将棋もGUIソフトですが、盤面表示など、本当に最低限の機能しかありません。また、思考部分をdllとして作成しなければいけないので、その仕組みもちょっと特殊です。(Windows以外で簡単に応用できない。)コンソールアプリケーションであれば、それをLinux用やMacOSX用にコンパイルし直すのは簡単です。
それに、エンジン同士で対戦させることもできません。GUIソフトで複数のエンジンを登録し、対局時には好きなエンジンを選んで自動対局させる、ということができると便利なわけです。そうすることによって他のソフトとの強さの比較が簡単にできます。
さらに、思考時間などの対局条件の設定もできません。そのためBonanzaでは、思考時間などの条件については独自の設定パネルを表示して、そこで設定するようになっています。このような対局条件などもプロトコルで規定してやれば、GUI側から操作することによって設定できるので、エンジン側で独自のGUIを用意する必要はありません。
ほとんどの将棋ソフト開発者は、いかに強くするかという思考部分に興味があるだけで、GUIの部分については興味がありません。そういった人が参入しやすくなるよう、GUIとエンジンを完全に分離することは重要です。
ところで、takodoriさんは、チェスソフトを使用されたことはあるでしょうか?もしないのであれば、実際に使われてみることをお勧めします。まず、下のサイトを見て下さい。
http://www.playwitharena.com/
ここに、Arenaという、チェスで標準的なGUIソフトがあるのでダウンロードします。
さらに、エンジンのリンクを見ると、数え切れないほどたくさんのチェスエンジンがあります。どれを使っても構いませんが、フリーの強豪ソフトとして有名なSpikeやGlaurung(これはTord氏が作者です)などをダウンロードしてみて下さい。
エンジンの名前の右にWBとかUCIとか書いてありますが、WBはWinboardプロトコル対応、UCIはUCIプロトコル対応という意味です。
ArenaのメニューのEngines->Manageで、それらのエンジンを登録することができます。また、Engines->Tournamentで、それらのソフトを対局させることができます。(詳しくは説明しませんが、実際にやってみればわかると思います。)
こういうのを実際に見てみれば、コンピュータチェスにおけるGUIとエンジンの分離というのがいかに便利なもので、それによっていかに多くの開発者を集めているかということを実感されると思います。コンピュータ将棋でも、一日も早く同じような状況になってほしいと思っています。
投稿情報: 暇人 | 2007年1 月18日 (木) 21:41
>暇人さん
詳しい説明ありがとうございます。チェスソフトを使ったことはなかったのでArenaとGlaurungをダウンロードして自分とGlaurungで対戦をするところまでは試みてみました。
なるほど、CSA将棋と、Arena は同じGUIでありながら似て非なるものなのですね。CSA将棋では、思考エンジン同士の自動対局はできないが、Arena だとできるわけですか。素人考えですが、自動対局ができるほうが、少ない労力で対戦データをたくさん得られると思うので、開発者にとっては、思考エンジンの改善のための情報が得やすいというメリットが出てくることになるのでしょうか。
ただ、仮に、Arena のようなGUIが将棋でもできたとした場合でも、やはり GUI 上のメニューなどの言語は、日本語と英語の選択ができるようになっていないと、日本人の開発者やユーザーのほとんどはついていかないだろうなという気はしています。
投稿情報: takodori | 2007年1 月18日 (木) 23:12
”将棋所”というGUIソフトがあります。ARENAに影響されたそうです。
ttp://www.geocities.jp/shogidokoro/
投稿情報: 名無し | 2009年7 月29日 (水) 20:45