RPB Chessboardでチェスをウェブ再現【プラグインのショートコードの書き方】

Uncategorized

RPB Chessboardは、チェスの棋譜や盤面をウェブページに表示するためのWordPressプラグインである。

WordPressのエディタで文中にショートコードを記述することで、上の様なチェスボードをウェブページに表示させることができる。

そして、このチェスボードはウェブページ上で棋譜どおりに駒の動きを再現することが可能となっている。

RPB Chessboardには、次の知識が必要である。

  • ショートコード:RPB Chessboardのショートコード。棋譜と盤面を表示したい箇所(文中)に記述する。
  • PGN:チェスの棋譜のフォーマット。駒の動きを手数とともに記述する。棋譜のコメントを付けることができる
  • マーク:RBP Chessboardのマークの記法。ボード上にマーク(矢印など)できる。
  • FEN:チェスの盤面のフォーマット。駒の配置や手番などゲーム盤面の状態を記述する。

FENを使えば、ゲーム途中の盤面を再現したり、詰めチェスの盤面を作成することも可能となる。

ショートコード

[pgn_compat flip="false" initial_selection="start"]

1.e4 e5 2.Nf3 Nc6 3.Bc4 *

[/pgn_compat]

このショートコードで下のチェスボードが表示される。

RPB Chessboardを用いてウェブページにチェスボードを表示するには、囲み型のショートコード[pgn_compat]を使用する。

  • pgn_compat:ショートコード。
  • flip:”true”にすると黒番の視点。
  • initial_selection:ページ読み込み時に表示させる手番。

チェスボードの視点(flip)

[pgn_compat flip="true"]

[/pgn_compat]
意味
"false" 白番視点
"true" 黒番視点

RPB Chessboardで表示されるチェスボードの視点(白番視点、黒番視点)を指定できる。

チェスボードのデフォルトは白番視点(白駒が下方)なので、白番の視点で良いなら記述しなくてもよい。

黒番視点(黒駒が下方)にするなら、flip="true"とする。

読み込み時の手数と手番(initial_selection)

[pgn_compat initial_selection="3b"]

[/pgn_compat]
意味
"start" PGNの手数・手番の最初
"数値w" 数値指定した手数の白番
"数値b" 数値指定した手数の黒番
"end" PGNの手数・手番の最後

ページ読み込み時のRPB Chessboardで表示されるチェスボードの手数と手番を指定できる。

たとえば、3手目の黒番の状態をページ読み込み時に表示したいなら、initial_selection="3b"とする。

PGN

[pgn_compat flip="false" initial_selection="start"]

1.e4 e5 2.Nf3 Nc6 3.Bc4 d6 4.Nc3 Bg4 5.Nxe5 Bxd1 6.Bxf7+ Ke7 7.Nd5# 1-0

[/pgn_compat]

このショートコードで下のチェスボードが表示される。

PGN(Portable Game Notation)は、チェスの棋譜のフォーマットである。上のショートコード内で赤字で示されている文字列がPGNである。

PGNでは、手数ごとに白黒それぞれの駒の動きを記述する。

すなわちRPB Chessboardは、PGNで記された棋譜をもとにチェスボードを再現するプラグインというわけである。

記法

1.e4 e5 2.Nf3 Nc6 3.Bc4 d6 4.Nc3 Bg4 5.Nxe5 Bxd1 6.Bxf7+ Ke7 7.Nd5# 1-0
意味
N ナイト(kNight)
B ビショップ(Bishop)
R ルーク(Rook)
Q クイーン(Queen)
K キング(King)

駒を表す英字は大文字。

ポーンについては、駒を表す英字を省略する。(もし記述するならPであるが、一般的には省略する。)つまり、座標のみが書かれているものは必然的にポーンを指すことになる。

チェス盤の座標
ランク
8
7
6
5
4
3
2
a1 b c d e f g h
ファイル

座標を表す英数字は小文字。PGNでは、駒を表す英字に続けて移動先の座標を記述する。

チェスの座標は、白番視点で盤の左下a1を基点にして、ファイル(列=縦)a~h、ランク(行=横)1~8で表される。

たとえば、白キング前のポーンの初期位置の座標はe2となる。1手目で白番がこのポーンをe4に動かしたあとは「1.e4」と表される。続いて黒番がポーンをe5に動かしたあとは「1.e4 e5」と表される。

なお、黒番視点(黒駒が下方)で座標を記す場合でも、座標は常に白番視点(白駒が下方)で書き表す。

駒の動き・状況
意味
x 駒取り
O-O キャスリング(キングサイド)
O-O-O キャスリング(クイーンサイド)
= ポーンの昇格
+ チェック
# チェックメイト
-- 手番のパス

