マガジン

棋譜を見ずに一局を思い出せるか:記憶の再現実験

遊びを見つける

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

不具合の起きた順番を絵札で並べ、相手に伝えるための手紙を整える手元。
記事のテーマをもとに制作したAI生成イラスト。

「さっきの一局、序盤はどう進んだか」と聞かれて、すぐに手順を言える場面を考えてみます。ナイトを出して、ビショップを展開して、キャスリングして、といった流れは言えそうです。ところが4手目や5手目の細部になると、急に怪しくなるかもしれません。この「言えそうな気がする」感覚が、実際の記録とどこまで一致するのかを、自分の対局で確かめるのがこの記事の目的です。 灯りのチェスには、取った駒と全棋譜を表示する機能があります。対局が終わったあとにこの棋譜を開けば、自分が思い出した手順を答え合わせできます。ただし順番が大事で、記録を見る前に、まず記憶だけで書き出さなければなりません。照合して初めて、「抜けた」「順番を入れ替えた」「実際には指していない手を思い出した」といった違いが数えられます。 この記事は、その実験の設計書です。結果の数字は書きません。何を、どの単位で、何回記録し、結果をどう読むかを順に示します。

この記事の目次
  1. 何を確かめるか、どこで測るか
  2. 条件をそろえて、棋譜を見ずに書き出す
  3. 記録の取り方と、照合を手伝う小さなツール
  4. 結果の読み方と、起こりやすい誤り
  5. 次の行動
  6. 参考資料

何を確かめるか、どこで測るか

「思い出せるか」という問いは、そのままでは測れません。次の3つに分けると、数えられる形になります。

  • 再現できた量:記録の手のうち、順番を保って思い出せた手がいくつあるか。
  • 途切れる位置:先頭から数えて、どこで最初の食い違いが出るか。
  • 間違いの種類:抜け、順序の入れ替え、升目や駒の取り違え、指していない手の混入のどれが多いか。

集計の単位は「手」です。チェスでは白の一回の着手、黒の一回の着手をそれぞれ1手と数える流儀があります(英語圏ではハーフムーブやplyと呼ばれます)。この記事では、白黒それぞれの着手を1手と数えます。「白と黒で1組」と数える習慣の人は、あとで混乱しないよう、記録用紙の最初に数え方を書いておいてください。

実戦の配置は覚えやすく、でたらめに並べた配置は覚えにくいという、熟達者の記憶を調べた古典的な認知心理学の研究が知られています。ただし、自分の記憶の成績がどうなるかはその研究からは言えません。自分の対局で数えるしかないので、この実験に意味があります。

条件をそろえて、棋譜を見ずに書き出す

まず条件を決めます。灯りのチェスのひとり対局には3段階の相手がいるので、1回の実験の中では同じ段階を使います。段階が違うと一局の長さや展開の性質が変わり、記憶の成績が段階の違いなのか記憶の違いなのか区別できなくなるためです。段階の名称は作品を開いて確かめてください。

ヒントと一手戻すは使いません。ヒントは次の一手を教えてくれるので、自分で選んだ手の記憶と混ざります。一手戻すは手順そのものを書き換えます。駒の動き方ガイドも、記憶の実験が目的なら閉じておくのが無難です。

準備するものは次のとおりです。

  • 紙とペン、または別のメモ帳アプリ(書き出し用)
  • タイマー(書き出しの所要時間を測る用)
  • 記録用の表(後述)

手順は次のとおりです。

  1. 作品を開き、全棋譜が画面のどこに表示されるかを先に確かめます。対局中は、その部分を見ないようにします。画面を縮めたり、紙で隠したりしても構いません。
  2. ひとり対局を、同じ段階の相手で最後まで指します。途中で棋譜を確認したくなったら、確認した手と回数をメモしておきます。確認が多い対局は、記憶の実験としては外します。
  3. 終局したら、画面を開いたまま、棋譜の部分を見ずに書き出しを始めます。画面を閉じたり再読み込みしたりすると、記録が消えるおそれがあります。他の作品と同様、ひとり対局の記録は画面を開いている間だけという前提で進めてください。
  4. 手を思い出した順に書きます。分からない手は、空欄の印(たとえば「?」)を置きます。推測で埋めずに、自信の度合いも「確信」「たぶん」「推測」の3段階で添えておきます。タイマーで書き出しにかかった時間も記録します。
  5. 書き出しを終えてから、初めて棋譜を見ます。表記は作品で表示されている形をそのまま書き写します。標準の代数記法かどうかは作品を開いて確かめてください。
  6. 照合します。書き出しの表記を棋譜の書式に直す作業は、棋譜を見たあとでかまいません。ただし、この変換で推測を足さないことが条件です。

1局では偶然の影響が大きいので、最低でも3局は記録してください。局数を増やすほど、特定の一局の事情に引きずられにくくなります。

記録の取り方と、照合を手伝う小さなツール

