0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ルール非依存の盤面記法「FEEN」で将棋変種を統一的に扱う

0
Last updated at Posted at 2025-12-27

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の仕様とツールは以下で公開されています:

リソース URL
仕様書 https://sashite.dev/specs/feen/1.0.0/
使用例 https://sashite.dev/specs/feen/1.0.0/examples/
Ruby実装 https://github.com/sashite/feen.rb
Elixir実装 https://github.com/sashite/feen.ex
ビューワー https://sashite.github.io/feen-viewer.html

まとめ

FEENは、将棋とその豊かな変種の世界を統一的に表現するための記法です。

将棋ファミリー:

  • 本将棋、どうぶつしょうぎ、五六将棋、京都将棋
  • 中将棋、小将棋、大将棋、天竺将棋
  • 大大将棋、摩訶大大将棋、泰将棋、大局将棋、四国将棋

世界のチェスファミリー:

  • 西洋チェス、マークルック(タイ)
  • シャンチー(中国)、チャンギ(韓国)

すべてを一貫した記法で表現できます。

ルールに依存しない設計により、持ち駒、成り駒、終端駒、さらには3次元盤面まで、様々な要素を統一的に扱えます。

将棋ソフトウェアの開発者、研究者、愛好家の皆さんにとって、FEENが新しい可能性を開く一助となれば幸いです。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?