1台のスマホで二人対戦できる無料チェスサイトで遊んでみた

そりゃそうだ、強くなってるワケがない。

出オチとはまさにこのこと。

夫との再戦は、またしてもあっさり負けを喫した。それはもう、数か月前と全く同じスピード感で負けた。

それもそのはず。私はこの数か月間チェスアプリを作っただけで、チェスはしていない。

ロジックは python chess ライブラリを組み込んだだけ。バグ出しのためにルールは何度も確認したが、それでチェスが強くなるはずがない。相変わらず相手のコマの位置を把握しておらず、あ、と思ったらクイーンは取られるし、ピンをしていたのを忘れてコマを動かしてキングを危険に晒す。

まったく進歩というものをしていなかった。

このための苦労…!

だが、私はというと気落ちしていなかった。

もちろん再戦前は「もしかしたら勝てちゃうんじゃない…?」なんて根拠のない自信がどこからか沸いて出ていたし、負けたときは「またしても」と思いながらうなだれた。

が、すぐに持ち直した。

これまで夫に何回負けたと思ってるんだ。負けることは織り込み済みなのだ。

作ったwebアプリには、ゲーム分析機能を設けた。理由はふたつ。

ひとつは、強くなるために改善点が知りたいから。

もうひとつは、対局後の話題のタネにしたいから。

実物のチェス盤があれば、コマを片付ける片手間に、これってこうするべきだったかな?とか、ここ失敗だったよねなんて話せるけれど、タブレットPCじゃそうはいかない。はい、おしまい、×ボタン…というのもさみしい。

そこで、ゲームを振り返りつつStockfishによる評価を確認できる分析画面へ遷移するようにした。

 

分析機能の実装には、大変苦労した。 数値事態は世界最強レベルのチェスエンジンStockfishではじき出すのだが、評価ロジックは自分で決めなければならない。

そしてなにより大変だったのが、ChatGPT APIのプロンプト構築だ。 いつも利用するChatGPTそれ自体は、利用する際過去のやりとりを鑑みて返信するようになっている。やり取りをすればするほど形作られていき、ある程度の回数をこなせば、主語が無かったりふんわりした内容を送信したりしてもそれなりに的を射る返信をしてくる。

だがChatGPT APIはそうはいかない。APIとして呼び出されるが故だろうが、ぐにゃぐにゃのスライムの形を、一度の送信できっちり型にはめこまなければ、希望の形で返信してこないのだ。ちょっとでも穴があればそこから漏れ出し、理想形の返信は得られない。何度匙を投げそうになったことだろうか。

その苦労も、やっと実を結ぶ。…はずだ。 果たして、AIコーチもといChatGPI APIの回答はいかほどの出来栄えになっているだろうか。

 

実際の私たち夫婦のゲーム分析結果が下記。 白が私、黒が夫である。

分析結果の下には、盤面のリプレイや棋譜もあるので見てみてほしい。 しょぼい戦いしているな、と思っても、そこは生温かいまなざしで見てほしい。

分析結果

局面評価グラフ

センチポーン: 局面の優劣を表す評価単位。1ポーン=100cP。値が大きいほど有利。
メイト: +は自分、-は相手がチェックメイトまでの手数。

5つの力チャート

評価値からの推定です。実力と一致するとは限りません。

点の出し方: 1手ごとに、指す前と後の勝率(評価値から計算)を比べ、勝率を落とさなかった手ほど高い点(正確さ)にします。各項目は、対象の手の正確さの平均を5点満点にしたものです(正確さの平均が100点中50点以下なら0点)。対象の手が3手より少ない項目は(―)になります。
序盤 10手目までの手
戦術 相手が直前の手で勝率を10%以上落としたときの手(チャンスを生かせたか)
作戦 序盤・終盤・戦術以外の手
終盤 キングとポーン以外の駒が、両方合わせて6個以下になってからの手
ミスの少なさ すべての手のうち、勝率を10%以上落とさなかった手の割合

指し手レビュー

好手

20手目 Rxb1
クラッカーのアイコン

悪手

手番 あなたの手 最善手
11
Qc5
Qxc6
6
O-O-O
Bf4
5
Qd2
Nc4
好手 相手が直前の手で勝率を10%以上落としたとき、その有利を保った手。いちばん大きなミスをとがめた手を選びます
悪手 自分の手で勝率が5%以上下がった手。下がり方の大きい順に3つまで出します(最善手と同じ手は除きます)

局面評価グラフ

センチポーン: 局面の優劣を表す評価単位。1ポーン=100cP。値が大きいほど有利。
メイト: +は自分、-は相手がチェックメイトまでの手数。

5つの力チャート

評価値からの推定です。実力と一致するとは限りません。

点の出し方: 1手ごとに、指す前と後の勝率(評価値から計算)を比べ、勝率を落とさなかった手ほど高い点(正確さ)にします。各項目は、対象の手の正確さの平均を5点満点にしたものです(正確さの平均が100点中50点以下なら0点)。対象の手が3手より少ない項目は(―)になります。
序盤 10手目までの手
戦術 相手が直前の手で勝率を10%以上落としたときの手(チャンスを生かせたか)
作戦 序盤・終盤・戦術以外の手
終盤 キングとポーン以外の駒が、両方合わせて6個以下になってからの手
ミスの少なさ すべての手のうち、勝率を10%以上落とさなかった手の割合

