当サイトで使っている、世界最強のチェスAI Stockfish についてまとめました。Stockfish は、コンピューター同士の大会でも何度も優勝しているチェスエンジンです。人とどちらが強いのか、どうやって手を考えているのか、評価値の読み方も紹介します。


Stockfish(ストックフィッシュ)ってなに?

Stockfish は、チェスの手を考えるプログラム(チェスエンジン)です。局面を渡すと、どちらがどれくらい有利か(評価値)と、いちばん良い手(最善手)を計算して返します。

コンピューター同士で戦う大会(TCEC)で、これまでに19回優勝しています(2026年10月時点)。強さをレーティング(強さを表す数字)で表すと、コンピューター同士の対局から作るレーティングの表(CCRL)で 3500 を超えます。人のレーティングとは別の表なので単純には比べられませんが、人の世界チャンピオン(2800台)よりずっと上です。

人とAIはどっちが強いの?

今は、AIの方がずっと強いです。

1997年に、IBM のコンピューター「ディープブルー」が、当時の世界チャンピオンのガルリ・カスパロフに勝ちました(1997年5月。6局の試合で2勝1敗3引き分け)。人の世界チャンピオンが、コンピューターとの試合に負けたのは、これが初めてでした。それから30年近くたった今のチェスAIは、人の世界チャンピオンでも勝つのがほとんど無理なほど強くなっています。

なお、ChatGPT のような、文章を作る AI とは別物です。Stockfish はチェスの手を読むことだけに特化したプログラムで、文章を書いたり会話をしたりはしません。


どういうふうに手を考えているの?

Stockfish は、「木の枝」のように考えを巡らせて、何手も先まで読んでいます。

  1. 今の局面から、指せる手を全部並べます。
  2. その1手ずつについて、相手が返せる手を全部並べます。
  3. さらにその先の自分の手、相手の手…と、何手も先まで枝を広げます。
  4. 枝の先の局面ごとに、どちらがどれくらい有利かの点数(評価値)をつけます。
  5. 「お互いに一番いい手を指したら、最後はどうなるか」を枝の先から逆にたどって、今指すのにいちばん良い手を選びます。

今の局面から自分の手(1. e4・1. d4・1. g4)と相手の手が枝分かれし、枝の先の点数から一番いい手を選ぶ図 相手は、自分(白)の点数がいちばん低くなる手を返してきます。手 A(1. e4)なら +0.30、手 B(1. d4)なら +0.20、手 C(1. g4)なら −1.27 になるので、いちばん良い手は手 A です(点数は Stockfish 17.1、depth 18)。

ただし、全部の手を最後まで読むことはできません。チェスの対局の進み方は10の120乗通りくらいあり(シャノン数)、どんなに速いコンピューターでも読みきれないからです。そのため、チェスの必勝法はまだ見つかっていません。Stockfish の最善手も「絶対の正解」ではなく、「今読める範囲で一番いい手」です。

そこで、見込みの無い枝は早めに読むのをやめて、よさそうな枝を深く読みます。決めた時間か深さになるまで読み続けるので、長く考えさせるほど深く読めて、手の精度が上がります。

局面に点数をつけるところでは、たくさんの局面から学んだニューラルネットワーク(NNUE)を使っています(2020年9月の Stockfish 12 から)。


どんなことができるの?

Stockfish に渡すもの(入力)と、返ってくるもの(出力)は、次のとおりです。

入力局面(盤のどこに何の駒があるか、どちらの番か)
どこまで考えるか(何手先まで読むか、または考えてよい時間)
候補の手をいくつ出すか
出力局面の評価値(+1.5 や M3 など)
良い順に並んだ候補の手
それぞれの手のあとの、お互いの最善の続き(読み筋)

局面は、FEN という1行の文字で渡します。たとえば、最初の局面は次のように書きます。

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

上の段(黒の側、8段目)から順に、1段ずつ「/」で区切って書きます。マスにある駒を頭文字(黒の駒を小文字、白の駒を大文字)で、連続する空白のマスを数字で表します。ナイトは K ではなく N です。
その他、手番やキャスリングできるかどうかなどの情報も、文字だけで表します。

「何手先まで読むか」は depth(深さ)と言います。白の1手、黒の1手を、それぞれ1と数えます。depth とは別に、「1局面に何秒まで考えてよいか」という時間で決めることもできます。

たとえば、みんなのパズルにある次の局面(白の番)を渡してみます。

5rk1/1p2p2p/rN2p1p1/p1qp4/4n3/2P1P3/PP3PPP/R2QK2R w KQ - 0 1

depth 18、候補を3つ出すように頼むと、次のように返ってきました(Stockfish 17.1)。

