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

KI2 形式

KI2形式は、KIF形式をさらに簡略化した棋譜記述形式です。移動元座標を省略し、1行に複数の指し手を記録できるため、人間が読む際に読みやすくなっています。

公式仕様

概要

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

  • 移動元座標を省略し、より簡潔な表記
  • 1行に複数の指し手を記録可能
  • 人間が読みやすい自然な日本語表記
  • 棋譜入力が容易
  • KIF形式と同様の対局情報を保持

KIF形式との違い

主な違い

項目KIF形式KI2形式
移動元座標あり 7六歩(77)なし 7六歩
1行の指し手数1手複数可能
ファイルサイズやや大きい小さい
可読性良いより良い
解析の複雑さ単純やや複雑(局面を進める必要)

指し手の表記比較

**KIF形式:**
   1 7六歩(77)
   2 3四歩(33)
   3 2六歩(27)
   4 8四歩(83)
   5 2五歩(26)
   6 8五歩(84)
**KI2形式:**
▲7六歩 △3四歩 ▲2六歩 △8四歩 ▲2五歩 △8五歩

基本表記

文字コードと改行コード

KIF形式と同様:

  • 拡張子 .ki2Shift-JIS または UTF-8
  • 改行コード:使用OSの標準

手番記号

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

KIF形式と異なり、KI2形式では手番記号が必須です。

指し手の表記

形式:<手番><移動先座標><駒><装飾子>

▲7六歩       # 先手 7六歩
△3四歩       # 後手 3四歩
▲2二角成     # 先手 2二角成
△同 銀       # 後手 同銀
▲5五角打     # 先手 5五角打

移動先座標

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

装飾子

  • :駒を打つ場合
  • :駒が成る場合
  • 不成:成らない場合(通常は省略)
  • //////:同種の駒を区別

駒の区別

同じ種類の駒が複数ある場合、以下の記号で区別します:

▲5八金右     # 右側の金
▲4八金左     # 左側の金
▲6七金寄     # 寄る金
▲6八金引     # 引く金
▲6九金上     # 上がる金
▲7七銀上     # 銀が上に移動

駒の相対位置と動作

日本将棋連盟の公式な棋譜表記方法に基づき、以下のように区別します:

駒の相対位置:

  • :指す側から見て右側の駒
  • :指す側から見て左側の駒
  • :金銀が横に並んでいる場合のみ、中央の駒(例外的な表記)

駒の動作:

  • :1段以上、上に動く
  • :1マス以上、横に動く
  • :1段以上、下に動く

