🌮

json-kifu-formatを使って独自の将棋の棋譜プレーヤーを作る

公開日
1日前
2025-10-05
更新履歴

概要

Kifu for JSがReact 19で動かないので作ることにした。React 19で動く修正コードのプルリクエストを出したりするのがカッコ良いのだろうが。

json-kifu-format と shogi.js というライブラリがとても良いので自分でプレーヤーを作る方が簡単。将棋の駒の動き、棋譜データからの盤面情報の構築など全てやってくれる。

この記事では自分で将棋プレーヤーを作ろうという時に参考になるであろう情報を残しておく。

JKFPlayer

  • 棋譜のテキスト・ファイルをパースして盤面や持ち駒の状態をオブジェクト化する
  • JKFPlayer.parse でオブジェクトを作って棋譜を操作することで、盤面や持ち駒の状態が更新される
  • JKFPlayerにはstaticな便利メソッドも豊富にある
const kifuText = `
...

手数----指手---------消費時間--
   1八飛(28)   (00:04/00:00:04)
*▲戦型:四間飛車
*▲備考:振り飛車
   2四歩(33)   (00:17/00:00:17)

...
`;

const player = JKFPlayer.parse(kifuText.trim());

盤面の情報

player.shogi.board に読み込んだ棋譜の初期盤面が入っている。Piece の二次元配列。

この情報を元にプレーヤーの駒の配置を表示する。

この情報は player.forward();player.backward(); などで手数を進めたり戻したりすると変更される。

持ち駒の情報

player.shogi.hands に持ち駒の情報が入っている。Piece の二次元配列。

player.shogi.hands[0] は先手の持ち駒。player.shogi.hands[1] は後手の持ち駒。