結論
独立した 3局面で確かめたところ、序盤に同じ駒を二度動かす手はどの局面でも、比較した候補の中での最高評価になりませんでした。その最高評価の手との差は平均 0.51、最大 0.88(ポーン換算)です。負けにつながるほどではありませんが、一貫して少しずつ損をしています。
(この記事の「最高評価」は、比較した候補手の中での順位です。全合法手の中での最善手を指すものではありません。検証方法をご覧ください)
今回検証すること
序盤の目標は、駒を働く場所へ手早く並べることです。すでに出した駒をもう一度動かすと、そのぶん新しい駒を出す手が遅れる。だから「同じ駒を二度動かすな」と教わります。
とはいえ、この教えを破る定跡はいくつもあります。実際にどれくらい損なのか、そして本当に例外なく損なのかを、3局面で確かめました。
検証方法
定説を1つの局面だけで確かめても、その局面の事情なのか、どこでも起きることなのかが分かりません。そこで、開いた局面・閉じた局面・白番・黒番と、性格の違う3局面を選びました。各局面で候補手を1手ずつ実際に指し、その局面をエンジンで探索しています。数値はすべて実行結果で、推測ではありません。
比較しているのは全合法手ではなく、記事のテーマに関係する候補手です。検証したい手と、その局面で普通に指される手を選んでいます。したがって表の最上段は「この局面の最善手」ではなく、比較した候補の中で最も評価が高かった手です。
そのうえで、候補手を指定しない探索も局面ごとに1回おこない、エンジン自身の第1候補を記録しています(各局面の欄に出しています)。候補の選び方で結論が変わっていないかを確かめるためで、生成処理には、エンジンの第1候補が候補内の最高評価を0.50以上上回ったら実行を中止する仕掛けを入れています。現在のデータでの最大の差は 0.18 でした。
局面ごとの結果
| 局面 | 候補内の最高評価 | 検証した手 | 差 |
|---|---|---|---|
| 1.d4 系で同じナイトを動かす(白番) | c4 +0.29 | Ne5 −0.22 | 0.51 |
| イタリアンでナイトを二度動かす(白番) | d3 +0.23 | Ng5 +0.08 | 0.15 |
| 黒が同じナイトを動かす場合(黒番) | Be7 −0.35 | Nd4 −1.23 | 0.88 |
局面 1|1.d4 系で同じナイトを動かす(白番)
1.d4 d5 2.Nf3 Nf6
FENrnbqkb1r/ppp1pppp/5n2/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3
候補の中で最も高かったのは c4(+0.29)。Ne5 は −0.22 で、差は 0.51 でした。
候補手を指定せずに同じ深さで探索させても、エンジンは c4 を選びました。
候補手を押して、盤面を切り替えられます
| 候補手 | 評価 | 候補内最高との差 |
|---|---|---|
| c4 | +0.29 | 基準 |
| Bf4 | +0.17 | −0.12 |
| e3 | +0.16 | −0.13 |
| g3 | +0.09 | −0.20 |
| Ne5 | −0.22 | −0.51 |
局面 2|イタリアンでナイトを二度動かす(白番)
1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6
FENr1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4
候補の中で最も高かったのは d3(+0.23)。Ng5 は +0.08 で、差は 0.15 でした。
候補手を指定せずに同じ深さで探索させても、エンジンは d3 を選びました。
候補手を押して、盤面を切り替えられます
| 候補手 | 評価 | 候補内最高との差 |
|---|---|---|
| d3 | +0.23 | 基準 |
| d4 | +0.17 | −0.06 |
| Ng5 | +0.08 | −0.15 |
| Nc3 | −0.11 | −0.34 |
| O-O | −0.26 | −0.49 |
局面 3|黒が同じナイトを動かす場合(黒番)
1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O
FENr1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 3 5
候補の中で最も高かったのは Be7(−0.35)。Nd4 は −1.23 で、差は 0.88 でした。
なお、候補手を指定せずに同じ深さで探索させると、エンジンの第1候補は Nxe4 でした(この表にも載っている手です)。候補を1手ずつ指してから探索する上の表とは手順が違うため、順位が入れ替わることがあります。
候補手を押して、盤面を切り替えられます
| 候補手 | 評価 | 候補内最高との差 |
|---|---|---|
| Be7 | −0.35 | 基準 |
| Nxe4 | −0.36 | −0.01 |
| b5 | −0.44 | −0.09 |
| d6 | −0.46 | −0.11 |
| Nd4 | −1.23 | −0.88 |
なぜこの結果になるのか
3局面とも、動かし直す手は候補の最高評価になりませんでした。差は平均 0.51。読み筋では、こちらが同じ駒を動かしているあいだに相手が新しい駒を並べ、結局こちらの駒が追い返されて戻る、という形が繰り返し出てきます。
ただし幅が大きい。黒が Nd4 と出る局面では 0.88 も落ちるのに対し、イタリアンの Ng5 はわずか 0.15 しか落ちません。Ng5 はフライドリバーアタックの入口で、実戦で数えきれないほど指されてきた手です。格言に反していても、見返りが大きければ成立するということが数値に出ています。
例外と注意
この検証は、あくまで「動かし直すこと自体のコスト」を測ったものです。Ng5 のように、駒を二度動かして相手の弱点(f7)を直接狙う手は、そのコストをほぼ取り返しています。
逆に言えば、見返りの説明ができないなら動かし直さないという使い方が正しいことになります。「二度動かすな」を禁止事項として覚えるより、「二度動かすなら理由を言えるように」と考えるほうが、数値には合っています。
この検証で言えること・言えないこと
- 言えること:ここに挙げた 3局面において、選んだ候補手を depth 20 まで探索した結果です。数値はすべて実行結果で、あとから手を加えていません。
- 言えないこと:3局面はチェスのごく一部です。「すべての局面でそうなる」ことの証明にはなりません。
- 前提:評価値は「両者が最善を尽くしたら」という前提の数字です。相手が最善で応じなければ、実戦の結果は変わります。
- 再現方法:この記事の数値は、解析結果をそのまま収めた chess-analysis.json から組み立てています(局面・候補手・評価値・読み筋がすべて入っています)。上の設定で同じエンジンを走らせれば、同じ数値が出ます。シングルスレッドで、局面ごとにハッシュを初期化し、深さを固定しているためです。エンジンのバージョンやハッシュ容量を変えると数値は変わります。

実戦で覚えること
- 3局面とも、同じ駒を動かし直す手は候補の最高評価にならなかった
- 差は平均 0.51、最大 0.88
- ただしイタリアンの Ng5 は 0.15 差。定跡になるだけの見返りがある
- 動かし直すなら、その手で何を狙うのかを説明できるかで判断する
自分で試す
同じ考え方を、実際の対局で試せます。1手ごとにエンジンが採点するので、原則を守った手とそうでない手の違いがその場で分かります。