2014年06月21日

GNU Go ドキュメント和訳 (19章 GTPのみ)

GNU Go Documentation の
19. The Go Text Protocol を
適当に和訳しました。

訳がさすがにちょっと怪しい、と思ったところは
日本語と併せて原文(英語)も併記します。

http://www.gnu.org/software/gnugo/gnugo_19.html

------------------------------------------
19.1 Go Text Protocol
19.2 GNU GoをGTPモードで起動する
19.3 GTPアプリケーション
19.4 メタマシーン
19.5 新しいGTPコマンドの追加
19.6 GTPコマンドリファレンス


------------------------------------------
19.1 Go Text Protocol

GNU Go 3.0から、Go Text Protcol, 略してGTPという新しいインターフェースを導入しました。
ASCIIインターフェースよりコンピュータ間での通信に適し、Go Modem Protocolよりシンプル・パワフル・柔軟なインターフェースを作るためです。

GTPには2つのプロトコルバージョンがあります。
バージョン1は、GNU Go 3.0と3.2で使われていました。
バージョン2は、GNU Go 3.4以降で使っています。
GTP バージョン2の仕様は、http://www.lysator.liu.se/~gunnar/gtp/ で入手できます。
GNU Go 3.4はGTPバージョン2実装のリファレンスとなりますが、
全てしかし多くの共通コマンドはこのプロトコルの独自拡張として扱うべきである。
(but all but the most common commands are to be regarded as private extensions of the protocol.)