指し手レビュー

好手

11手目 Bxc5
クラッカーのアイコン

悪手

手番 あなたの手 最善手
7
Rxb4
Bxb4
4
Rb8
Bxa3
19
Rxb1
Rb2+
好手 相手が直前の手で勝率を10%以上落としたとき、その有利を保った手。いちばん大きなミスをとがめた手を選びます
悪手 自分の手で勝率が5%以上下がった手。下がり方の大きい順に3つまで出します(最善手と同じ手は除きます)

ゲームリプレイ

この盤面は局面再生用です。
このページではゲームはプレイできません。

夫
hgfe dcba
8765 4321
1234 5678
abcd efgh
わたし

棋譜

# 白 最善手 黒 最善手
1 d4 e4 e6 d5
2 Be3 e4 b6 d5
3 c3 Bf4 Nc6 d5
4 Na3 Nd2 Rb8 Bxa3
5 Qd2 Nc4 b5 Bxa3
6 O-O-O Bf4 b4 Bxa3
7 cxb4 Nc2 Rxb4 Bxb4
8 b3 Nc2 Ba6 Nf6
9 d5 Nc2 exd5 exd5
10 Qxd5 Nc2 Nf6 Nf6
11 Qc5 Qxc6 Bxc5 Bxc5
12 Bxc5 Bxc5 Qb8 Ne4
13 e3 Nf3 Bxf1 Bxf1
14 Rxf1 Nf3 Ne4 Rb7
15 Bd4 Bxb4 Nxd4 Nxd4
16 exd4 exd4 Nc3 O-O
17 Nb1 Re1+ Nxa2+ Nxa2+
18 Kb2 Kd1 Rxb3+ Rxb3+
19 Kxa2 Kc2 Rxb1 Rb2+
20 Rxb1 Rxb1 Qc8 Qc8
21 Ne2 Re1+ d6 Qa6+
22 Nf4 Rb2 Qf5 O-O
23 Nh5 Rb8+ Qxf2+ Qa5+
24 Rb2 Rb2 Qxd4 Qh4
25 Re1+ Rb8+ Kd7 Kd7
26 Nxg7 Nxg7 Qxg7 Qc3
27 Rb7 Rf2 Re8 Qxg2+
28 Reb1 Rxc7+ Qxg2+ Qc3
29 Ka1 Ka1 a6 Re2
30 h4 R7b4 Re5 Re4
31 Ra7 R1b4 Ra5# Ra5#

敗因研究:局面評価グラフ

ウェブアプリ上では、表示内容の半分くらいは課金しないと見られないのでご注意いただきたい。

サーバー代とchatGPT API使用料のため、費用を稼がなければならない。100円前後なので、投げ銭感覚で課金してもらえたら嬉しいです。なにとぞ。

と、営業はさておき。

 

まずは局面評価グラフを見ていこう。

初手から徐々に点数が下がって言っているが、白の11手目で大きく点数が下がった。黒のナイトが移動してきて、白のクイーンを捕らえた。それをかわそうとして移動したのだが、移動先は黒ビショップの攻撃範囲内だった。これはまったくビショップのことが見えていなかった。

夫がビショップを手に持った瞬間にハ!と気づいたが時すでに遅し。無敵のクイーンはなすすべなく取られていった。

 

そのままガタガタと点数は下がっていくのだが、ある一手で持ち直した。黒の19手目だ。

自分(白)の手で持ち直せていないのがなんとも悔しい。

18手までで黒のナイトとルークにキング周りを攻め立てられ、19手目で逃げ回っている盤面だ。ここではb8にいる黒クイーンの存在を忘れずにコマを進めることができた。自分の攻撃範囲や移動範囲ばかり気にしてしまって、いつも敵陣に控えているコマを見落としてしまう。

夫(黒)はb1の白ナイトを取ったのだが、悪手だったらしい。白を追い詰める良い機会を逃し、白の点数が上がる結果となってしまった。 その後は両者拮抗していたのだが、終盤25手目で白はまた点数を下げ、そこから転がり落ちていった。

この辺りは、正直もうなにをすればいいのかわからなかった。守備を優先するべきだとは思ったのだが、下手に動いてもクイーンにコマを取られるだけになってしまう気がして、変に攻勢に出た。

これがよくなかった。終盤の立ち回り方はきちんと学ばなければならない。夫にも、ゲーム後「最後なにがしたかったの?」と聞かれる始末。

自分でもわかりませんでした。はい。

 

局面評価グラフと好手までは無料で見ることができるようにしている。局面グラフだけでも結構おもしろい。

この手で急に点数下がってるじゃんなんで?と言いながら、夫とふたり盤面をリプレイして、この手だったらよかったのかな、こうした方がよかったのかな、と盛り上がった。

