Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

KIF 形式

KIF(Kifu)形式は、柿木将棋や「Kifu for Windows」シリーズで採用されている、人間が読みやすい棋譜ファイル形式です。対局情報や指し手を日本語表記で記録し、コメントも自由に付加できます。

公式仕様

概要

KIF形式は以下の特徴を持ちます:

  • テキストファイル形式で編集が容易
  • 日本語表記により人間が読みやすい
  • コメント機能が充実
  • しおり機能で特定局面を記録
  • 詰将棋情報にも対応

ファイル構造

KIF棋譜ファイルは以下の要素で構成されます:

  1. コメント行(主に * で始まる)
  2. 対局情報(手合割、対局者名など)
  3. 開始局面(駒落ち・詰将棋の場合)
  4. 指し手と消費時間
  5. 指し手のコメント(* で始まる)
  6. しおり(& で始まる)

文字コードと改行コード

  • 拡張子 .kifShift-JIS
  • 拡張子 .kifuUTF-8
  • 改行コード:使用OSの標準(Windowsなら CR+LF)

基本表記

コメント行

先頭が * で始まる行はコメントとして扱われます:

* ---- Kifu for Windows V3.53 棋譜ファイル ----
* このファイルは柿木将棋で作成されました

コメント行はファイルのどこに挿入されても構いません。

rsshogi の parser では、同一手に続く複数のコメント行を \n 区切りで 1 つの 指し手ノード annotation に保持します。初手前の連続コメントは開始局面コメントとして Record.initial_comment / Record::initial_comment() に保持されます。 parser は実務互換のため '... 形式もコメントとして受理します。 備考:... はコメント行ではなくメタデータとして扱い、 RecordMetadata.comment に保持されます。

手合割

手合割:平手

対応する手合割:

  • 平手
  • 香落ち、右香落ち
  • 角落ち
  • 飛車落ち
  • 飛香落ち
  • 二枚落ち、三枚落ち、四枚落ち、五枚落ち、左五枚落ち
  • 六枚落ち
  • 左七枚落ち、右七枚落ち
  • 八枚落ち、十枚落ち
  • その他

省略時は平手と判断されます。

対局者名

先手:先手の対局者名
後手:後手の対局者名
下手:下手の対局者名
上手:上手の対局者名

対局情報

(キーワード): で始まる情報を追加できます:

開始日時:1999/07/15(木) 19:07:12
終了日時:1999/07/15(木) 19:07:17
棋戦:第68期順位戦A級
戦型:矢倉
表題:注目の一局
持ち時間:各6時間
秒読み:30秒
消費時間:123▲234△
場所:東京・将棋会館
掲載:将棋世界 2019年7月号
備考:備考欄
先手省略名:羽生
後手省略名:藤井
記録係:記録係の名前

標準対局情報

キーワード説明必須
開始日時対局開始日時(対局日 も可)-
終了日時対局終了日時-
棋戦棋戦名-
戦型戦型名-
表題棋譜の表題-
持ち時間持ち時間-
秒読み秒読みの秒数-
消費時間消費時間の記録-
場所対局場所-
掲載掲載誌-
備考備考-
先手省略名局面図の印刷用-
後手省略名局面図の印刷用-
記録係記録係の名前-

日付形式

開始日時・終了日時は 1999/07/15 形式で日付を記録する必要があります。

秒読み形式

秒読み:30秒

詰将棋情報

詰将棋の場合、以下の情報を記録できます:

作品番号:123
作品名:鳳凰
作者:作者名
発表誌:詰将棋パラダイス
発表年月:2019年7月
出典:詰将棋パラダイス 2019年7月号
手数:99手詰
完全性:完全作
分類:中編
受賞:看寿賞
備考:対局情報としても使われる

指し手の表記

基本形式

<手番><移動先座標><駒><装飾子><移動元座標>

手番

  • :先手(下手)
  • :後手(上手)

※現在のKIF形式では手番は省略されています。