候補の手 評価値 読み筋
1. Nd7 +1.78 Nd7 Qb5 Nxf8 Qxb2 O-O Kxf8
2. Na4 −2.01 Na4 Qc7 f3 Nd6 b3 b5
3. Nxd5 −5.30 Nxd5 exd5 O-O Raf6 f3 Qxe3+

いちばん良い手の Nd7 は、ナイトで黒のクイーン(c5)とルーク(f8)を同時にねらう両取りです。2番目の手とは評価値が 3 以上違うので、この局面では Nd7 しか良い手が無いことが分かります。


評価値(+1.5)はどう読むの?

評価値は、どちらがどれくらい有利かを表す数字です。

  • +(プラス)は白が有利、−(マイナス)は黒が有利です。0 に近いほど互角です。
  • +1.0 は、ポーン1つ分くらい白が有利という目安です。+3.0 なら、ナイトかビショップ1つ分くらいの差です。
  • M3 のように M が付いているときは、詰みが見えています。「M3」なら白が、「−M3」なら黒が、3手で詰ませられるという意味です。M はメイト(チェックメイト)の頭文字です。

評価値の単位は、センチポーン(ポーン1つ = 100)です。+1.5 は、150 センチポーンのことです。

駒の点数とはどう違うの?

チェスの駒には、ポーン1点、ナイトとビショップ3点、ルーク5点、クイーン9点という点数の目安があります。

駒 点数
ポーン 1
ナイト 3
ビショップ 3
ルーク 5
クイーン 9

チェスAIが算出する評価値は、この駒の点数だけで決まるわけではありません。駒がよく働いているか、キングが安全か、ポーンの形が良いかなども入れた点数です。そのため、駒の数が同じでも、評価値が +2.0 になることがあります。


このサイトでの使い方

当サイトでは、ボットとの対局、対局の解析、パズル、レッスンの各機能において Stockfish を使っています。
Stockfishが出力した候補手で対局をしたり、評価値を使って分析をしたりしています。

ボット対戦

Stockfishの出力する候補手を、考えさせる深さで調整します。
さらに強さによって手を選定します。
弱いレベルほど浅くしか読ませず、候補の手を多く出させて、あえて評価値の低い手を選ぶ確率を上げています。

対局の解析

指し終えた対局は、解析ページで振り返れます。それぞれの手について、最善手と、勝率がどう変わったかが分かります(解析ページの見本)。

解析ページの勝率と正確さのグラフ 解析ページの見本の、勝率と正確さのグラフ

解析ページでは、評価値をそのまま見せるのではなく、勝率(0〜100%)に直してグラフにしています。評価値の数字より、勝率の方がどれくらい有利かをつかみやすいからです。たとえば評価値の +1.5 は、勝率にすると約63%です。勝率を5ポイント以上落とした手は、「悪手」として最大3手まで紹介します。

パズル、レッスン

レッスンでは、ボット同士を戦わせ、勝率が大きく動いた局面があるか、相手の悪手をとがめられたかなどから、勉強になる対局を選んでいます。
パズルでは、自分の対局やボット同士の対局から、戦術の勉強になる局面を抜き出しています。


Stockfishを導入することにしたのはなぜ?

理由はふたつあります。

  1. チェス初心者として、「答え」がわからないと強くなれないと思ったから
  2. 解析結果は、対局後の団欒タイムにつながるから

「答え」がほしい

最初はボット対戦機能を付けたくて、Stockfishの存在を知りました。
調べていくうちにStockfishが「最善手」を出してくれることを知り、これは導入しなければ!と思いました。

チェスをはじめた当初、対局していても、いつも「この手で合っているのか?」「もっといい手があるはずなのに、皆目見当がつかない」と不安でした。
受験勉強で問題集を解くにも解答がなければ理解は深まらないし、ひとりで100回素振りするより上手い人の素振りを見た方が成長するものです。

前述のとおり、Stockfishの最善手が絶対的な「答え」ではない可能性もありますが、初心者にとっては道しるべになると思い、対局後の解析ページに最善手を載せることにしました。

対局後の団欒タイム

チェスボードで夫と対局したあと、彼はよく一人で駒を動かして「ここはこの手じゃなかった気がする」「こうするべきだったかな」と考え込みます。
その姿を見ていて、対局後に解析ページを作って、評価値のグラフを出したらおもしろいんじゃないかと思いつきました。

自分が気にしていた手より、もっと評価値が落ちている局面があったり、逆に思ってもみないところで勝率が上がっていたり。
対局後、グラフを見ながらあーだこーだと話して、最善手を見て「あーなるほどね」とうなずき合う。現物のチェスボードでは難しいですが、チェスアプリならではの楽しみ方ができるのではないかと思います。


参考