世界コンピュータ将棋選手権(以下、選手権)では、2006年5月開催予定の第16回より、段階的にEthernetによるローカルエリアネットワーク(LAN)を経由した対局に移行されるはこびとなりました。 第16回の段階では、従来通りRS-232Cによる通信を必須とし、LAN対局は任意にて導入していただくことになりますが、近い将来にRS-232Cを廃止し、LAN対局を必須とする方式に徐々に移行する予定となっております。 LAN対局では、従来のように対局するコンピュータ同士をRS-232Cケーブルで直結して通信を行う方法とは異なり、選手権に参加するすべてのコンピュータは、Ethernetケーブルとスイッチングハブを用いて選手権の主催者側が用意する審判サーバ機器に接続していただきます。 これによって対局を行うコンピュータがクライアントとなるクライアント/サーバシステムを対局前に構築し、サーバ機器を経由した通信によってすべての対局を行います。 以下、参加するコンピュータをクライアント、審判サーバ機器をサーバと呼称いたします。
このたびのLAN対局への移行は、従来からのRS-232C対局における下記の課題の解決を直接の目的としています。
RS-232Cによって通信可能な距離はきわめて短く、現状では手作業による指し手入力による対局と同様、対戦するコンピュータ同士を互いに隣接させて配置しなければなりません。 このため、対局ごとに機器を移動しなければなりません。 これは特に大型機器を持ち込む参加者にとって大きな作業負担になっています。
この負担を解消するためLANを導入し、本来のネットワークが持つ、位置の制約からの自由を達成させます。 これにより、ベストの機器の導入を躊躇させる要素をも排除します。
近年、RS-232Cは、一部用途を除いて他の通信規格による置き換えが進んでおり、年を追うごとにRS-232Cに対応した機器が減少しています。 すでにRS-232Cコネクタを有するコンピュータの入手はかなり困難になっており、このため多くの参加者は、USBケーブルとRS-232Cの変換器を導入するなど対策に追われています。
これを、入手および導入が容易なネットワーク規格に置き換え、選手権の参加者が思考アルゴリズムの強化に専念できるようにします。 プロトコルはインターネットに用いられているTCP/IPがベースになっており、これをEthernetによって実現します。 現代はインターネットが広く普及しているうえ、有線の室内ネットワークのほとんどがEthernetを用いています。 TCP/IPとEthernetは、大多数のオペレーティングシステム(OS)にてサポートされており、大半の参加者にとって容易に利用可能です。 通信対局にこれらを採用することによって、機材の入手はきわめて容易になるうえ、通信部分のプログラミングも普及型の技術を用いて容易に行えるようになります。
通信による対局では、時おり何らかのトラブルによって対局継続が不可能になることがあります。 このとき現状のRS-232Cによる対局では、トラブルの原因や、相対するコンピュータのどちらに非があるかを客観的に知る方法がありません。 このため、妥当な対策をとることが困難なだけでなく、対局の公正な判定や勝敗の決定が行える保証もありません。
LAN対局では、クライアントのすべての通信をサーバとの間で行い、サーバの仲介によって対局を実現することにより、サーバがクライアントからの通信をすべて把握し、トラブルの原因を監視します。
現状では、コンピュータの消費時間をコンピュータ自身が計測していますが、これが正確に行われていることを保証するのはきわめて困難です。 これは不正の可能性ばかりでなく、機器の相違による計測差や、プログラミングのミスによっても不公正な状況をもたらす恐れがあります。 近年では、相手の手番のときに考える予測読みの処理も誤計測の原因となりえます。
LAN対局では、計測をサーバが集中的に行うことにより、公正さを保証します。
機器の持ち運び負担が軽減されるほか、通信の妥当性や計測の妥当性をサーバが保証することによって、参加者のデバッグの負担を軽減します。 また、棋譜の確認をサーバが行えるため、棋譜の確認および提出は、クライアントにとっては将来は必須ではなくなります。 加えて、プロトコルの検証作業の多くを、CSAが用意するテスト用サーバによって行うことが可能です。
以上のメリットに加え、対局の観戦が容易になるという副次的な効果があります。 今回の選手権から、LANで行われる対局は、サーバの仲介によって会場のプロジェクタに映し出される予定です。 これにより、会場にて多くの対局を同時に観戦することができるようになります。 さらに今回の選手権では、LAN対局がインターネットで生中継され、世界中のインターネットユーザがリアルタイムに観戦できるようになる予定です。 コンピュータ将棋は、その魅力を全世界に発信することで、ますます注目される存在になることができるでしょう。
しかしながら、導入期間中は新たなプロトコルへの対応作業が必要になることをご了承願います。 第16回選手権では、LAN対局への対応は任意といたしますが、できる限り多くの参加者に対応していただけますようお願い申し上げます。 本文書は、選手権でのLAN対局のルールの説明に加え、参加者の皆さんによるLAN対応をできる限り容易にすることを目的として作成されています。 LAN対局に対応したコンピュータ同士の対局では、上記のとおり機器の移動は生じません。 LAN対局に対応したコンピュータとRS-232Cのみのコンピュータとの対局では、RS-232Cにて対局を行っていただくことになりますが、原則として前者の移動は不要といたします。
LAN対局は、CSAサーバプロトコル ver.1.1.2に従って行われます。 本節では、このプロトコルにおいて、選手権に関して特記すべき部分について述べます。
前節にて述べたとおり、サーバはプロトコルにしたがい、通信の妥当性の検証と消費時間の計測を担当します。 妥当でない通信を検知し、排除することによって、LANを正常に保つ役割も負います。 従来と異なり、サーバが計測した消費時間が常に正規の消費時間となります。 指し手ごとの消費時間は、プロトコルにしたがって1手ごとの指し手に付加され、対局する双方のクライアントに送信されます。
LAN対局において、クライアントは、プロトコルに規定された動作のうち、最低限、下記が可能なように実装されていなければなりません。
ログインに必要なログイン名とパスワードは、選手権参加手続きの過程において、以下の形式にて申請されたものを用います。
ログイン後、クライアントは、受け取った対局通知メッセージの終端を検出した後、対局を行うため 'AGREE' をサーバに回答する必要があります。 対局開始直後、手番を持つクライアント、すなわち 'Your_Turn:' と 'To_Move:' の内容が同一の対局通知メッセージを受信しているクライアントは最初の手を指さなければならず、もう一方のクライアントは指し手を受信するまで指し手を送信してはいけません。 対局が開始されてから終了するまで、クライアントは、相手の指し手を解釈し、それに応じて局面を正しい状態で記憶し、それに応じた指し手をサーバに送信し続ける必要があります。 また、TCP/IPのコネクション切断によってログアウトと同様の手続きを行うことが可能ですが、異常終了と区別できるよう、極力ログアウトコマンドの送信によってログアウトを行うようにしてください。
前節にて述べたとおり、正規の消費時間はすべてサーバが計測したものを採用します。 クライアントは、常にこの時間を基づいて残り時間を計測し、かつ1手ごとの消費時間が多くなりすぎないよう時間を計測しつつ指し手を送信し、時間切れを回避しなければなりません。
なお、何らかのトラブルの発生によってLAN対局が継続不可能になった場合は、審判の判定にしたがって、途中の局面からRS-232Cによる対局に移行していただきます。このとき、やむなく機器の移動を行っていただく場合があります。ご了承ください。
プロトコルでは、対局通知メッセージによって対局条件を提示するための書式が定義されています。 ここで記述される事項は、一部を除いて、あらかじめ選手権のルールによって固定されています。 メッセージの内容のうちの固定された情報に関しては、クライアントがあらかじめその内容に適応していれば、それらを解釈する必要はありません。 具体的には、選手権ではサーバを経由する対局プロトコルを用い、持ち時間は1,500秒すなわち25分を全体の持ち時間とし、1手あたり最低1秒を消費します。 千日手は引き分けとして指し直しを行わず、持将棋における勝利宣言ルールが有効となります
また、対局ごとに変化する情報も、指し手の決定に直接影響しない情報か、または事前に知ることのできる情報のいずれかに限られますので、事前の設定が適切に行われていれば、メッセージの 対局通知を示す、'BEGIN Game_Summary' の行で開始され 'END Game_Summary' の行で終了するメッセージのうち、対局ごとに変化するのは、以下の項目のみです。
本節では、対局プロトコルを除く部分における各種設定、および必要な準備について述べます。 通信に用いられるTCP/IPにおける、IP(Internet Protocol)に関してのサーバおよびクライアントの設定内容、および参加者の皆さんに準備していただくEthernetケーブルは、下記のとおりとなります。
LAN対局においては、DNS(Domain Name Service)による名前の設定は行われません。 したがって、クライアントからサーバへの接続は、接続時に直接IPアドレスを用いてサーバを指定してください。
IPはバージョン4が用いられます。 したがって、すべてのIPアドレスは32ビット長で表現されます。 IPアドレスおよびポート番号に関する設定は、以下のとおりです。
選手権に用いられるLANは、カテゴリ3以上の伝送能力を持つEthernetケーブルおよびスイッチングハブを介してサーバとクライアントを接続することによって構築されます。 各参加者は、10BASE-Tや100BASE-TX、もしくはそれ以上の性能を有する、RJ-45コネクタを持つ普及型の3メートル〜5メートルのEthernetストレートケーブルを1本持参してください。 それを会場にて指定されたスイッチングハブに接続することによって、クライアントをLANに接続していただきます。 各参加者のコンピュータを接続したスイッチングハブは、さらに上流のスイッチングハブに接続され集約されます。 サーバは上流のスイッチングハブに接続され、各クライアントとの通信を行います。
LAN対局における各種のトラブルを極力減らすため、LANに接続されるクライアントは、下記の注意事項が遵守されるよう実装および設定され、また正しく運用されなければなりません。
クライアントは、最低限の接続確認、サーバへの接続、最低限の指し手の送信、およびそれらのための経路情報の獲得に関する最低限の通信を除いて、不必要な通信および対局に無関係な通信を行ってはいけません。 具体的には、ICMPパケットによるエコー要求および応答、TCPパケットによる対局のための通信、ARP要求および応答を必要に応じて行うほかは、情報を送信してはいけません。 他のクライアントとの通信も行ってはいけません。 これは、LAN上の不必要なパケットを極力排除することによって、LANの混雑やルーティング情報の撹乱を防ぎ、LANの安定運用を確実なものにするためです。 特に、クライアントがコンピュータウィルスやワームに感染していないこと、HTTPサーバやDHCPサーバ、将棋以外のネットワークアプリケーションなどが動作していないことは、事前に充分に確認してください。
上記は、異常な動作をする他のクライアントの影響を受けることなく正常に動作しなければならないことを含みます。 すなわち、他のクライアントからウィルスを感染させられたり、対局と無関係な通信に応答したりしないよう、充分配慮されていなければなりません。
また、クライアントと、クライアントが接続されるスイッチングハブとの間の接続は確実に行い、通信品質が保たれるようにしてください。
各クライアントが接続されるスイッチングハブとサーバとの間の通信品質、およびサーバの通信品質は、主催者側の責任において、下記のように確保されます。
LAN対局のクライアント実装が正常に動作することを確認するため、CSAでは、インターネットを経由してアクセス可能な対局サーバを準備しています。 テスト用サーバでは、試合用とテスト用の両方のログイン名を使用してログインすることができます。 なお、過去にGPW杯、コンピュータ将棋オープン戦、王者戦のいずれかに参加された方は、その際に使われたログイン名を使用することができます。 ログイン名をすでに申請済の参加者は、下記のインターネット対局サーバに接続することによって、テストを行うことができます。
テスト用サーバにログインした直後、同様にログイン直後の他のクライアントが存在していない場合は、テスト用サーバは何も送信せず次のクライアントを待ちます。 同様のクライアントが存在する場合、もしくは他のクライアントがログインした場合は、その両者が対局を行うための対局通知メッセージがテスト用サーバからただちに送信されます。 LAN対局と同様、両者が対局通知メッセージに対して 'AGREE' をテスト用サーバに回答することによって対局が開始され、テストを行えます。 試合用とテスト用のログイン名で2つのクライアントをログインさせることにより、単独の参加チームだけでテストを行うことができます。
テスト用サーバは、対局が終了した後、もしくは一度送信された対局通知メッセージがいずれかのクライアントによって拒絶され不成立となった後のクライアントには対局通知メッセージを送信しません。 この状態からテスト対局をを行う場合は、いったんログアウトして再度ログインするか、もしくは下記のメッセージをテスト用サーバに送信することによって、再度対局通知メッセージを受信する必要があります。
CHALLENGEこれはテスト用サーバ接続時にのみ有効なメッセージであり、プロトコルには規定されていません。 また、LAN対局では意味を持ちません。 テスト用サーバは、上記のメッセージを送信したクライアントを、ログイン直後のクライアントと同様、対局通知メッセージを送信する対象のクライアントとみなします。 同様のクライアントが他に存在しない場合、テスト用サーバは、
CHALLENGE ACCEPTEDというメッセージをクライアントに送信し、次のクライアントを待つ状態に入ったことを示します。 同様のクライアントが存在する場合、もしくは他のクライアントが現れた場合は、ログイン直後と同様、ただちに対局通知メッセージが両者に送信されます。 以上の要領により、テストを継続することができます。
インターネットでのテストが成功しましたら、皆さんのお手元の環境にてサーバ接続テストを実施されることをお薦めいたします。 これは、選手権でのLAN対局のようなネットワーク遅延のきわめて少ない環境でもクライアントが正常に動作するかどうかを検証するのに有効です。
ネットワーク遅延がわずかな場合、クライアントが指し手を送信し、サーバがその指し手に消費時間を付加してクライアントに送信した後、クライアントがその指し手の受信処理を行う前にサーバがその次の相手の指し手を送信することがあります。 この場合、サーバが送信した2つの指し手をクライアントが正常に処理しないと、指し手を正しく読み取れない恐れがあります。 一例として、連結した2つの指し手を1つの指し手とみなしてしまい、相手の次の手を見逃してしまう可能性があります。 これを正しく処理するためには、受信した指し手文字列中のすべてのLF(ラインフィード文字)を検出し、LFごとに区切られた文字列をひとつひとつの指し手とみなすようにしなければなりません。 この処理にバグが含まれていないかどうかを確かめるには、インターネットを介さないテストが有効です。 インターネット環境では、相手の指し手が届くまでの間に遅延が発生するため、それまでに自分の指し手の受信処理が終了する可能性が高く、指し手の区切り処理を検証する機会がきわめて少なくなります。
お手元の環境でのテストには、Shogi Framework Implements CSA Protocolに置かれている対局クライアントJavaアプレットのご利用を推奨いたします。 将棋盤のウィンドウが開いた後、メニューから[サーバ]→[簡易サーバ起動]を選択すると、Javaアプレットを実行したコンピュータで簡易なサーバが起動し、ポート番号4081でクライアントのログインを待ち受けます。 簡易サーバ起動後、2つのクライアントを簡易サーバにログインさせると、ただちに対局条件の送信が行われますので、以下インターネット上のサーバでのテストと同様に対局をお試しください。 ノータイムでの指し手が続いた場合でも受信処理が正しく行われるかどうかをテストされることをお薦めいたします。 なお、WindowsXPなど一部のOSでは、簡易サーバ起動時、セキュリティ警告メッセージが出る可能性があります。
Javaアプレットは、JavaプラグインがインストールされたコンピュータであればWebブラウザ上で動作させることができます。 簡易サーバの接続先となるIPアドレスは、クライアントソフトを動作させているコンピュータのIPアドレスとなります。 クライアントとサーバを同一のコンピュータで実行させている場合は、IPアドレス '127.0.0.1' またはホスト名 'localhost' を指定することもできます。 なお、簡易サーバはサーバとしてのすべての機能を備えてはいませんので、指し手の検証その他の用途にはCSAのサイトのサーバを利用されることをお薦めいたします。 また対局クライアントJavaアプレットは、簡易サーバとクライアントの機能を同時に利用することができますので、単独でコンピュータとの対戦テストに利用することができます。
LAN対局への移行をスムーズに行うためには、参加者の皆さんのご協力が不可欠です。 第16回選手権ではLANの導入は任意(推奨)となっていますが、1チームでも多くの参加をお願いいたします。 LAN対局の導入は、初期においては今までになかったトラブルが発生する可能性もありますが、中・長期的には現行のシステムの課題を改善し、より対局に集中できる運営が可能になる、と主催者側では判断しております。
また、LANからインターネットへの対局のリアルタイム中継が可能になることにより、コンピュータ将棋の強さを全世界にアピールすることができ、注目を集めることによって、コンピュータ将棋のさらなる発展が期待されます。
本文書について不明な点がありましたら、csa_protocol@computer-shogi.orgまでお気軽にお問い合わせください。