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)、棋譜情報を追加

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
とする。
バージョンがない場合、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
待った:%MATTA
中断 :%CHUDAN
千日手:%SENNICHITE
持将棋:%JISHOGI
詰み :%TSUMI
不詰 :%FUZUMI
エラー:%ERROR (指し手の文字列が正しくない。あるいはルール上指せない等)。
(入玉で)勝ちの宣言:%KACHI
(入玉で)引き分けの宣言:%HIKIWAKE
(注)%KACHI,%HIKIWAKE は、コンピュータ将棋選手権のルールに対応し、第3版で追加。
(3) 消費時間
"T"に続き、その指し手で消費した時間を秒単位で示す。1秒未満は、切り捨てる。
消費時間は省略可能とする。
例:
T10

2.7 コメント

"'"(アポストロフィー)で始まる行はコメントとする。文の途中からのコメントは、記述できない。

2.8 マルチステートメント

","(カンマ)を用いて、複数の行を1行にまとめることができる。

2.9 ファイル名の拡張子("."以降の名前)

"csa"とする。unixのように大文字小文字の区別がある場合は小文字とする。

3. 棋譜ファイルの例

'----------棋譜ファイルの例"example.csa"-----------------
'バージョン
V2
'対局者名
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