駒が移動した際に駒を取った場合は、座標の前にxエックスを記述する。

たとえば、ナイトがe5に移動して駒を取った場合は、Nxe5となる。(何の駒を取ったかというのは書く必要がない。棋譜を辿ると判るから。)

キャスリングの記述は、大文字のOオーをハイフンで繋げて記述する。

ポーンの昇格は=で示す。座標のあとに何の駒に変身したかを記述する。たとえば、g8に進んだポーンがクイーンに昇格した場合は、g8=Qとなる。

駒の動きを示さない場合は--と記述する。(ただし、チェックされている状況ではエラーとなる。)

ゲーム勝敗

1.e4 e5 2.Nf3 Nc6 3.Bc4 d6 4.Nc3 Bg4 5.Nxe5 Bxd1 6.Bxf7+ Ke7 7.Nd5# 1-0
ゲーム勝敗
意味
1-0 白番の勝ち
0-1 黒番の勝ち
1/2-1/2 ドロー
* 勝敗なし

RPB Chessboardでは、PGNの後尾にゲーム勝敗を記述する必要がある。この記述を忘れるとエラーとなる。

PGNは、必ずしもゲーム終了(チェックメイトまたは投了)まで記述しなくてもよい。ゲーム途中までを表示したい場合もある。

ゲーム勝敗とは関係のない棋譜、たとえば定跡などの棋譜なら、PGNの後尾に*を記述しておく。

コメント

1.e4 e5 2.Nf3 Nc6 3.Bc4{イタリアンゲーム} d6 4.Nc3 Bg4 5.Nxe5 Bxd1{トラップ} 6.Bxf7+ Ke7 7.Nd5#{チェックメイト} 1-0

{}で括ってコメントを挿入できる。コメントは、各手番の後尾に記述する。

このコメントは、PRB Chessboardの棋譜にも表示される。

マーク

[pgn_compat flip="false" initial_selection="start"]

1.e4 e5 2.Nf3 Nc6 3.Bc4 d6 4.Nc3 Bg4 5.Nxe5{トラップ[%cal Bg4d1][%ctl B(circle)d1]} Bxd1 6.Bxf7+ Ke7 7.Nd5#{チェックメイト[%csl Re7][%ctl R(times)e8,R(times)d7,R(times)e6,R(times)f6]} 1-0

[/pgn_compat]

このショートコードで下のチェスボードが表示される。

RPB Chessboardでは、チェスボードにマーク(矢印や文字など)を表示させることができる。駒の動きや、説明のための記号として用いられる。

マークを表示するための記述は、PGNのコメント内に書く。

  • マス色 [%csl]:マスに色付け。
  • 矢印 [%cal]:マスからマスへ矢印を表示。
  • 文字 [%ctl]:マス内に英数字および記号の1文字を表示。

マークには色を指定する。次の4色から英字(大文字)で記述する。

B(=0044FF)
G(=00EE00)
R(=DD0000)
Y(=DDBB00)

マス色 [%csl]

{死のマス[%csl Gf2,Gf7]}

RPB Chessboardでは、マス(Square)に色を付けることができる。

記述は[%csl 色 座標]とする。たとえば、f7のマスを赤色で表す場合は、[%csl Rf7]となる。

複数の文字を表示する場合は、,カンマ区切りで記述する。

矢印 [%cal]

{フォーク[%cal Bf7d8,Bf7h8]}

RPB Chessboardでは、マスからマスへ矢印(Arrow)を表示できる。

記述は[%cal 色 始点座標 終点座標]とする。たとえば、f7からd8へ青色の矢印を表す場合は、[%cal Bf7d8]となる。

複数の文字を表示する場合は、,カンマ区切りで記述する。

文字 [%ctl]

{チェック[%ctl R(plus)e8]}
表示できる文字
意味
A-Z アルファベット
0-9 数字
(dot)
(circle)
(times)
(plus)

RPB Chessboardでは、マス内に文字(Text)を表示できる。ただし、マス内に表示できるのは1文字だけとなる。

記述は[%ctl 色 文字 座標]とする。たとえば、e8に+マークを表示する場合は、[%ctl R(plus)e8]となる。

複数の文字を表示する場合は、,カンマ区切りで記述する。

FEN

[pgn_compat flip="false" initial_selection="start"]

[FEN "r2q1bnr/ppp1kBpp/2np4/4N3/4P3/2N5/PPPP1PPP/R1BbK2R w KQkq - 0 7"]

7.Nd5# 1-0

[/pgn_compat]

このショートコードで下のチェスボードが表示される。