移動先座標

  • <X座標><Y座標>:全角数字(例:2六
  • 同 または:直前の指し手の移動先

X座標は全角アラビア数字 、Y座標は全角漢数字 で表記します。

「同」の後には通常、全角空白が続きますが、無い場合もあります。

駒名(全角):

表記成駒表記
成香成香 /
成桂成桂 /
成銀成銀 /
--
/
--

※成銀を「全」、成桂を「圭」、成香を「杏」で表す場合もあります(詰将棋パラダイスでも使用)。

装飾子

  • :駒を打つ場合(必須
  • :駒が成る場合
  • 不成:成らない場合(表記しない

移動元座標

(11)(99) のように、括弧で囲んだ半角2桁の数字で表記します。

指し手の例

1 7六歩(77)
2 3四歩(33)
3 2六歩(27)
4 8四歩(83)
5 2五歩(26)
6 8五歩(84)
7 7八金(69)
8 3二金(41)
9 2四歩(25)
10 同 歩(23)
11 同 飛(28)
12 2三歩打
13 2八飛(24)
14 8六歩(85)
15 同 歩(87)
16 同 飛(82)

消費時間

指し手と同じ行に、消費時間を記述します:

1 7六歩(77)   ( 0:16/00:00:16)
2 3四歩(33)   ( 0:00/00:00:00)

形式:( M:SS/HH:MM:SS)

  • 最初の数字:その1手の消費時間(分:秒)
  • 次の数字:累積の消費時間(時:分:秒)

消費時間は省略可能です。

終局・中断の表記

通常の指し手以外に、以下の表記があります:

表記意味
中断対局中断
投了手番側が投了(消費時間を記録)
持将棋持将棋
最大手数最大手数到達による引き分け
千日手千日手(消費時間は0)
切れ負け時間切れで負け
反則勝ち直前の手が反則
反則負け手番側の反則負け
入玉勝ち入玉宣言で勝ち
不戦勝先手(上手)の不戦勝
不戦敗先手(上手)の不戦敗
詰み詰み(主に詰将棋)
不詰不詰(主に詰将棋)

入玉宣言について

  • 入玉宣言で持将棋になった場合は 持将棋 とする
  • 入玉宣言で条件を満たさず負けた場合は 反則負け とする

まで...手で... の要約行について、rsshogi では までN手で最大手数までN手で持将棋 をそれぞれ DRAW_BY_MAX_PLIES / DRAW_BY_IMPASSE として解釈します。 終局行や要約行が欠けた棋譜も受理でき、その場合は main_terminal == None / result == GameResult::Invalid として保持します。

rsshogi の実務互換メモ

  • exporter は ShogiHome/tsshogi 系の読み手と shogi-validator を意識した整形を行います。
  • 変化手順と終局要約 (まで...) が両方ある場合は、変化:N手 ブロックを先に、 終局要約を最後に出力します。これは export → parse の round-trip で main_terminal を保持しやすくするためです。
  • 指し手行末尾の (<elapsed>/<total>) 形式の消費時間も parser が指し手ノード annotation として取り込みます。
  • 終局特殊手がない Recordto_kif() すると、終局行と まで... 要約は出力されません。
  • 指し手表記では 成香 / 成桂 / 成銀 を使い、盤面図では / / を使い分けます。
  • EngineInfo.eval を持つ指し手は **評価値=... 行として出力されます。

開始局面

詰将棋や任意の局面から始まる棋譜は、指し手の前に開始局面が付きます。

初期配置から始まる棋譜(駒落ちを含む)は、開始局面を省略できます。

開始局面の例

後手の持駒:飛 角 金二 銀二 桂二 香二 歩十五
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香v桂 ・ ・ ・ ・ ・v桂v香|一
| ・ ・ ・ ・ ・ ・ ・v玉 ・|二
| ・ ・ ・ ・ ・ ・v金v銀v歩|三
|v歩v歩v歩v歩v歩v歩 ・v歩 ・|四
| ・ ・ ・ ・ ・ ・v歩 ・v歩|五
| ・ ・ 歩 ・ ・ ・ ・ ・ ・|六
| 歩 歩 ・ 歩 歩 歩 歩 歩 歩|七
| ・ ・ ・ ・ ・ ・ ・ 飛 ・|八
| 香 桂 ・ ・ 玉 金 銀 桂 香|九
+---------------------------+
先手の持駒:銀 歩
手数----指手---------消費時間--
   1 2四歩(25)

指し手のコメント

各指し手の後に * で始まる行を追加すると、その指し手に対するコメントになります:

1 7六歩(77)
*矢倉を目指す
2 3四歩(33)
*相矢倉の構え

初手の前のコメントは、開始局面のコメントとなります。

複数行のコメントも可能です:

3 2六歩(27)
*飛車先の歩を突く
*攻めの形を作る

しおり

& で始まる行は、その前の手を指した局面に対するしおりを示します:

10 7七銀(78)
&矢倉完成

しおり名は & の後に記述します。

変化手順(分岐)

KIF形式では、変化手順を 変化:N手 の形式で記録できます:

15 3七銀(48) 16 4四角(22)

変化:15手
  15 4八銀(59)
*別の構想
  16 3三桂(21)

変化手順は 本手順の N 手目からの分岐として解釈されます。

ファイル例

# ---- Kifu for Windows V3.53 棋譜ファイル ----
開始日時:1999/07/15(木) 19:07:12
終了日時:1999/07/15(木) 19:07:17
手合割:平手
先手:先手の対局者名
後手:後手の対局者名
手数----指手---------消費時間--
   1 7六歩(77)   ( 0:16/00:00:16)
   2 3四歩(33)   ( 0:00/00:00:00)
   3 中断         ( 0:03/ 0:00:19)

rsshogi での対応状況

サポート済み

  • ✅ KIF形式のパース
  • ✅ 基本的な棋譜情報の読み込み
  • ✅ 平手・駒落ち局面の解析
  • ✅ 指し手と消費時間の解析
  • ✅ コメントの解析
  • ✅ 変化手順(分岐)の解析
  • ✅ 要約行(まで...手で最大手数 / まで...手で持将棋)の終局判定
  • ✅ KIF形式への出力
  • ✅ 分岐を含む出力

制限事項

  • ⚠️ しおり機能は未対応
  • ⚠️ 評価値の出力は未対応

KI2形式との関係

KI2形式は、KIF形式を簡略化したもので、以下の違いがあります:

  • 移動元座標を省略(棋譜が短くなる)
  • 1行に複数の指し手を記録できる
  • 人間が読む際はさらに読みやすい

詳細は KI2形式 を参照してください。

関連リンク

関連項目

  • CSA形式:コンピュータ将棋協会の標準形式
  • JKF形式:JSON形式の棋譜フォーマット
  • KI2形式:簡易棋譜形式