複数の駒がある場合の優先順位

  1. 動作が異なる場合:動作(//)を優先
    • 例:82金上82金寄
  2. 動作が同じ場合:相対位置(/)で区別(動作は省略)
    • 例:81金左81金右
  3. 3枚以上の場合:動作と相対位置を組み合わせ
    • 例:88と左上28銀左引

竜・馬の特殊ルール

竜や馬が2枚以上ある場合、動作を優先しますが、は使わず/ で記入します:

▲82竜引     # 引く竜が1枚の場合
▲82竜上     # 上がる竜が1枚の場合
▲88竜左     # 左側の竜
▲88竜右     # 右側の竜

詳細は日本将棋連盟の公式表記方法を参照してください。

1行複数手の記述

KI2形式の最大の特徴は、1行に複数の指し手を記述できることです:

▲7六歩 △3四歩 ▲2六歩 △8四歩 ▲2五歩 △8五歩
▲7八金 △3二金 ▲2四歩 △同 歩 ▲同 飛 △2三歩打
▲2八飛 △8六歩 ▲同 歩 △同 飛

半角空白または全角空白で区切ります。

ファイル構造

KIF形式とほぼ同じ構造を持ちます:

  1. コメント行(# で始まる)
  2. 対局情報(手合割、対局者名など)
  3. 開始局面(必要な場合)
  4. 指し手
  5. 指し手のコメント(* で始まる)

対局情報

KIF形式と同じ形式で記述します:

開始日時:1999/07/15(木) 19:07:12
終了日時:1999/07/15(木) 19:07:17
手合割:平手
先手:先手の対局者名
後手:後手の対局者名
棋戦:第68期順位戦A級

詳細は KIF形式のドキュメント を参照してください。

終局・中断の表記

KIF形式と同様の表記を使用します:

まで123手で先手の勝ち
まで56手で後手の勝ち
まで77手で中断
まで88手で千日手

終局表記の種類

表記意味
先手の勝ち / 後手の勝ち投了による勝敗
中断対局中断
千日手千日手
持将棋持将棋
最大手数最大手数到達による引き分け
切れ負け時間切れ
反則勝ち / 反則負け反則による勝敗
入玉勝ち入玉宣言勝ち
詰み詰み(詰将棋)
不詰不詰(詰将棋)

コメント

指し手のコメントは * で始まる行で記述します:

▲7六歩 △3四歩
*相矢倉の出だし
▲2六歩 △8四歩
*飛車先を受ける

変化手順(分岐)

KIF形式と同様に、変化:N手 の形式で変化手順を記録できます:

▲7六歩 △3四歩 ▲2六歩 △8四歩 ▲2五歩 △8五歩

変化:5手
▲7八金 △8五歩
*別の構想

rsshogi の実務互換メモ

  • exporter は KIF 系ツールとの相互運用を重視し、ShogiHome/tsshogi 系の読み手と shogi-validator に寄せた順序・整形を採用します。
  • 変化手順と終局要約 (まで...) が両方ある場合は、変化ブロックを先に、 終局要約を最後に出力します。
  • 終局行や要約行が欠けた棋譜も受理でき、その場合は main_terminal == None / result == GameResult::Invalid として保持します。
  • 終局特殊手がない Recordto_ki2() すると、終局要約は出力されません。
  • EngineInfo.eval を持つ指し手は **評価値=... 行として出力されます。

ファイル例

–– Kifu for Windows V3.53 棋譜ファイル ––

開始日時:1999/07/15(木) 19:07:12 終了日時:1999/07/15(木) 19:07:17 手合割:平手 先手:先手の対局者名 後手:後手の対局者名 棋戦:第68期順位戦A級 戦型:矢倉

▲7六歩 △3四歩 ▲2六歩 △8四歩 ▲2五歩 △8五歩 ▲7八金 △3二金 ▲2四歩 △同 歩 ▲同 飛 △2三歩打 ▲2八飛 △8六歩 ▲同 歩 △同 飛 ▲3四飛 △8八角成 ▲同 銀 △2八角打 ▲7七角 △8二飛 ▲3三角成 △同 桂 ▲3一飛成 △8六飛 ▲8七歩 △8一飛 ▲4一龍 △7一飛 *先手優勢

まで35手で中断

KI2形式の解析

KI2形式の解析には、局面を進めながら指し手を特定する必要があります:

解析の流れ

  1. 初期局面を設定(手合割に基づく)
  2. 指し手を読み取る▲7六歩 など)
  3. 合法手を生成して、表記に一致する手を探す
  4. 局面を進める
  5. 次の手に進む(繰り返し)

曖昧性の解決

同種の駒が複数ある場合、装飾子(//など)で判別します:

▲5八金右     # 右側の金が5八に移動
▲4八金左     # 左側の金が4八に移動

「同」の処理

は直前の手の移動先を参照します:

▲2四歩       # 2四に歩が移動
△同 歩       # 同じく2四に歩が移動(取る)
▲同 飛       # 同じく2四に飛が移動(取る)

rsshogi での対応状況

サポート済み

  • ✅ KI2形式のパース(Rust / Python)
  • ✅ KI2形式への出力(Rust / Python)
  • ✅ 要約行(まで...手で最大手数 / まで...手で持将棋)の終局判定
import rsshogi as rs

# KI2 を読み込む
record = rs.record.Record.from_ki2_str(ki2_text)

# KI2 に変換して出力
ki2_text = record.to_ki2()
print(ki2_text)

KIF形式への変換

KI2形式からKIF形式への変換は、局面を進めながら移動元座標を補完することで実現できます。

rsshogi では、KI2をパースして Record にした後、KIF形式で出力することで変換できます:

use rsshogi::records::formats::{ki2, kif};

let ki2_text = "▲7六歩 △3四歩 ▲2六歩";
let record = ki2::parse_ki2_str(ki2_text)?;
let kif_text = kif::export_kif(&record)?;

利点と制約

利点

  • 人間が読みやすい:自然な日本語表記
  • ファイルサイズが小さい:座標情報の省略
  • 入力が容易:簡潔な記述

制約

  • 解析が複雑:局面を進める必要がある
  • 曖昧性の解決が必要:同種の駒を区別
  • プログラムでの扱いがやや難しい

関連リンク

関連項目

  • KIF形式:移動元座標を含む詳細な形式
  • CSA形式:コンピュータ将棋協会の標準形式
  • JKF形式:JSON形式の棋譜フォーマット