FEN(Forsyth-Edwards Notation)は、チェスの盤面(駒の配置)のフォーマットである。上のショートコード内で赤字で示されている文字列がFENである。

RPB Chessboardで、ゲーム途中からの駒の動きをチェスボードに表示したいならFENを使うとよい。そのときの駒の配置をFENで記述して、その後の棋譜をPGNで記述する。

なお、チェスの駒の初期配置をFENで表すと下のようになる。

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]

FENは、冒頭で「FEN」を宣言して記述する。以降は、6つの情報をスペース区切りで記述する。

  • 駒の配置
  • 手番
  • キャスリング
  • アンパッサン
  • 50手ルール
  • 手数

駒の配置

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]
FENの駒の表記
意味
R ルーク(Rook)
N ナイト(kNight)
B ビショップ(Bishop)
Q クイーン(Queen)
K キング(King)
P ポーン(Pawn)
1-8 駒が無いマス連続の数

FENでは、チェス盤の左上(a8)から、各ランクを/で区切って8ランク(行)分を記述する。

駒が在るマスはその駒を英字で示す。黒駒は小文字、白駒は大文字で記述する。

駒が無いマスは、その連続を数値で記述する。初期配置の3~6ランクは8マス連続で駒が無いので8と表される。

手番

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]
意味
w 白の手番
b 黒の手番

FENに記した盤面の手番。この手番とは、FENの状態においてこれから駒を動かす人に手番があるということに注意する。(駒を動かし終えた人の手番ではない。)

白番のときの駒配置を示しているならw、黒番のときの駒の配置を示しているならbを記述する。

  • 盤面が、ゲーム開始の状態または黒番の駒移動によって形成された状態→w
  • 盤面が、白番の駒移動によって形成された状態→b

キャスリング

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]
意味
KQkq 初期
K 白キングサイド可能
Q 白クイーンサイド可能
k 黒キングサイド可能
q 黒クイーンサイド可能
- 白黒ともにキャスリング済み又は不可

キャスリングが可能な状態を記述する。

初期配置を示すFENの場合は、すべてのキャスリングが可能であるため、必然的にKQkqとなる。

たとえば、白番がクイーンサイドのルークを動かしているなら、白クイーンサイドのキャスリングを示すQを除いたKkqを記述することになる。

アンパッサン

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]

FENに記した盤面が、アンパッサンできる状況(ポーンが2マス進んだ直後)なら、アンパッサンされるポーンが通過したマスを記述する。

盤面がアンパッサンできない状態のものなら、-を記述する。

50手ルール

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]

50手ルールに対応するための手数を記述する。

ただし、50手ルールが適用される状況は非常に稀なため、通常は意識しなくてよい。RPB Chessboardにおいては、0ゼロを記述しておけばよい。

50手ルールとは

50手連続でポーンが動かされていない、または駒が取られていないときはドローとなるルール。

手数

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]

FENで示した盤面が何手目のものなのかを数字で記述する。

チェスでは、手数を白黒セットで1手と数えることに注意。

RPB Chessboardの使用例

RPB Chessboardは、ゲーム最初からの棋譜を再現できるだけではない。

ゲーム途中の棋譜や、詰めチェスのような盤面も、FENを用いて再現できる。

ゲーム途中を表示する

[pgn_compat flip="false" initial_selection="start"]

[FEN "r1bqkbnr/pppp1ppp/2n5/4p3/4p3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3"]

3.Bc4{イタリアンゲーム} d6 4.Nc3 Bg4 5.Nxe5{トラップ} Bxd1{トラップにかかる} *

[/pgn_compat]

RPB Chessboardで、ゲーム途中からのチェスボードを表示したい場合は、途中の盤面をFENで記述し、その後の棋譜をPGNで記述する。

黒の手番から表示する

[pgn_compat flip="false" initial_selection="start"]

[FEN "r2qkbnr/ppp2ppp/2np4/4N3/2B1P1b1/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 5"]

{リーガルトラップ} 5... Bxd1{トラップにかかる} 6.Bxf7+ Ke7 7.Nd5#{チェックメイト} 1-0

[/pgn_compat]

RPB Chessboardで、手番が黒番の盤面から表す場合は、白番が駒を動かしたその盤面(アプリでは白の手番がハイライトされた状態のとき)をFENで記述する。

PGNには手数に続けて... (点3つと半角スペース)のあとに黒番の動きを記述する。すなわち、白番の動きを点で記述することで、白の手番をパスしている。

なお、ショートコードに記述する読み込み時の手数・手番(initial_selection)は、いつの手数・手番でも構わない。

詰めチェスを表示する

[pgn_compat flip="false" initial_selection="start"]