ご家族や友人と対局をした際には、課金せずともぜひ分析画面を見てほしい。

敗因研究:指し手レビュー

指し手レビューを見ていこう。

さんざん悩んだが、結局はシンプルなのがわかりやすくていいかなという結論に至り、評価ロジックは下記とした。好手も悪手もプラスとマイナスの違いだけで、同様に評価する。

  • Mate値が現れた手が最も点数が大きい
  • 以降は、自手のCentiPawn値の差分が大きいもの

 

好手

白側はMateは取れていないので(Mate=-1は黒がチェックメイトまであと一手という意味)、CentiPawn値において前手より数値がプラス側に最も大きくなった手が好手となる。

ここでは、20手目という結果になった。

局面評価グラフをみると、前述の通り、19手目の白手から黒手においてCentiPawn値が大きくなっており、19手目黒から20手目白は若干数値が下がっている。つまり、私が指した手で局面が好転したのではなく、夫が大ミスをしてくれたおかげで局面が好転したということだ。

…これは好手と言えるのだろうか。ここで考えるのはよそう。ロジックの見直しはまだしばらく遊んでからでも遅くはない。過程はクリアになっているのだから、チェスの勉強を優先しよう。

 

悪手

31手目の白手で黒側がMateを取ったので、この手が最悪手となる。私は夫にチェックメイトどうぞ、と勝ち筋を譲ったことになる。いや、「勝ち筋を譲る」という言葉では語弊がある。負け戦であがく方法もわからず敵を招き入れた、という方が語意が適切だろうか。

悪手のレビューでは、「最善手」と「AIコーチ解説」をプレミアムコンテンツとして用意している。

「最善手」はStockfishがその局面で最善と判断した手である。

「AIコーチ解説」は、プレイヤーの手とStockfishの最善手を比べたときに、プレイヤーの手が劣っている点、Stockfishの手が優れている点を、ChatGPT APIに説明してもらった文章である。

 

31手目の私の手は「Ra7」、最善手は「R1b4」であり、解説は「Ra7 は受動的で白に反撃の余地を与えます。R1b4 は裏目の脅威を作り黒王への圧力を維持します。」であった。

31手目で私の頭には「これもうどうしたらいいんだ?」しか思い浮かんでおらず、おざなり指した手がRa7であった。確かに受動的だ。

一方R1b4はというと、"裏目の脅威を作る"。31手目でR1b4を指した場合、その後黒がRa5を指してもチェックメイトにならない。白キングはb1に逃げることができる。そのため、黒はクイーンとルークで引き続き追い回す必要がある。しかし、b7の白ルークは黒ポーンだけでは防げない。b7の白ルークが黒キングに迫るのを防ぐため、黒はルークかクイーンをその防御に回す必要が出てきて、白は存命できる…ということだろうか。

2番目、3番目の悪手は、CentiPawn値において前手より数値がマイナス側に大きかった手が続く。ひとつひとつ見ていくと文章ボリュームが膨大になるので、割愛する。

敗因研究:AIコーチレビュー

最後にAIコーチレビューを見る。

文章の内容を箇条書きにまとめるとこんな感じだろうか。

  1. 序盤は頑張ってたけど、中盤からキング周りのコマ動かしすぎて守備ガタガタ
  2. コマを活かしきれてなくて攻撃下手
  3. コマの連携ができてなくて守備下手

ほめるべき点が、なにもありませんでした…!!とでも言われている気分だ。「Black」タブのAIコーチレビューと見比べると雲泥の差だ。黒に対しては褒めと改善点のバランスがちょうどよい。

だがもう本当におっしゃる通りで、①については対局中はまったく気づかなかったが、リプレイでざっと流してみてみると、キャスリングで守備に満足してしまったのだろう、f~h列のコマは全く動いていないのに対し、キング周りのコマを動かしまくっている。それによってキングの守りがおろそかになったうえ、コマ損が続いて攻撃にも手が回らなくなったといったところだろうか。

AIコーチの解説・レビューは「あ~~なるほどね」の連続で、内容については耳が痛いものばかりだが、出来栄えについては合格点に達しているのではないだろうか。

本当に苦労した甲斐があったというものだ。

次戦に向けて

改善すべきところしかないというか、伸びしろしかないというか。攻守ともにできていないときたもんで、どこから手を付ければいいのかわからない。

もしかして私、チェスのセンスないのだろうか。

これまでほとんどチェスに触れてきていないのだから、センスはなくて当たり前…ということにして、もう少し頑張ってみようと思う。打倒、夫。少なくとも夫に勝つまではやめられぬ。

 

ここまで対人にこだわってきていまさらなのだが、相手を前に焦って指すのではなく、まずは一手一手じっくり考えて指し、チェスと仲良くなるのが先のような気がしてきた。守備だ攻撃だという前に、コマの活かし方を学び、相手のコマの見落としをなくすのが先決だ。

ということで、次はBOT対戦でレベルアップを狙う!

閉じる を押すとゲーム分析ページへ遷移します。