kif形式詳細 (1)

柿木義一のホームページで配布されているフリーソフトの Kifu for Windows Ver.5.13 で使われているkif形式のファイルについて、いろいろと調べてみました。正式な仕様書は存在するはずですが公開されていないので、kif形式に関連した変換プログラムを作る方などにとって役立つと思います。

なお、誤りを含む可能性は十分ありますので、ご注意下さい。

まず、盤面表記の仕様から。(盤面を扱うだけならば、bod形式という方が正確かもしれません。)

kif形式盤面の例

kif形式の盤面は例えば次のようなテキスト形式で表されます。

後手:羽生善治
後手の持駒:飛 角 金 銀 桂 香 歩四 
  9 8 7 6 5 4 3 2 1
                                                        • +
v香v桂 ・ ・ ・ ・ ・ ・ ・
・ ・ ・ 馬 ・ ・ 龍 ・ ・
・ ・v玉 ・v歩 ・ ・ ・ ・
v歩 ・ ・ ・v金 ・ ・ ・ ・
・ ・v銀 ・ ・ ・v歩 ・ ・
・ ・ ・ ・ 玉 ・ ・ ・ ・
歩 歩 ・ 歩 歩v歩 歩 ・ 歩
・ ・ ・ ・ ・ ・ ・ ・ ・
香 桂v金 ・v金 ・ ・ 桂 香
                                                        • +
先手:谷川浩司 先手の持駒:銀二 歩四  手数=171 ▲6二角成 まで *第44期王位戦第4局 後手番

それぞれの意味は以下の通りです。なお、駒落ちの場合は「先手」は「下手」、「後手」は「上手」に置き換えられます。

盤面部分

" 9 8 7 6 5 4 3 2 1"から2つ目の"+---------------------------+"までの記述で将棋盤面を表します。" ・"(半角空白+「・」)で空の升目を表し、" 駒"(半角空白+「玉飛龍角馬金銀全桂圭香杏歩と」のいずれか)で先手の駒を、"v駒"(半角小文字v+駒)で後手の駒を表します。

対局者名

"先手:"または"後手:"(コロンは全角)から改行までの文字列で先手方または後手方の対局者名を表します。なお、対局者名は79バイトが上限のようです。

持駒

"先手の持駒:"または"後手の持駒:"(コロンは全角)から改行までの文字列で先手方または後手方の持駒を表します。

"駒[数] "(「飛角金銀桂香歩」のいずれか+漢数字(「一」は省略)+全角空白)で持駒を表します。行末にも全角空白が出力されることに注意して下さい。

持駒がない場合には、"なし"。

手数

"手数=半角数字 着手 まで"という形式です。半角数字が0のとき、着手は省略されます。半角数字と着手の間、および着手と"まで"の間の空白は、2つの半角空白です。

コメント

行頭の*から改行までの文字列は、盤面に関するコメントです。コメントが改行を含む場合には、複数並べられます。

手番

後手番の場合、「後手番」と出力されます。先手番の場合、何も出力されません。