FEEN:将棋とその多彩な変種のための新しい盤面記法
はじめに
将棋ファンの皆さん、こんにちは!
将棋の世界は驚くほど多様です。標準的な本将棋だけでなく、どうぶつしょうぎ、五六将棋、京都将棋、中将棋、小将棋、大将棋、天竺将棋、大大将棋、摩訶大大将棋、泰将棋、大局将棋、四国将棋など、様々な変種が存在します。
これらのゲームの盤面位置をデジタルで表現したいとき、どのような記法を使えばよいでしょうか?
今回は、FEEN(Field Expression Encoding Notation)という、ルールに依存しない汎用的な盤面記法をご紹介します。
FEENとは?
FEENは、二人対戦のターン制ボードゲームにおける静的な盤面位置を表現するためのテキストベースの記法です。
FEENの設計思想は非常にシンプルです:
「盤上に何があるか」だけを記述し、「どう動けるか」には一切関与しない
このルール非依存性が、FEENの主な特徴です。
将棋変種における課題
将棋とその変種を扱う際、既存の記法ではいくつかの課題があります:
1. 持ち駒の表現
将棋系ゲームの特徴である「持ち駒」をどう表現するか?FEENでは、盤面と持ち駒を明確に分離して記述できます。
2. 成り駒の表現
駒の成り状態をどう示すか?FEENでは、状態修飾子(+や-)を使って、成り・不成を明確に区別できます。
3. 多様な盤面サイズ
9×9の本将棋から、12×12の中将棋、さらには36×36の大局将棋まで、様々なサイズに対応する必要があります。FEENはどんなサイズの盤面でも表現可能です。
4. 玉将の表現
どの駒が「王」(ゲーム終了条件に関わる駒)なのかを明示したい場面があります。FEENでは、終端マーカー(^)でこれを示せます。
FEENの構造
FEEN文字列は3つのフィールドで構成されます:
<盤面配置> <持ち駒> <スタイル・手番>
実例:本将棋の初期配置
lnsgk^gsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGK^GSNL / S/s
これを分解してみましょう:
第1フィールド:盤面配置
lnsgk^gsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGK^GSNL
- 大文字 = 先手の駒(
LNSGK^GSNLなど) - 小文字 = 後手の駒(
lnsgk^gsnlなど) - 数字 = 連続する空きマスの数(
9は9マス空き) -
/= 段の区切り -
^= 終端駒マーカー(玉将を示す)
駒の略称:
-
K/k= 玉将(King) -
R/r= 飛車(Rook) -
B/b= 角行(Bishop) -
G/g= 金将(Gold) -
S/s= 銀将(Silver) -
N/n= 桂馬(kNight) -
L/l= 香車(Lance) -
P/p= 歩兵(Pawn)
第2フィールド:持ち駒
/
初期配置では持ち駒がないため、両手とも空欄です。スラッシュ(/)の左側が先手の持ち駒、右側が後手の持ち駒を表します。
第3フィールド:スタイル・手番
S/s
- 大文字(
S)= 先手のスタイル識別子(Shogi) - 小文字(
s)= 後手のスタイル識別子 - 左側が現在の手番を持つプレイヤー
この例では、先手(S)の手番であることを示しています。
実例:1手進んだ局面(▲7六歩)
lnsgk^gsnl/1r5b1/ppppppppp/9/9/2P6/PP1PPPPPP/1B5R1/LNSGK^GSNL / s/S
注目すべき変化:
- 盤面で
Pが7六に移動(2P6の部分) - 第3フィールドが
s/Sに変化 → 後手(s)の手番に
FEENの特徴まとめ
| 特徴 | 説明 |
|---|---|
| ルール非依存 | 駒の動き方を一切仮定しない |
| 持ち駒対応 | 手持ちの駒を明確に記述可能 |
| 成り駒対応 |
+(成り)で状態を表現 |
| 終端駒マーカー |
^で玉将などの終端駒を明示 |
| 複数終端駒 | 各陣営に複数の終端駒がある変種にも対応 |
| 柔軟な盤面サイズ | 任意のサイズに対応 |
| 多次元対応 | 3D将棋なども表現可能(//で次元区切り) |
| 正規形式 | 仕様上、同一局面は同一文字列になるよう定義されている |
3次元盤面も表現可能
FEENの設計では、//(二重スラッシュ)を使って次元を区切ることで、3次元以上の盤面も表現できます。
例えば、5×5×5の3Dチェス(Raumschach)の初期配置:
+rn+k^n+r/+p+p+p+p+p/5/5/5//buqbu/+p+p+p+p+p/5/5/5//5/5/5/5/5//5/5/5/+P+P+P+P+P/BUQBU//5/5/5/+P+P+P+P+P/+RN+K^N+R / R/r
//が各層(レベル)の区切りを示しています。
将棋以外のゲームにも対応
FEENは将棋専用の記法ではありません。様々なボードゲームに対応できる汎用フォーマットです。
西洋チェス
-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/c
チェスでは+修飾子を使って、キャスリング権のある駒(初期位置から動いていない駒)を表現できます。スタイル識別子はC(Chess)です。
持ち駒のある局面(チェス例)
r1bq1b1r/+p+p+p+p1k^+p+p/2n2n2/4p3/4P3/5N2/+P+P+P+P1+P+P+P/-RNBQK^2+R p/B C/c
タイのマークルック
rnsmk^snr/8/pppppppp/8/8/PPPPPPPP/8/RNSK^MSNR / M/m
スタイル識別子はM(Makruk)。8×8の盤面で、独自の駒構成を持つタイの伝統的なチェス変種です。
中国シャンチー(象棋)
rheag^aehr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RHEAG^AEHR / X/x
スタイル識別子はX(Xiangqi)。9×10の盤面を持つ中国将棋です。G^/g^が将/帥(終端駒)を示しています。
その他の対応可能なゲーム
FEENは以下のようなゲームにも対応できます:
- 韓国チャンギ(장기) - シャンチーと似た構造を持つ韓国将棋
- 囲碁 - 19×19の盤面と大量の石も表現可能
- 各種フェアリーチェス - カスタムルールの変種
- ハイブリッドゲーム - 異なるスタイルのプレイヤー同士の対局
スタイルの柔軟性
FEEN第3フィールドでは、各プレイヤーが異なる「スタイル」を持つことを表現できます。
例えば、チェス対マークルックのハイブリッド対局:
rnsmk^snr/8/pppppppp/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/m
先手はチェススタイル(C)、後手はマークルックスタイル(m)という実験的な対局も記述可能です。
リファレンス実装
FEENの仕様とツールは以下で公開されています:
まとめ
FEENは、将棋とその豊かな変種の世界を統一的に表現するための記法です。
将棋ファミリー:
- 本将棋、どうぶつしょうぎ、五六将棋、京都将棋
- 中将棋、小将棋、大将棋、天竺将棋
- 大大将棋、摩訶大大将棋、泰将棋、大局将棋、四国将棋
世界のチェスファミリー:
- 西洋チェス、マークルック(タイ)
- シャンチー(中国)、チャンギ(韓国)
すべてを一貫した記法で表現できます。
ルールに依存しない設計により、持ち駒、成り駒、終端駒、さらには3次元盤面まで、様々な要素を統一的に扱えます。
将棋ソフトウェアの開発者、研究者、愛好家の皆さんにとって、FEENが新しい可能性を開く一助となれば幸いです。