マガジン

チェスの一局で動かされる駒の回数:よく動く駒は何か

遊びを見つける

執筆にClaudeを使用しています。

チェスのナイトから枝分かれした影が盤面へ伸び、先読みの候補を表す版画
記事のテーマをもとに制作したAI生成イラスト。

チェスの一局が終わったあと、盤の上でいちばん多く動いた駒はどれだったでしょうか。ポーンは16枚の中で最も数が多く、ナイトは序盤から跳ね回り、キングは終盤まで隅にいる印象があります。しかし、これは印象です。棋譜を一手ずつ数えれば、印象が合っているかどうかは確かめられます。 この記事は結果を示しません。自分の対局の棋譜から駒ごとの移動回数を数え、よく動いた駒を見つけるための分析の手順書です。「ポーンが多い」で済ませないよう、種類別の合計と1枚あたりの回数を分けて見ます。この区別をつけると、同じ棋譜から違う答えが出ることがあります。 材料は、1局分の棋譜と紙かメモ帳だけです。「灯りのチェス」には取った駒と全棋譜を表示する機能があるので、自分で1局指して、その記録を数える流れで進められます。

この記事の目次
  1. 数える前に決める「動いた回数」の単位
  2. 記録表を作る
  3. 棋譜を用意する
  4. 数え方のルールと間違えやすい点
  5. 短いスクリプトで種類別に数える
  6. 結果の読み方
  7. 次の行動

数える前に決める「動いた回数」の単位

分析を始める前に、何を1回と数えるかを決めておきます。ここが曖昧だと、同じ棋譜でも数える人によって結果が変わります。

チェスでは、白と黒がそれぞれ1回指すごとに1手と数える方法が一般的です。ただし「1手」が白黒のペアを指す場合もあります。この記事では混乱を避けるため、白か黒が1回指すことを1回の移動とし、白黒を別々に記録します。

次に、数える粒度を2通り用意します。

  • 種類別:ポーン、ナイト、ビショップ、ルーク、クイーン、キングの6種類ごとに数えます。棋譜の文字から機械的に数えられます。
  • 個体別:「b1のナイト」「g1のナイト」のように、1枚ずつ数えます。盤面を追いながら数える必要があり、手間がかかります。

まず種類別を数え、気になる箇所だけ個体別に掘り下げると効率的です。

種類別の数字には落とし穴があります。ポーンは最初に8枚、ナイトは2枚、クイーンは1枚です。枚数が違うので、合計回数だけを比べると、枚数の多い駒が有利になります。そこで、種類別の回数を初期の枚数で割った「1枚あたりの回数」も出します。この記事ではこの二つを並べて見るのが肝になります。

記録表を作る

数える前に、記録表の枠を紙に書いておきます。縦に駒の種類、横に項目を並べます。

  • ポーン、初期の枚数:8、白の回数:、黒の回数:、合計:、1枚あたり:
  • ナイト、初期の枚数:2、白の回数:、黒の回数:、合計:、1枚あたり:
  • ビショップ、初期の枚数:2、白の回数:、黒の回数:、合計:、1枚あたり:
  • ルーク、初期の枚数:2、白の回数:、黒の回数:、合計:、1枚あたり:
  • クイーン、初期の枚数:1、白の回数:、黒の回数:、合計:、1枚あたり:
  • キング、初期の枚数:1、白の回数:、黒の回数:、合計:、1枚あたり:
  • キャスリング、初期の枚数:-、白の回数:、黒の回数:、合計:、1枚あたり:-

「キャスリング」の行は別に設けます。キャスリングは1回の指し手でキングとルークが同時に動くため、どちらの回数に入れるか迷うからです。この記事では独立した行にして、あとでキング側に足すかどうかを選べるようにします。

「1枚あたり」は、合計を初期の枚数で割った値です。割り算の前に、その局で取られた駒や昇格で増えた駒があるか確認します。たとえばクイーンがポーンの昇格で増えた局では、「初期の枚数」をそのまま使うと実態からずれます。そうした局にはメモを残し、集計から外すか、備考を付けて扱いましょう。

1局だけで結論を出すのも避けます。1局の偏りは、相手の動きや自分の作戦に左右されます。何局あれば十分かはこの記事では断定しませんが、まず数局の記録を並べて、局ごとのばらつきを見るところから始めると判断しやすくなります。

棋譜を用意する

「灯りのチェス」は、取った駒と全棋譜を表示します。まず作品を開いて、棋譜がどの形式で出ているか確かめます。確認したいのは次の点です。

  • 駒の頭文字(N、B、R、Q、K)で書かれた標準の代数記法(SAN)になっているか
  • 白と黒の手が区別できるか
  • 画面の文字を書き写せるか、コピーできるか

この部分は作品を開いて確かめてください。コピーできなければ、手で書き写してメモに残します。

SAN には次の約束があります。駒の種類で数えるなら、これだけ知っていれば足ります。

  • ナイトは N、ビショップは B、ルークは R、クイーンは Q、キングは K で始まります(例:Nf3、Bb5)。
  • ポーンは頭文字がなく、マス目の名前だけで書きます(例:e4)。ポーンが駒を取るときは、元の列の文字から始まります(例:exd5)。
  • 駒を取る手には x が入り、王手には + が付きます。
  • キャスリングは O-O(キング側)と O-O-O(クイーン側)です。
  • ポーンの昇格は e8=Q のように = の後に駒を書きます。

比較の条件をそろえるため、相手の強さの段階を揃えて何局か記録します。「灯りのチェス」のひとり対局には3段階の相手がいます。段階ごとに分けて記録すると、相手が変わると動く駒の傾向が変わるかも確かめられます。ただし CPU の思考時間は約450msに制限されているので、相手の指し方の癖までは過大に読み込まないほうが安全です。

