CSA標準棋譜ファイル形式
1991年 3月 8日 原案 柿木 義一
1991年 3月 9日 CSAで検討
第1版 1991年 5月11日 CSAで検討・決定
第3版 1997年 8月25日 CSA理事会で承認
%KACHI,%HIKIWAKE を追加
第4版 2002年11月15日 CSA理事会で承認
バージョン(V2)、棋譜情報を追加
第5版 2005年 9月10日 CSA理事会、例会で決定
%TIME_UP を追加
%ILLEGAL_MOVE を追加
V2.1 に
第6版 2008年 1月12日 CSA理事会で決定
%+ILLEGAL_ACTION を追加
%-ILLEGAL_ACTION を追加
V2.2 に
1. はじめに
- 異なる将棋ソフトの間で、棋譜や詰将棋・局面のデータ交換を可能とするために、棋譜ファイルの標準形式を定める。したがってこの形式は、人にとってわかりやすい、ファイルサイズが小さくなる、等を主な目的としていない。
- 各ソフトの棋譜ファイル形式を本仕様にする必要はない。各ソフトの棋譜を本形式に変換するソフトを用意すれば、相互にデータの交換が可能となる。
- 本仕様は、既に定められている以下の規則を基本としている。
- (1)「コンピュータ将棋ファイル記述形式」(第1版)、CSA 資料集 Vol.1
- (2)「通信将棋規約の案」,CSA 資料集 Vol.2
- (3)「第1回コンピュータ将棋選手権, 通信仕様」, CSA 資料集 Vol.4
2. 棋譜ファイルの形式
2.1 概要
- 棋譜ファイルは処理を容易とするため、テキストファイルとする。文字コードと改行コードは、使用するOSや環境に依存する。コメントと棋譜情報(対局者名等)に日本語を使用してもよい。
- 棋譜ファイルは、次のデータから成る。
- (1)バージョン
- (2)棋譜情報
- (3)開始局面(持駒、手番を含む)
- (4)指し手と消費時間
- (5)コメント
- コメント以外は、この順番でデータがなければならない。
- (2)(4)(5)は、省略できる。
- セパレータ("/"だけの行)をはさんで、これらデータを繰り返し、複数の棋譜や局面を示すことができる。
2.2 バージョン
- "V"で始まり、バージョンの数字を記述する。
- 現バージョンは、
- V2.2
- とする。
- バージョンがない場合、1997年8月25日の仕様と判断する。
2.3 棋譜情報
- (1) 対局者名
- "N+"に続き +側(先手、下手)の対局者名を記述する。
- "N-"に続き -側(後手、上手)の対局者名を記述する。
- それぞれ1行とする。
- 省略可能とする。
- 例:
- N+NAKAHARA
- N-YONENAGA
- (2) 各種棋譜情報
- "$"で始め"キーワード"+":"(データ)の形式とする。
- これらの棋譜情報は、省略可能とする。
- (2-1) 棋戦名
- $EVENT:(文字列)
- (2-2) 対局場所
- $SITE:(文字列)
- (2-3) 対局開始日時(時刻は省略可)
- $START_TIME:YYYY/MM/DD HH:MM:SS
- "YYYY"は、西暦の年4桁の数字とする。
- 次の"MM"は、月2桁の数字とする。
- "DD"は、日2桁の数字とする。
- "HH:MM:SS"は、24時間表現の時間(2桁)、分(2桁)、秒(2桁)とする。
- "HH:MM:SS"は、省略可能とする。
- 日付と時刻の間のスペースは1桁とする。
- 例:
- $START_TIME:2002/01/01 19:00:00
- $START_TIME:2002/01/01
- (2-4) 対局終了日時(時刻は省略可)
- $END_TIME:YYYY/MM/DD HH:MM:SS
- 開始日時と同様に、対局終了日時を記述する。
- (2-5) 持ち時間(持ち時間と秒読み)
- $TIME_LIMIT:HH:MM+SS
- 持ち時間+秒読みとする。
- 持ち時間"HH:MM"は、時間(2桁以上の数字)、分(2桁の数字)とする。
- 秒読み"SS"は、秒単位の数字(2桁以上)とする。
- 切れ負けの場合、秒読みを"00"とする。
- 例:
- $TIME_LIMIT:00:25+00 持ち時間:25分、切れ負け
- $TIME_LIMIT:00:30+30 持ち時間:30分、秒読み:30秒
- $TIME_LIMIT:00:00+30 初手から30秒
- (2-6) 戦型
- $OPENING:(文字列)
- (2-7) 補足
- "$"で始まる各種棋譜情報の表記順は任意でいい。
2.4 駒と位置
- 駒名:歩から玉まで:FU,KY,KE,GI,KI,KA,HI,OU
- 上の成駒:TO,NY,NK,NG,UM,RY
- 位置:1一を"11"、5一を"51"、9九を"99"というふうに、2桁の数字で表す。
- 駒台は"00"とする。
- 先手(下手)は"+"、後手(上手)は"-"を付ける。
2.5 開始局面
- "P"で始まる文字列(以前に決めたもの)。
- (1) 平手初期配置と駒落ち
- 平手初期配置は、"PI"とする。駒落ちは、"PI"に続き、落とす駒の位置と種類を必要なだけ記述する。
- 例:二枚落ちPI82HI22KA
- (2) 一括表現
- 1行の駒を以下のように示す。行番号に続き、先後の区別と駒の種類を記述する。
- 先後の区別が"+""-"以外のとき、駒がないとする。
- 1枡3文字で9枡分記述しないといけない。
- 例:
-
P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
-
P2 * -HI * * * * * -KA *
- (3) 駒別単独表現
- 一つ一つの駒を示すときは、先後の区別に続き、位置と駒の種類を記述する。持駒に限り、駒の種類として"AL"が使用でき、残りの駒すべてを表す。駒台は"00"である。
- 玉は、駒台へはいかない。
- 例:
- P-22KA
- P+99KY89KE
- P+00KIOOFU
- P-00AL
- (4) 手番
- "+"で+側(先手、下手)を、"-"で-側(後手、上手)の手番を示す。1行とする。
- 手番の指定は必要である。
- (5) 補足
- 初期状態はすべての駒が駒箱にあり、上記(2)(3)の指定は、駒を駒箱から盤上に移動する動作を表現する。したがって、以上の(1)から(3)の指定で位置が決まらないものは、駒箱にあるとする。また、盤面の指定が無いときは、盤上に何も無いとする。
- 上記(1)と(2)は同時に指定しない。
- "P+00AL"、"P-00AL"は、最後に指定しなければならない。
- 手番は、盤面データの後に指定する。
2.6 指し手と消費時間
- 1手の指し手を1行とし、次の行にその指し手で消費した時間を示す。
- (1) 通常の指し手
- 先後("+"、または"-")の後、移動前、移動後の位置、移動後の駒名、で表す。
- 例:
- +3324NG ▲2四銀成
- (2) 特殊な指し手、終局状況
- %で始まる。
- %TORYO 投了
- %CHUDAN 中断
- %SENNICHITE 千日手
- %TIME_UP 手番側が時間切れで負け
- %ILLEGAL_MOVE 手番側の反則負け、反則の内容はコメントで記録する
- %+ILLEGAL_ACTION 先手(下手)の反則行為により、後手(上手)の勝ち
- %-ILLEGAL_ACTION 後手(上手)の反則行為により、先手(下手)の勝ち
- %JISHOGI 持将棋
- %KACHI (入玉で)勝ちの宣言
- %HIKIWAKE (入玉で)引き分けの宣言
- %MATTA 待った
- %TSUMI 詰み
- %FUZUMI 不詰
- %ERROR エラー
- ※文字列は、空白を含まない。
- ※%KACHI,%HIKIWAKE は、コンピュータ将棋選手権のルールに対応し、
- 第3版で追加。
- ※%+ILLEGAL_ACTION,%-ILLEGAL_ACTIONは、手番側の勝ちを表現できる。
- (3) 消費時間
- "T"に続き、その指し手で消費した時間を秒単位で示す。1秒未満は、切り捨てる。
- 消費時間は省略可能とする。
- 例:
- T10
2.7 コメント
- "'"(アポストロフィー)で始まる行は、ソフトが読み飛ばすコメントとする。
- 文の途中からのコメントは、記述できない。
2.8 マルチステートメント
- ","(カンマ)を用いて、複数の行を1行にまとめることができる。
2.9 ファイル名の拡張子("."以降の名前)
- "csa"とする。unixのように大文字小文字の区別がある場合は小文字とする。
3. 棋譜ファイルの例
'----------棋譜ファイルの例"example.csa"-----------------
'バージョン
V2.2
'対局者名
N+NAKAHARA
N-YONENAGA
'棋譜情報
'棋戦名
$EVENT:13th World Computer Shogi Championship
'対局場所
$SITE:KAZUSA ARC
'開始日時
$START_TIME:2003/05/03 10:30:00
'終了日時
$END_TIME:2003/05/03 11:11:05
'持ち時間:25分、切れ負け
$TIME_LIMIT:00:25+00
'戦型:矢倉
$OPENING:YAGURA
'平手の局面
P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * -KA *
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 * * * * * * * * *
P5 * * * * * * * * *
P6 * * * * * * * * *
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
'先手番
+
'指し手と消費時間
+2726FU
T12
-3334FU
T6
%CHUDAN
'---------------------------------------------------------