[FEN "6k1/2p2ppp/4b3/8/p1P1P3/r5P1/4BP1P/3R2K1 w - - 0 25"]

25.Rd8# *

[/pgn_compat]

FENを使えば、詰めチェスの盤面を再現することができる。

詰めチェスの場合は、チェスボード上部に表示される棋譜をCSSなどで隠すとよい。

RPB Chessboardのエラー

PGNにゲーム勝敗の記述がない

PGNで記述した棋譜の最後尾に、ゲーム勝敗の記述がないとエラーになる。

PGNの大文字と小文字を間違えている

  • 白番(大文字)と黒番(小文字)の書き間違い
  • ビショップ(大文字B)とbファイルのポーン(小文字b)の書き間違い

たとえばbファイルのポーンとビショップの書き間違い。bxc4ならbファイルのポーンがc4の駒を取ったことになるが、Bxc4ならビショップがc4の駒を取ったことになる。

手番を間違えている

  • FENに記述した盤面が、PGNの手番と異なっている。
  • FENに記述した手番と、PGNの手番が合致していない。

FENの駒の位置や数が正しくない

駒の位置や数が正しくないとエラーになる。

FENに<wbr />のタグが混入している

[FEN "rnbqkbnr/pppppppp/8/8/8/8/<wbr />PPPPPPPP/RNBQKBNR w KQkq - 0 1"]

FENに余計な文字が入っているとエラーになる。

Chess.comからPGNをエクスポートすると、FENの中に<wbr />のタグが混じっている。

駒を動かすことができない

  • PGNで動きを示した駒が、FENに記述されていない。
  • PGNでキャスリングを示したが、キングの移動マスに攻撃ラインが当たっている。

PGNに記入できる棋譜記号

指し手の評価

指し手の評価
意味
!! 絶妙手
! 好手
!? 勝負手・注目手
?! 奇手
? 緩手・疑問手
?? 大悪手

ゲームの形勢

ゲームの形勢
意味
= 互角
+/= 白やや優勢
=/+ 黒やや優勢
+/- 白優勢
-/+ 黒優勢
+- 白勝勢
-+ 黒勝勢
形勢不明

エラー

Error while analyzing the PGN string.
Unexpected end of text: there is a pending game.

予期しないテキストの終わり方: 保留中のゲームがある状態になっている。

確認

・PGNの末尾にゲーム勝敗が記述されている?

Error while analyzing the PGN string.
Unrecognized character or group of characters.

認識できない文字または文字のグループになっている。

確認

・PGNに余分なスペースが入っている?

Error while analyzing the PGN string.
Invalid move (Bd5+). No B can move to d5.

無効な移動。B(ビショップ)はd5に移動できない。

確認

・駒の記述を間違えている?(bとd・Bとbなど。)
・PGNの座標を間違えている?

Error while analyzing the PGN string.
Invalid move (Rxf8+). The position is not legal.

無効な移動。合法的な配置ではない。

確認

・PGNの座標を間違えている?
・FENでその駒の位置を間違って記述している?
・FENにその駒が記述されている?
・FENで駒配置がチェック状態になっている?(PGNの記述がチェックを放置。)

Error while analyzing the PGN string.
Invalid move (O-O). King-side castling is not legal in the considered position.

無効な移動 (O-O)。検討中の位置ではキング側のキャスリングは合法ではない。

確認

・攻撃が当たっているのにキャスリングしようとしている?
・FENのキャスリングは記述されている?(KQkqでキャスリング可。)

Error while analyzing the PGN string.
Invalid FEN string in the initial position header. Subfield 4 of the FEN string 1st field is unexpectedly short.

初期位置ヘッダーの FEN 文字列が無効。 FENの1番目のフィールドのサブフィールド4が予想外に少ない。(※shortとなっているが多い場合もある。)

確認

・FENの駒数が合計8駒になっていない?(駒が多い、または駒が少ない。)

Error while analyzing the PGN string.
Invalid FEN string in the initial position header. A FEN string must contain exactly 6 space-separated fields.

初期位置ヘッダーのFEN文字列が無効。 FENにはスペースで区切られたフィールドが6つのみ含まれている必要がある。

確認

・FENのフィールド数が間違えている?

Error while analyzing the PGN string.
Invalid move (--). Cannot play a null-move in this position.

無効な移動。この位置ではヌル手はプレイできません。

確認

・チェックされた状況でPGNに--(NULL Move)を記述している?

エラー原因の切り分け

  1. FENだけの状態で、正しく表示されるか確認してみる。(PGNの棋譜部分を消す。ゲーム勝敗は*。)
  2. PGNのエラーを指摘された箇所の前部だけで、正しく表示されるか確認してみる。