数え方のルールと間違えやすい点

手で数える場合も、スクリプトで数える場合も、同じルールを適用します。事前に決めておくのは次の五つです。

  1. 取る手:駒を取る手も、その駒の1回の移動として数えます。x が入っていても頭文字で判断します。
  2. 昇格:e8=Q はポーンの移動として数えます。昇格後のクイーンが動く手は、クイーンの回数に入れます。ただし、元から居たクイーンと区別がつかなくなるため、昇格があった局には備考を付けます。
  3. キャスリング:別の行に数えます。キングの回数に足すかどうかは、集計のあとで決めます。
  4. アンパッサン:ポーンが取る手として、ポーンの回数に入れます。
  5. 王手や詰みの記号:+ や # は数えるときに無視します。

間違えやすい点は次のとおりです。

  • 手番の数字を数え間違える:「1. e4 e5」の「1.」は手の数ですが、動いた駒の数ではありません。数字を除いてから数えます。
  • 白と黒を混ぜる:奇数番目の手は白、偶数番目の手は黒です。合計だけ数えると、自分と相手の差が見えなくなります。
  • 個体を取り違える:両方のナイトが同じマスに動けるとき、SAN では Nbd2 のように出発した列が付きます。個体別に数えるなら、その部分は盤面で確認します。
  • 局の途中で投了した場合を含める:途中で終わった局と最後まで指した局では、手数が違います。手数の差が大きいと、合計回数での比較は意味を失います。そのため、総手数で割った「割合」も補助的に出すとよいでしょう。

短いスクリプトで種類別に数える

手で数えるのが大変なら、次のスクリプトを使えます。HTML ファイルとして保存してブラウザで開き、棋譜を貼り付けるだけで、白と黒の種類別の回数が出ます。外部ライブラリは使いません。

html
<textarea id="in" rows="6" cols="50" placeholder="棋譜(SAN)を貼り付け"></textarea>
<button id="go">数える</button>
<pre id="out"></pre>
<script>
const names = {P:'ポーン',N:'ナイト',B:'ビショップ',R:'ルーク',Q:'クイーン',K:'キング',O:'キャスリング'};
document.getElementById('go').onclick = () => {
  const text = document.getElementById('in').value
    .replace(/\[[^\]]*\]/g, ' ')
    .replace(/\{[^}]*\}/g, ' ')
    .replace(/\d+\.+/g, ' ')
    .replace(/[+#!?]/g, '');
  const moves = text.split(/\s+/)
    .filter(t => t && !/^(1-0|0-1|1\/2-1\/2|\*)$/.test(t));
  const count = [{}, {}];
  moves.forEach((m, i) => {
    const k = /^[KQRBN]/.test(m) ? m[0] : m[0] === 'O' ? 'O' : 'P';
    count[i % 2][k] = (count[i % 2][k] || 0) + 1;
  });
  let out = '総手数: ' + moves.length + '\n';
  for (const k in names) {
    out += names[k] + '  白 ' + (count[0][k] || 0)
         + '  黒 ' + (count[1][k] || 0) + '\n';
  }
  document.getElementById('out').textContent = out;
};
</script>

このスクリプトは、棋譜が白から始まり、白と黒が交互に並んでいることを前提にしています。途中から貼り付けると白黒が逆になるので、必ず最初の手から貼ってください。

出てきた数字を記録表に写します。「1枚あたり」の列は、合計をそれぞれの初期の枚数で割って手計算で出します。スクリプトは種類別の集計しかしないので、個体別に調べたい場合は、盤面を見ながら該当する手を数えます。

結果の読み方

数字が出たら、次の順序で読みます。

1. 合計の順位を見る。 どの種類が最も多いかを確認します。ポーンが最多になるかどうかは、自分の記録で決まります。

2. 1枚あたりの順位を見る。 合計の順位と並べて比べます。

  • 合計で多い駒が、1枚あたりでも多い場合:その駒は枚数だけでなく、動かし方そのものが多かったと言えます。
  • 合計では多いが、1枚あたりでは目立たない場合:枚数が多いことによる見かけの差である可能性があります。
  • 合計は少ないが、1枚あたりで上位の場合:少数の駒が何度も動いたことを示します。

3. 白と黒の差を見る。 自分の側と相手の側で、同じ種類の回数が大きく違う場合は、指し方の傾向の違いを疑います。ただし、先手は白という構造的な違いもあるため、同じ色で複数局を比べないと、色の影響と自分の癖を区別できません。

4. 局をまたいで比べる。 同じ段階の相手との局を並べ、順位が毎回変わるなら、その局の流れによる偶然が大きいと判断できます。逆に、局が違ってもほぼ同じ順位になるなら、そのやり方に何らかの安定した傾向があるかもしれません。ただし、局数が少ない間は仮説にとどめましょう。

5. 個体別に掘り下げる。 1枚あたりで上位に出た種類について、その中のどの駒が主に動いたのかを盤面で追います。ナイト2枚のうち片方だけが何度も動いた場合、この差は種類別の集計には出てこない発見になります。

結果を読むとき、ここまでに書いた記録から言えるのは「この局でそうだった」という範囲です。チェス全般の傾向として語るには、はるかに多くの局が必要です。

次の行動

まず「灯りのチェス」で1局指して、全棋譜の表示形式を確かめてください。そのあと上の記録表を紙に書き、種類別の回数を数えて「1枚あたり」まで出します。余裕があれば、相手の段階を変えて数局分を並べ、順位が入れ替わるかどうかを見比べてみてください。