GTPには様々な応用例があります。
GNU Goで初めに退行テスト(セクション"Regression testing"参照)に使用し、
(訳注:退行テスト:GNU Goのソースコードを修正した際に、既存の動作がきちんと変化無く行なえるかをテストすること。)
続いてNNGSサーバに接続して自分自身や別のプログラムと自動対局するテストに使用しました。
(訳注:NNGS:インターネット囲碁サーバを構築するモジュール(http://sourceforge.jp/projects/sfnet_nngs/)。及びそれを使用したサーバ(現在は消滅:http://nngs.cosmic.org/))
現在ではNNGSや他のネット碁サーバのほかに、GTPに対応した多くのグラフィカルユーザーインターフェースが存在します。

------------------------------------------
19.2 GNU GoをGTPモードで起動する

GNU GoをGTPモードで起動するには、gnugoを単に'--mode gtp'オプションを付けて起動してください。
するとプロンプトや他の出力は表示されませんが、GNU Goは静かにGTPコマンドを待っています。

GTPセッションの例は、こんな感じに見えます。


virihaure 462% ./gnugo --mode gtp
1 boardsize 7
=1

2 clear_board
=2

3 play black D5
=3

4 genmove white
=4 C3

5 play black C3
?5 illegal move

6 play black E3
=6

7 showboard
=7
A B C D E F G
7 . . . . . . . 7
6 . . . . . . . 6
5 . . + X + . . 5
4 . . . + . . . 4
3 . . O . X . . 3
2 . . . . . . . 2 WHITE (O) has captured 0 stones
1 . . . . . . . 1 BLACK (X) has captured 0 stones
A B C D E F G

8 quit
=8


コマンドは1行で与えられ、また先頭に任意で識別番号を付け、続いてコマンド名と引数を指定します。
(識別番号はオプション。)

コマンドが正常に実行された場合、イコール記号('=')から始まる応答が返ります。
続いてコマンド識別番号(識別番号が指定された場合のみ)、その次に結果が続きます。
上記例では、識別番号4, 7以外は空文字の結果が返ってきています。
識別番号4のコマンドの結果は、白がC3に着手するという回答です。
識別番号7のコマンドの結果は、現在の盤面配置です。
応答は、2つの連続した改行で終了します。

コマンドが失敗した場合、識別番号5のように、イコール記号の代わりに疑問符('?')で始まる応答が返ります。

このプロトコルの詳細な仕様は http://www.lysator.liu.se/~gunnar/gtp/ にあります。
GNU Goで利用可能なコマンドは list_commands コマンドで一覧できます。
またこのドキュメントのセクション19.6 "GTPコマンドリファレンス"にも記載されています。

------------------------------------------
19.3 GTPアプリケーション
(訳注:この章はとってもざっくりな概要のみでしか訳してません。)

GTPは「コントローラー」と「エンジン」による、非対称のプロトコルだよ。
・コントローラー:GTPコマンドを送信する
・エンジン:GTPコマンドに応答する
GNU Go本体はエンジン側を実装してるよ。

GNU Goソースコードの中にはコントローラー側を実装したいくつかのアプリケーションが入っているよ。
・退行テストを実行するコントローラー (regress.*)
・2つのエンジンを対戦させるコントローラー (twogtp.*)
とか。


------------------------------------------
19.4 メタマシーン
(訳注:この章はとってもざっくりな概要のみでしか訳してません。)

あるプロセスが、GTPの応答を「お告げ」として受け取り、
複数のお告げの内容を元に、最終的な着手を決定する、って感じの試みがあるよ。(メタマシーン)
その実装が、GNU Goと一緒に配布されているらしい。


------------------------------------------
19.5 新しいGTPコマンドの追加
(訳注:この章はとってもざっくりな概要のみでしか訳してません。)

GNU GoでのGTPの実装は、'interface/gtp.h', 'interface/gtp.c', 'interface/play_gtp.c'でやってるよ。
前2つはヘルパー関数の宣言と定義。実際のGTPコマンドは 'play_gtp.c' でやってます。
どんな感じで実装するかは、既に実装されているコマンドのコードを見てね。
(gtp_countlib()を例にした解説がドキュメント原文にあります。)


------------------------------------------
19.6 GTPコマンドリファレンス

このセクションではGNU Goで実装しているコマンドと、コマンドに関する情報を一覧します。
各コマンドに対して、次の項目があります。
・機能:
  コマンドが行なうこと
・引数:
  そのコマンドが必要とする追加情報(必要なら)。
  (訳注:複数の引数はスペースで区切って指定します。)
    ・不要 (none)
    ・座標 (vertex)
    ・整数 (integer)
    ・色 (訳注:"black" or "white")
    ・その他
・エラー:
  このコマンドが失敗する原因となる状況
  (訳注:エラー時の応答文字列を表している訳ではありません。)
・戻値:
  コマンドの応答として何が返されるか。
  (応答のヘッダ('=')とフッタ(2つの改行)の間にある情報の内容)
    ・なし (nothing)
    ・座標 (a move coordinate)
    ・文字列 (some status string)
    ・色 (訳注:"black" or "white")
    ・その他
・ステータス:
  標準のGTPバージョン2コマンドとの対応。
  記載が無いコマンドは、GNU Go独自拡張コマンドです。

(訳注:座標は、横方向を左からA〜T(ただしIを除く)、縦方向を下から1〜19(19路盤の場合)で表した文字列です。
    例:左下隅星: D4 右上隅星: Q16)

(訳注:
  GTP バージョン2の仕様(http://www.lysator.liu.se/~gunnar/gtp/)とコマンド有無の対応比較しました。
  相違は1点のみ。
  GTPで定義されているlist_commandsコマンドがhelpコマンドに置き換わっています。
  (しかしGNU Go 3.8の動作ではhelpだけでなく, list_commandsコマンドも同様に動作する)
  それ以外は一致していました。(GTP v2で定義されたコマンドがGNU Goに実装されている。))


では以下に大きなリストを示します。(順不同です。)
※新しいコマンドを追加した場合は、このリストは不完全になります。
 (訳注:そりゃそうだろう。原文にはその際のドキュメント変更についても少し記載している。)

訳注:
以下はGNU Go 3.8の動作に合わせて補足や強引な意訳などを行なっています。
連について、原文では"string"(直接的な結合を持つ群)と"dragon"(間接的な結合(タケフなど)を持つ群)と区別しています。
日本語ではこの2つを区別する用語は無いですが、一応区別を残したまま訳すため、
便宜的に、string="連"、dragon="漣"と訳します。(無理矢理...大杉さんすみません。)


quit
プログラムを終了する
 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


protocol_version
プロトコルバージョンを取得する

 引数:
-
 エラー:
-
 戻値:
・プロトコルバージョン番号
 ステータス:
GTPバージョン2標準コマンド
 訳注:


name
プログラム名を取得する

 引数:
-
 エラー:
-
 戻値:
・プログラム名
 ステータス:
GTPバージョン2標準コマンド
 訳注:


version
プログラムのバージョン番号の取得

 引数:
-
 エラー:
-
 戻値:
・バージョン番号
 ステータス:
GTPバージョン2標準コマンド
 訳注:


boardsize
使用する盤の路数の設定・盤面をクリアする

 引数:
整数
 エラー:
エンジンが扱えない路数
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


query_boardsize
現在の路数設定を取得する

 引数:
-
 エラー:
-
 戻値:
・盤面路数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


clear_board
盤面をクリアする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


orientation
orientationの値を設定し、盤面をクリアする
(Set the orienation to N and clear the board)

 引数:
整数
 エラー:
orientationが不正
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
実行しても効果がよく分かりません。
盤面座標軸方向が回転するわけでもないよう。


query_orientation
現在のorientation設定を取得する

 引数:
-
 エラー:
-
 戻値:
・orientation
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


komi
コミを設定する

 引数:
小数
 エラー:
引数が正しくない
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


get_komi
コミを取得する

 引数:
-
 エラー:
-
 戻値:
・コミ
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


black
黒石を指定した座標に着手する

 引数:
座標
 エラー:
不正な座標指定
不正な着手
 戻値:
-
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


playwhite
白石を指定した座標に着手する

 引数:
座標
 エラー:
不正な座標指定
不正な着手
 戻値:
-
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


play
指定した色を指定した座標に着手する

 引数:

座標
 エラー:
不正な座標指定
不正な着手
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


fixed_handicap
固定位置に置石を配置する

 引数:
置石数
 エラー:
現在の路数に対して不正な置石数
 戻値:
・置石を置いた座標リスト
 ステータス:
GTPバージョン2標準コマンド
 訳注:
星・天元への置石配置。
GNU Go 3.8では9子を超える置石(星目風鈴など)には対応していないようである。


place_free_handicap
置石を置く場所を考慮して置石を配置する

 引数:
置石数
 エラー:
不正な置石数
 戻値:
・置石を置いた座標リスト
 ステータス:
GTPバージョン2標準コマンド
 訳注:
対局開始前にN手分先に打つ、というイメージ。
置石を置く場所はGNU Goが考える。
実行する度その場所は変わる。


set_free_handicap
指定した自由位置に置石を配置する

 引数:
置石を置く座標リスト
 エラー:
盤面が空でない
不正な座標リスト
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


get_handicap
置石数を取得する

 引数:
-
 エラー:
-
 戻値:
・置石数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


loadsgf
SGFファイルを読み込み、石を配置する
(オプションで、指定した[手数/座標(への初めの着手)]の直前までの着手を配置する)

 引数:
ファイル名
[手数]
[座標]
 エラー:
ファイルが存在しない
SGFファイルの解析失敗
 戻値:
・次に着手すべき色
 ステータス:
GTPバージョン2標準コマンド
 訳注:


color
指定した座標にある石の色を取得する

 引数:
座標
 エラー:
不正な座標
 戻値:
・色 or 空("empty")
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


list_stones
指定した色が配置されている座標リストを取得する

 引数:
 エラー:
不正な色
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
リストは着手順ではないよう


countlib
指定した座標にある連の呼吸点の数を取得する

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・呼吸点数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


findlib
指定した座標にある連の呼吸点の座標リストを取得する

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・呼吸点の座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


accuratelib
指定した色を指定した座標に着手した場合の、連の呼吸点の数を取得する

 引数:

座標
 エラー:
不正な色
不正な座標
 戻値:
・呼吸点の座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
accurate_approxlibと同一の動作


accurate_approxlib
指定した色を指定した座標に着手した場合の、連の呼吸点の数を取得する

 引数:

座標
 エラー:
不正な色
不正な座標
 戻値:
・呼吸点の座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
accuratelibと同一の動作


is_legal
指定した色の指定した座標への着手が合法かを判定する

 引数:

座標
 エラー:
不正な色
不正な座標
 戻値:
着手が合法なら 1
非合法なら 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


all_legal
指定した色の全ての合法手の座標リストを取得する

 引数:
 エラー:
不正な色
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


captures
指定した色が捕獲したアゲハマの数を取得する

 引数:
 エラー:
不正な色
 戻値:
・アゲハマの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


last_move
最後の着手を取得する

 引数:
-
 エラー:
直前の着手が分からない
 戻値:
・直前に着手した色
・直前に着手した座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


move_history
着手履歴を逆順(初手が最後)で出力する

 引数:
-
 エラー:
-
 戻値:
・着手履歴リスト
(1手を1行で表し、1手分は色 座標。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


invariant_hash
回転・左右対称を考慮した不変の盤面ハッシュ値を取得する

 引数:
-
 エラー:
-
 戻値:
・盤面の不変ハッシュ値(16進数)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


invariant_hash_for_moves
指定した色が可能な全ての合法手によって得られる、回転・左右対称を考慮した不変の盤面ハッシュ値を取得する

 引数:
 エラー:
不正な色
 戻値:
・合法手座標と不変ハッシュ値のリスト
(1行に1つの合法手座標とハッシュ値)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


trymove
指定した色を指定した座標に試しに着手する

 引数:
色,
座標
 エラー:
不正な色
不正な座標
不正な着手
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
popgoで元に戻せる


tryko
不正なコウ取りを許容して、指定した色を指定した座標に試しに着手する

 引数:
色,
座標
 エラー:
不正な色
不正な座標
不正な着手
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
popgoで元に戻せる


popgo
trymove, trykoコマンドによる試し着手を1手分元に戻す

 引数:
-
 エラー:
直前のtrymove,tryko着手無し
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


clear_cache
キャッシュをクリアする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
何のキャッシュ?


attack
指定した座標にある連に攻撃を試みる

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
攻撃コードが2以上になるのはどのような時?


attack_either
指定した2つの連に攻撃を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・連に対する攻撃コード
(攻撃コードが0でなければ、指定した連のどちらかへの攻撃手があることを保証するが、攻撃手の座標は返さない。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


defend
指定した座標にある連の防御を試みる

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード(1〜)
・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
防御コードが2以上になるのはどのような時?


does_attack
指定した座標への着手が指定した連への攻撃かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・攻撃コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


does_defend
指定した座標への着手が指定した連の防御かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
原文ではReturns:attack codeとなっているが誤記か?


ladder_attack
指定した座標にある連に厳格なシチョウでの攻撃を試みる

 引数:
連の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
厳格なシチョウ(strictly in a ladder)とは、緩みシチョウではないということと推測される。


increase_depths
思考ルーチンの読みの深さを1レベル増やす

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
depth = 読みの深さ?


decrease_depths
思考ルーチンの読みの深さを1レベル減らす

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
depth = 読みの深さ?


owl_attack
OWLを使用して、指定した座標にある漣に攻撃を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
OWL:Optics With Limit-negotiation 眼形データベースを用いた生死判定のロジック。(12.1 The Owl Code参照)


owl_defend
OWLを使用して、指定した座標にある漣の防御を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード(1〜)
・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_threaten_attack
OWLを使用して、指定した座標にある漣に2手での攻撃を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
攻撃手無し: 0
攻撃手有り:
・攻撃コード(1〜)
・攻撃手の座標1
・攻撃手の座標2
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_threaten_defense
OWLを使用して、指定した座標にある漣の2手での防御を試みる

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード(1〜)
・防御手の座標1
・防御手の座標2
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_does_attack
OWLを使用して、指定した座標への着手が指定した漣への攻撃かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・攻撃コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_does_defend
OWLを使用して、指定した座標への着手が指定した漣の防御かどうか判断する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_connection_defends
OWLを使用して、指定した座標への着手が指定した2つの漣を接続しての防御かどうか判断する

 引数:
着手の座標
漣1の座標
漣2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


defend_both
指定した2つの連の防御を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・連に対する防御コード
(防御コードが0でなければ、指定した連の両方の防御手があることを保証するが、防御手の座標は返さない。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


owl_substantial
OWLを使用して、指定した連を除去した場合に、漣が活きられるかどうか判定する
(Determine whether capturing a string gives a living dragon)

 引数:
(連の)座標
 エラー:
不正な座標
座標に石が無い
 戻値:
漣が活き: 1
それ以外: 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
訳の動作だと、連・漣両方の座標指定が必要に思える。


analyze_semeai
攻め合いを分析する
(指定した2つの漣の攻撃・防御を試みる)

 引数:
漣1の座標
漣2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
防御コード
攻撃コード
攻撃・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


analyze_semeai_after_move
指定した座標への着手の後の攻め合いを分析する

 引数:
着手の色
着手の座標
漣1の座標
漣2の座標
 エラー:
不正な座標
 戻値:
・防御コード
・攻撃コード
・攻撃・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


tactical_analyze_semeai
OWLを使用せずに、攻め合いを分析する

 引数:
漣1の座標
漣2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・防御コード
・攻撃コード
・攻撃・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
原文ではReturns:status of dragona, dragonb assuming dragona moves firstだが、GnuGo3.8の動作ではanalyze_semeaiと同形式の結果を返す。


connect
指定した2つの連の接続を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
2つの連の色が違う
 戻値:
接続手無し: 0
接続手有り:
・接続コード
・接続手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


disconnect
指定した2つの連の切断を試みる

 引数:
連1の座標
連2の座標
 エラー:
不正な座標
座標に石が無い
2つの連の色が違う
 戻値:
切断手無し: 0
切断手有り:
・切断コード
・切断手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


break_in
指定した連から、指定した領域への侵入を試みる

 引数:
連の座標
領域の座標
 エラー:
不正な座標
連の座標に石が無い
 戻値:
侵入手無し: 0
侵入手有り:
・侵入コード
・侵入手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


block_off
指定した連から、指定した領域への侵入のブロックを試みる

 引数:
連の座標
領域の座標
 エラー:
不正な座標
連の座標に石が無い
 戻値:
防御手無し: 0
防御手有り:
・防御コード
・防御手の座標
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


eval_eye
指定した領域の眼形スペースを評価する

 引数:
領域の座標
 エラー:
不正な座標
 戻値:
眼を形成する場合:
・最小の眼の数
・最大の眼の数
・(最小≠最大の場合)[眼の数を減らす攻撃手の座標]
・(最小≠最大の場合)[眼の数を減らさない防御手の座標]
眼を形成しない場合・どちらかの色に属さない: -1
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


dragon_status
漣の状態を判定する

 引数:
[漣の座標]
 エラー:
[不正な座標]
[座標に石が無い]
 戻値:
・漣の状態
(活き:"alive"
 瀕死:"critical"
 死に:"dead"
 不明:"unknown")
・(瀕死の場合)[攻撃手の座標]
・(瀕死の場合)[防御手の座標]
※座標指定が無い場合、全ての漣の状態が1行1連の"A4: alive"のような形式で返される
(FIXME:セキ活きと単独活きを区別すべき。コウを識別すべき。)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


same_dragon
指定した2つの石が同じ漣に属するか判定する

 引数:
石1の座標
石2の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
同じ漣: 1
それ以外: 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


unconditional_status
指定した座標の無条件の状態を判定する

 引数:
座標
 エラー:
不正な座標
 戻値:
・座標の状態
(未定:"undecided"
 活き:"alive"
 死に:"dead"
 白の確定地:"white_territory"
 黒の確定地:"black_territory"
(石のある座標:未定,活き,死にのいずれか
 石のない座標:未定,白の確定地,黒の確定地のいずれか))
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
無条件とは、どんなに手を抜いても死なないこと。


combination_attack
指定した色が連携攻撃によって石を取れる着手を取得する

 引数:
 エラー:
不正な色
 戻値:
連携攻撃手有り:
・座標
連携攻撃手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
連携攻撃手がどのように返されるか不明


combination_defend
色が連携攻撃によって石を取れる場合、他方の色がその連携攻撃を防御する着手を取得する

 引数:
 エラー:
不正な色
 戻値:
連携防御手有り:
・座標
連携防御手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
説明からだと攻撃側・防御側どちらの色を指定するのか不明


aa_confirm_safety
atari_atari_confirm_safety()関数を実行する

 引数:
座標
[整数]
 エラー:
不正な着手
 戻値:
success code, if failure also defending move
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
OWLを使用した、連携攻撃に関する関数らしい。(12.2 Combination reading 参照)


genmove_black
黒の最良手を生成し着手する

 引数:
-
 エラー:
-
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


genmove_white
白の最良手を生成し着手する

 引数:
-
 エラー:
-
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
廃止されたGTPバージョン1コマンド
 訳注:


genmove
指定した色の最良手を生成し着手する

 引数:
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
投了: resign (resignation_allowedが指定されている場合)
 ステータス:
GTPバージョン2標準コマンド
 訳注:


reg_genmove
指定した色の最良手を生成する

 引数:
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
GTPバージョン2標準コマンド
 訳注:


gg_genmove
指定した色の最良手を生成する

 引数:

[乱数シード]
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


restricted_genmove
指定した色の最良手を、指定した許可座標から選択して生成する

 引数:

許可座標リスト
 エラー:
不正な色
不正な座標
座標リスト無し
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


kgs-genmove_cleanup
指定した色の最良手を生成し着手する
(敵の全ての死石が無くなるまでパスしない)

 引数:
 エラー:
不正な色
 戻値:
最良手有り:
・座標
最良手無し: PASS
 ステータス:
KGS独自コマンド
(類似のコマンドがGTPバージョン3で追加されるかも知れない)
 訳注:
KGS: インターネット碁サイトの一つ(http://www.gokgs.com/)


level
着手レベルを設定する

 引数:
整数
 エラー:
引数が正しくない
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


undo
着手を1手戻す

 引数:
-
 エラー:
着手履歴が短すぎる
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


gg-undo
指定した手数分着手を戻す

 引数:
[整数]
 エラー:
着手履歴が短すぎる
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


time_settings
持ち時間を設定する

 引数:
整数(持ち時間)
整数(秒読時間)
整数(秒読回数)
 エラー:
構文エラー
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


time_left
残り時間を報告する

 引数:

残り時間
残り秒読回数
 エラー:
構文エラー
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:
残り時間の報告なのに戻り値がnothingなのが意味不明。引数で秒数を指定してるし。
(ネット碁サーバとの通信用コマンド?)


final_score
終局した対局のスコアを計算する

 引数:
[乱数シード]
 エラー:
-
 戻値:
スコア (SGFフォーマットで)(RE property)
 ステータス:
GTPバージョン2標準コマンド
 訳注:
戻り値はB+0.5(黒0.5目勝ち)などの形式
乱数シードがどう使われるか不明


final_status
終局した対局の指定した座標の最終状態を取得する

 引数:
座標
[乱数シード]
 エラー:
不正な座標
 戻値:
・座標の状態
(活き:"alive"
 死に:"dead"
 セキ:"seki"
 白の確定地:"white_territory"
 黒の確定地:"black_territory"
 ダメ:"dame")
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


final_status_list
終局した対局で特定の最終状態の座標リストを取得する

 引数:
状態
(活き:"alive"
 死に:"dead"
 セキ:"seki"
 白の確定地:"white_territory"
 黒の確定地:"black_territory"
 ダメ:"dame")
[乱数シード]
 エラー:
状態文字列なし
不正な状態文字列
 戻値:
・指定された状態を持つ座標リスト
("alive","dead","seki"の場合、空でない座標が連ごとに改行される)
 ステータス:
GTPバージョン2標準コマンド
(ただし"dame", "white_territory", "black_territory"の指定はGNU Go 独自拡張)
 訳注:


estimate_score
スコアを推定する

 引数:
-
 エラー:
-
 戻値:
・スコアとその上限下限
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
戻値は
B+23.8 (upper bound: -11.9, lower: -35.7)
のような形式で返される


experimental_score
次がどちらの手番かを考慮して、スコアを推定する
(次の手番の着手を生成して、その手の価値を加えるので、瀕死の漣の価値が考慮される)

 引数:
次手番の色
 エラー:
不正な色
 戻値:
・スコア
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
戻値は -11.8 などの形式で返されるが、これがどちらの色から見たスコアなのか不明。


reset_life_node_counter
life nodeの数をリセットする
(このコマンドは廃止され、後方互換のためだけに残されている。)

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
life nodeが何か不明


get_life_node_counter
life nodeの数を取得する
(このコマンドは廃止され、後方互換のためだけに残されている。)

 引数:
-
 エラー:
-
 戻値:
・life nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_owl_node_counter
owl nodeの数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
owl nodeが何を表すか不明


get_owl_node_counter
owl nodeの数を取得する

 引数:
-
 エラー:
-
 戻値:
・owl nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_reading_node_counter
reading nodeの数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
reading nodeが何を表すか不明。読みと関係する?


get_reading_node_counter
reading nodeの数を取得する

 引数:
-
 エラー:
-
 戻値:
・reading nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_trymove_counter
trymoves / tryko の数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
リセットされるのは数のみで、trymove/trykoのスタックはリセットされない。(このコマンド実行後も、popgoで元に戻せる。)


get_trymove_counter
trymoves / tryko の数を取得する

 引数:
-
 エラー:
-
 戻値:
・trymoves / trykoの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_connection_node_counter
connection nodeの数をリセットする

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
connection nodeが何を表すか不明。接続と関係する?


get_connection_node_counter
connection nodeの数を取得する

 引数:
-
 エラー:
-
 戻値:
・connection nodeの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


test_eyeshape
矛盾評価のために眼形をテストする
(Test an eyeshape for inconsistent evaluations)

 引数:
眼形の座標
 エラー:
不正な座標
 戻値:
・失敗レポート(stderrに出力)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
指定する座標の状況によって、例えば以下のような結果が返ってくる。
D2 alive, but almost filled with nakade:
しかし多くの座標で結果が何も返ってこないことが多い。
しかも自分のwin7コマンドプロンプト環境ではレポート出力後、'cygwin': unknown terminal type. などと出力されそのままgnugoが終了する。


analyze_eyegraph
眼形(eye graph)の眼値(eyevalue)と急所を計算する

 引数:
文字列エンコードされた眼形
 エラー:
不正な眼形
解析失敗
 戻値:
・眼値(eyevalue)
・急所
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
引数の与え方が不明。
引数なしでも、座標値を与えても、"0000"が帰ってくるのみ。(test_eyeshapeでレポートが返ってくる座標を与えても同様。)
このコマンド実行後、盤面が破壊される(盤面の一部を除いて、同色の石が配置される)


cputime
CPU経過時間を秒で取得する

 引数:
-
 エラー:
-
 戻値:
・合計CPU経過時間(ユーザー+システム)[秒]
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


showboard
現在の盤面配置を標準出力(stdout)に出力する

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GTPバージョン2標準コマンド
 訳注:


dump_stack
スタックダンプを標準エラー出力(stderror)に出力する

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


initial_influence
勢力等の情報を取得する

 引数:
手番の色
情報種別
(白の勢力:"white_influence" (小数)
 黒の勢力:"black_influence" (小数)
 白の強さ:"white_strength" (小数)
 黒の強さ:"black_strength" (小数)
 白の減衰:"white_attenuation" (小数)
 黒の減衰:"black_attenuation" (小数)
 白の透過性:"white_permeability" (小数)
 黒の透過性:"black_permeability" (小数)
 領域の値:"territory_value" (小数)
 勢力範囲:"influence_regions" (整数)
 非領域:"non_territory" (整数))
 エラー:
-
 戻値:
・下記のようなフォーマットの勢力データ

0.51 1.34 3.20 6.60 9.09 8.06 1.96 0.00 0.00
0.45 1.65 4.92 12.19 17.47 15.92 4.03 0.00 0.00
.
.
.
0.00 0.00 0.00 0.00 0.00 100.00 75.53 41.47 23.41

勢力範囲情報(influence_regions)のコードの意味は以下。
4 白石
3 白の領域
2 白の模様
1 白の範囲
0 中立
-1 黒の範囲
-2 黒の模様
-3 黒の領域
-4 黒石
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
原文の説明は"initial influence function"を返す、とあるが、"initial"と"function"はつながりが分からないので省略した。
influence:勢力
attenuation:減衰
non_territory情報の戻り値のコード(0〜3)の意味が不明。それ以外の情報も値の意味付けが不明なものが多い。


move_influence
指定した座標に着手した後の、勢力等の情報を取得する

 引数:

座標
情報種別(※initial_influenceコマンドと同様)
 エラー:
-
 戻値:
※initial_influenceコマンドと同様
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
実行結果に、指定した着手が加味されていないように思える。


move_probabilities
着手可能性一覧を取得する(可能性0でないもの)
(この前にgenmoveコマンドが発行されていない場合、このコマンドの結果は意味の無いものである。)

 引数:
-
 エラー:
-
 戻値:
・着手座標
・可能性
(着手ごとに1行)
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
以下のような結果が返る。
C17 0.2501
D17 0.2500
C4 0.2500
C3 0.2499


move_uncertainty
着手の不確定性のビット数を取得する
(この前にgenmoveコマンドが発行されていない場合、このコマンドの結果は意味の無いものである。)

 引数:
-
 エラー:
-
 戻値:
・不確定性のビット数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
着手可能性のある座標(move_probabilities)の数が1つ(2^0)の場合0.0000が、4つ(2^2)の場合2.0000が返る。


followup_influence
フォローアップする勢力等の情報を取得する

 引数:

座標
情報種別(※initial_influenceコマンドと同様)
 エラー:
-
 戻値:
※initial_influenceコマンドと同様
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
followupが何を意味するか不明。着手に伴う勢力の増減を返すのかと思っていたが、結果はそうではなさそうだった。


worm_data
連の情報を取得する

 引数:
[座標]
 エラー:
-
 戻値:
・下記のようなフォーマットの連データ

A19:
color black
size 10
effective_size 17.83
origin A19
liberties 8
liberties2 15
liberties3 10
liberties4 8
attack PASS
attack_code 0
lunch B19
defend PASS
defend_code 0
cutstone 2
cutstone2 0
genus 0
inessential 0
B19:
color white
.
.
.
inessential 0
C19:
...

座標が指定された場合は、1つの連の情報のみが返される。
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
worm=string=連


worm_stones
指定した連の石リストを取得する

 引数:
座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


worm_cutstone
指定した連のcutstoneの数を取得する

 引数:
座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・cutstoneの数
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
cutstoneが何を表すか不明。
他の連との断点の数ではなさそう。


dragon_data
漣の情報を取得する

 引数:
[座標]
 エラー:
-
 戻値:
※worm_dataコマンドと同様
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


dragon_stones
指定した漣の石リストを取得する

 引数:
座標
 エラー:
不正な座標
座標に石が無い
 戻値:
・座標リスト
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


eye_data
指定した座標の眼情報を取得する

 引数:

座標
 エラー:
-
 戻値:
・眼情報と値
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
眼情報は下記のようなフォーマット

origin E4
color white
esize 20
msize 0
value 2222
marginal 0
neighbors 3
marginal_neighbors 0


half_eye_data
指定した座標の半眼情報を取得する

 引数:
座標
 エラー:
-
 戻値:
・半眼情報と値
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
眼情報は下記のようなフォーマット

value 5.00
type FALSE_EYE
num_attacks 3
attack_point[0] G5
attack_point[1] G7
attack_point[2] J5
num_defenses 3
defense_point[0] G5
defense_point[1] G7
defense_point[2] J5

半眼で無い場合、

value 10.00
type 0
num_attacks 0
num_defenses

などとなる。(項目数可変。)


start_sgftrace
読みで実行した着手のSGFツリーのメモリへの格納を開始する
(警告:このコマンドを使おうとする場合、何をしようとしているか理解したほうがよい。)

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
意味深な警告の真意は、このコマンドはgenmoveなどでCPUが考慮する際に読んだ着手の全てとその思考過程の全てがSGFツリーになるということ。
実際、互先から5手だけgenmoveした結果は膨大な着手とコメントが記載された5.8MBのSGFファイルとなった。


finish_sgftrace
着手のSGFツリーのメモリへの格納を終了し、ファイルに書き出す
(警告:このコマンドを使おうとする場合、何をしようとしているか理解したほうがよい。)

 引数:
SGFファイル名
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
start_sgftrace同様


printsgf
現在の盤面配置を指定したファイル名の静的なSGFファイルに書き出す
(ファイル名指定無し or "-"の場合は標準出力に出力する)

 引数:
[SGFファイル名]
 エラー:
-
 戻値:
ファイル名指定有 : -
ファイル名指定無
・SGFデータ
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
静的なSGFとは、全ての黒石・白石の座標をAB[],AW[]で配置だけ表現したもの。(着手順は表現されない。)


tune_move_ordering
攻め合いの読みにおける着手の順序に関するパラメータ(MOVE_ORDERING_PARAMETERS)を調整する

 引数:
整数
 エラー:
不正な引数
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


echo
指定された文字列を出力する

 引数:
文字列
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


echo_err
指定された文字列を標準出力(stdout)と標準エラー出力(stderr)に出力する

 引数:
文字列
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


help
利用可能な全てのコマンドのリストを取得する

 引数:
-
 エラー:
-
 戻値:
・コマンド
(コマンドごとに1行)
 ステータス:
GTPバージョン2標準コマンド
 訳注:
GTP2標準とあるが、GTPではhelpコマンドは定義されておらず、"list_commands"コマンドとして定義されている。(動作定義は一致)
ドキュメントに記載は無いが、GNUGo3.8ではlist_commandsコマンドも動作するようである。


known_command
指定したコマンドが利用可能か調査する

 引数:
コマンド名
 エラー:
-
 戻値:
コマンドが存在する : "true"
コマンドが存在しない : "false"
 ステータス:
GTPバージョン2標準コマンド
 訳注:


report_uncertainty
owl_attack・owl_defendからの不確定性レポートのon/offを切り替える

 引数:
"on"もしくは"off"
 エラー:
不正な引数
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


get_random_seed
乱数シードを取得する

 引数:
-
 エラー:
-
 戻値:
乱数シード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


set_random_seed
乱数シードを指定する

 引数:
乱数シード
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


advance_random_seed
指定したゲーム数分、乱数シードを進める

 引数:
ゲーム数
 エラー:
不正な引数
 戻値:
新しい乱数シード
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


is_surrounded
指定した漣が包囲されているか判定する

 引数:
漣の座標
 エラー:
不正な座標
座標に石が無い
 戻値:
包囲されている : 1
弱く包囲されている : 2
包囲されていない : 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


does_surround
指定した座標への着手が指定した漣を包囲するか判定する

 引数:
着手の座標
漣の座標
 エラー:
不正な座標
漣の座標に石が無い
着手の座標が空でない
 戻値:
包囲する着手である : 1
包囲する着手でない : 0
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


surround_map
指定した漣の包囲マップの値を取得する

 引数:
漣の座標
マップ値を取得する座標
 エラー:
不正な座標
漣の座標に石が無い
 戻値:
漣が包囲されている
・指定した座標の包囲マップの値
漣が包囲されていない : -1
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


set_search_diamond
探索を制限し、探索ダイヤモンドを設立する
(limit search, and establish a search diamond)

 引数:
座標
 エラー:
不正な座標
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


reset_search_mask
盤面上の全ての探索制限を解除する

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


limit_search
グローバル変数 limit_searchの値をセットする

 引数:
整数
 エラー:
不正な引数
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
limit_search変数が何を表すかは不明


set_search_limit
指定した座標を探索制限の対象とする

 引数:
座標
 エラー:
不正な座標
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:


draw_search_area
探索領域を取得する(標準エラー出力(stderr)に出力する)

 引数:
-
 エラー:
-
 戻値:
-
 ステータス:
GNU Go 独自拡張コマンド
 訳注:
結果が何も返ってこない上、自分のwin7コマンドプロンプト環境では、'cygwin': unknown terminal type. などと出力されそのままgnugoが終了する。




訳注:ここにExcelファイル置いておきますね。
-----------------------
てかGTPとか大分前からあるのに、和訳が無いのが不思議だ。
みんな普通に英文ですらっと理解できるからってことなのか?
将棋の次はコンピュータ囲碁が来るで。
こんな怪しいブログの和訳でよろしければど〜ぞ。

Special thanks to
マツナガ's 囲碁コーナー 記事:囲碁の英語
英単語が対応する囲碁用語を確認させていただきました。
(ladder = シチョウ とか)
http://homepage1.nifty.com/maznaga/IGO/mag/mag060123.htm

posted by curren at 10:24| Comment(0) | TrackBack(0) | 日記 - 一般 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。