3段階のCPUが同じ局面で選ぶ手を並べる記録表のつくり方
遊びを見つける執筆にClaudeを使用しています。

「灯りのチェス」で、3段階の相手に同じ初手を指す場面を考えてみます。白で1.e4と指したとき、どの段階の黒も同じ返事をするのでしょうか。それとも段階ごとに違う手が返ってくるのでしょうか。 初手のような序盤では、手が一致しても不思議はありません。差が見えてくるのは、取れる駒がある局面、取ると取り返される局面、両取りを狙える局面のように、選び方が結果を左右する場面だと予想できます。ただし、これはあくまで予想です。 この記事では、その予想を自分の対局で確かめるための記録表と集計の手順を示します。3段階が実際にどんな手を選ぶかは、記事の中では語りません。読者が3段階それぞれから手を引き出して表に並べ、差が出る局面を見つけるための設計書です。
「同じ局面」を作るための条件
比較の前提は、3段階に同じ局面を見せることです。ここで確認しておきたい点が3つあります。
- 灯りのチェスには3段階の相手、ヒント、一手戻す、全棋譜の表示があります。
- CPUの思考時間は約450msに制限されています。
- 手の選び方の仕組み(毎回同じ手を返すのか、揺らぎがあるのか)は、この記事では扱えません。作品を開いて確かめる部分です。
同じ局面を作る方法は2つあります。
方法1:自分の手を「手順書」に固定する
自分の手をあらかじめ紙に書いておき、3段階それぞれと新しい対局を始めて、同じ順に指していきます。CPUの返事が全段階で一致している間は、3つの対局が同じ局面のまま進みます。返事が初めて分かれた手が、最初の「分かれ目」です。分かれ目の1手前の局面は全段階に共通なので、そこでの各段階の選択を並べれば、公平な比較になります。
分かれ目より後は、各段階で局面が別々になります。その先を無理に比べず、別の手順書(たとえば初手を変えたもの)で改めて比較します。
方法2:一手戻すで同じ局面に戻す
同じ段階の中で、同じ局面から複数回手を引き出すときに使います。CPUが指したあとに一手戻し、同じ手を指し直すと、同じ局面をもう一度見せられるはずです。
一手戻すがCPUの手まで含めて戻るのか、自分の手だけを戻すのかは、作品で確かめます。戻したあとの盤面を棋譜表示と見比べて、元の局面に戻っていることを確認してから、2回目以降を記録します。
記録表の列と、集計の単位
記録は「1局面×1段階×1回の返事」を1行にします。次の列を用意します。
- 局面ID、内容:手順書の名前と手数(例:手順書A-3)
- 段階、内容:画面に表示される名前、または1・2・3
- 回、内容:同じ局面から引き出した何回目か
- CPUの手、内容:棋譜表示から標準の代数記法で写す
- 取る手か、内容:駒を取る手なら○
- チェックか、内容:王手なら○
- 2手先の駒得失、内容:次項の方法で自分で数える
CPUの手は、盤面を見て書き起こすより、画面の全棋譜からそのまま写すほうが間違いを防げます。段階の名前は、画面に出ている表記をそのまま使います。強い・弱いといった名前を、こちらで当てはめないようにします。
集計の単位は「局面」です。1局面について、各段階が返した手の集合を作ります。そのうえで、次の3つを見ます。
- 全段階が同じ手だけを返した局面(一致)
- 段階の間で手が分かれた局面
- 同じ段階が、同じ局面で異なる手を返した局面(ゆれ)
3が多い場合は、手が確率的に選ばれている可能性があります。その場合、段階間の違いを1回の返事だけで判断すると誤読しやすくなります。同じ局面は各段階で3回以上引き出すと安心です。
強さが現れそうな局面の探し方
盤面を指定しなくても、探す条件は言葉で示せます。実際の対局の中で、次のような局面を意図的に作ってみてください。
- ぶら下がり駒の局面:自分の駒を、相手の駒に取られる位置に動かします。守りがある場合と、ない場合の両方を試します。取るか取らないか、取ったあとに取り返されるかが、段階ごとに変わる可能性があります。
- 交換の局面:同じ価値の駒どうしを取り合える状況を作ります。交換に応じるか、避けるかを見ます。
- 両取りの局面:自分のナイトなどで、相手の2つの駒を同時に狙える形を作ります。相手が事前に避けるかどうかを見ます。
- 終盤の王手まわり:相手のキングの逃げ場が少なくなった局面で、詰みにつながる手や、引き分け(ステイルメイト)につながる手を選ぶかを見ます。
局面を作るとき、自分の手を毎回ずらさないことが重要です。手順書に書いた手だけを使い、思いつきで変えないようにします。
「2手先の駒得失」の数え方
CPUの手のあと、自分が最善と思う手を指した場合の駒の損得を数えます。駒の価値の目安は、ポーン1、ナイトとビショップ3、ルーク5、クイーン9です。あくまで目安なので、この数え方で局面の良し悪しが決まるわけではありません。「段階の間で、同じ数え方をしたときにどちらが得か」を比べるための物差しとして使います。
たとえば、段階Aの手のあと自分の駒得が+3、段階Bの手のあとが±0なら、差がついた局面として印を付けます。自分が数えにくい局面は無理に評価せず、空欄にします。
集計用の小さなスクリプト
記録が増えると、手作業での一致判定は面倒になります。次のHTMLを保存してブラウザで開き、テキスト欄に「局面ID,段階,CPUの手」を1行ずつ貼ると、局面ごとの一致、分裂、ゆれを数えます。外部通信はしません。
最初の6行は書式の例(ダミー)で、実際の作品の結果ではありません。実際の記録に置き換えて使います。
<textarea id="in" rows="8" cols="30">
P1,1,m1
P1,2,m1
P1,3,m2
P2,1,m3
P2,2,m3
P2,3,m3
</textarea>
<button id="go">集計</button>
<pre id="out"></pre>
<script>
document.getElementById("go").onclick = () => {
const by = new Map();
for (const line of document.getElementById("in").value.trim().split("\n")) {
const [pos, lv, mv] = line.split(",").map(s => s.trim());
if (!mv) continue;
if (!by.has(pos)) by.set(pos, new Map());
const m = by.get(pos);
if (!m.has(lv)) m.set(lv, new Set());
m.get(lv).add(mv);
}
let same = 0, total = 0, out = "";
for (const [pos, m] of by) {
const all = new Set();
let shaky = false;
for (const [lv, s] of m) {
s.forEach(x => all.add(x));
if (s.size > 1) shaky = true;
}
const agree = all.size === 1;
total++; if (agree) same++;
out += pos + ": " + (agree ? "全段階一致" : "段階間で分かれた")
+ (shaky ? "(同じ段階でもゆれあり)" : "") + "\n";
}
out += "一致 " + same + " / " + total;
document.getElementById("out").textContent = out;
};
</script>同じ段階が同じ局面で別の手を返すと、その段階の集合の要素が2つ以上になります。「ゆれあり」と出た局面は、回数を増やして再確認します。
結果の読み方と判断基準
集計で出た数字は、次のように読みます。
- 一致の割合が高い:比べた局面が、段階を問わず選択肢の少ない局面だった可能性があります。手順書を、駒の取り合いが起こりやすい形に変えてみます。
- 段階間で分かれた局面が見つかった:その局面の手を「取る手か」「チェックか」「2手先の駒得失」で見比べます。分かれ方に共通の特徴(駒を取りにいく、守りを優先するなど)があるかを探します。
- ゆれが多い:段階の特徴を語るには、回数が足りない可能性があります。1局面あたりの回数を増やします。
- 駒得失の差がある局面が複数ある:同種の局面(ぶら下がり駒、両取りなど)にまとまっていないかを見ます。まとまっていれば、そのタイプの局面で差が出やすいという仮説になります。
数十局面を集めても、「この段階はこういう性格だ」と断言するのは慎重にします。自分が選んだ手順書の偏りが、結果に混ざっているからです。仮説は、別の手順書でもう一度確かめます。
起こりやすい誤り
- ヒントの手をCPUの手として記録する:ヒントは自分への提案です。CPUの返事とは別物なので、列を分けるか、記録しません。
- 一手戻したのに局面が元と違う:戻した直後に棋譜と盤面を見比べないまま記録すると、別の局面のデータが混ざります。
- 手順書の途中で自分の手を変える:比較の土台が崩れます。変えたら、そこから新しい手順書として扱います。
- 段階を思い込みで読み替える:画面の表示名をそのまま記録し、強弱の解釈は結果を見てから行います。
- 思考時間で段階を判断する:CPUの思考時間は約450msに制限されているため、待ち時間の長さだけで違いを見分けるのは難しいかもしれません。手そのものを基準にします。
- 数局面だけで結論を出す:少数の例は、仮説づくりには使えますが、結論には使えません。
次の行動
まず、白で1.e4など決めた初手から始まる手順書を紙に書き、3段階それぞれと新しい対局を始めてください。CPUの返事が全段階で一致している間は手順書を進め、初めて分かれた手を1行目の記録にします。そのあと、ぶら下がり駒や両取りの局面を意図的に作り、同じ記録表に足していってください。