対局ごとに、次の項目を1行にまとめます。

  • 総手数、数え方:棋譜の手数(白黒それぞれ1手)
  • 書き出した手数、数え方:空欄を除いた手の数
  • 先頭からの連続一致、数え方:最初の食い違いの直前までの手数
  • 順序を保って一致した手数、数え方:後述の最長共通部分列で数える
  • 抜け、数え方:棋譜にあって書き出しにない手
  • 混入、数え方:書き出しにあって棋譜にない手
  • 書き出し時間、数え方:開始から終了までの分数

ここで注意したいのは、「同じ位置の手が一致した数」だけで評価すると、途中で一手抜けた瞬間に、以降のすべてがずれて不一致に見えることです。そこで「順序を保って一致した手数」を使います。2つの手順に共通して現れる手を、順序を崩さずに最大いくつ取れるかという数で、最長共通部分列と呼ばれます。手計算でも数えられますが、手が多くなると大変なので、手元のHTMLファイルとして保存して使える短いコードを置きます。外部ライブラリは使いません。

html
<!doctype html>
<meta charset="utf-8">
<title>棋譜照合</title>
<p>上に棋譜の手、下に書き出した手を、空白区切りで貼ります。</p>
<textarea id="a" rows="4" cols="60"></textarea><br>
<textarea id="b" rows="4" cols="60"></textarea><br>
<button id="go">照合</button>
<pre id="out"></pre>
<script>
const sp = s => s.trim().split(/\s+/).filter(Boolean);
const lcs = (A, B) => {
  const d = Array.from({length: A.length + 1}, () => Array(B.length + 1).fill(0));
  for (let i = 1; i <= A.length; i++)
    for (let j = 1; j <= B.length; j++)
      d[i][j] = A[i-1] === B[j-1] ? d[i-1][j-1] + 1 : Math.max(d[i-1][j], d[i][j-1]);
  return d[A.length][B.length];
};
document.getElementById("go").onclick = () => {
  const A = sp(a.value), B = sp(b.value);
  let run = 0;
  while (run < A.length && run < B.length && A[run] === B[run]) run++;
  const common = lcs(A, B);
  out.textContent =
    "棋譜の手数: " + A.length + "\n書き出した手数: " + B.length +
    "\n先頭からの連続一致: " + run +
    "\n順序を保った一致: " + common +
    "\n抜け: " + (A.length - common) +
    "\n混入: " + (B.length - common);
};
</script>

このコードは、手を文字列として比べるだけです。表記が1文字でも違うと、別の手として扱われます。「Nf3」と「Ngf3」のように、同じ手でも書き方が違う場合は、棋譜の書式に先にそろえてください。空欄の印は、貼る前に取り除きます。

なお「抜け」と「混入」は、升目の取り違えのような誤りだと、両方に1つずつ数えられます。その場合は表を見ながら、手作業で「取り違え」として数え直してください。

結果の読み方と、起こりやすい誤り

数字が出たら、次の見方で読みます。結果の良し悪しを決める基準値はありません。自分の複数局の間で比べるのが基本です。

  • 連続一致が毎局、序盤の同じあたりで途切れる場合は、序盤の定跡的な手が、手順としてではなく「形」として記憶されている可能性があります。次の局では、書き出しの前に盤面の形を思い出さずに、手の順序だけを書いて比べてみます。
  • 自分の手と相手の手で、一致率に差がある場合は、自分の意図のある手のほうが残りやすいのか、相手の手のほうが印象に残るのかを見分ける手がかりになります。棋譜を白黒で色分けして数えてください。
  • 取る手やチェックの手だけ一致が高い場合は、強い印象を伴う手が記憶の目印になっていると読めます。取った駒の表示を見ずに、取る手を書き出せたかも確かめます。
  • 混入が多く、自信の度合いが「推測」に偏っている場合は、記憶の欠けを、もっともらしい手で埋めている可能性があります。混入の手と「推測」の印を突き合わせます。
  • 「確信」と書いた手の一致率が低い場合は、確信と正確さがずれています。これは記憶の弱さというより、自己評価の癖として記録しておく価値があります。

誤りも先に挙げておきます。

  • 棋譜を途中で見てしまう:1回でも見たら、その対局は実験から外すか、「見た」と明記します。
  • 局ごとに相手の段階を変える:成績の差が、記憶ではなく展開の違いから生じる可能性があります。
  • 盤面を頭の中で再構成して手を埋める:これは悪いことではありません。ただ、記憶ではなく推論による埋め合わせなので、自信の度合いを「推測」にして区別します。
  • 書き出しに時間をかけすぎる:時間をかけるほど推論が混ざります。上限を、たとえば10分と決めて、全局で守ります。
  • 局数が少ないまま結論を出す:1〜2局では、たまたまの影響が大きく出ます。

次の行動

灯りのチェスをひとり対局で1局指し、棋譜を見ずに手順を書き出してから、全棋譜と照合してみてください。3局分の表がそろえば、自分の記憶が途切れやすい場所の傾向が見えてきます。棋譜の表示形式や段階の名称は、作品を開いて確かめてください。

参考資料

  • チェスの熟達者と配置の記憶に関する認知心理学の古典的研究(Chase and Simon, "Perception in Chess")