将棋AIを作ってください ブラウザでこちらが対戦できるようにして Opus5!

表題のようにClaudeにお願いしてみました。以前、AIに将棋AIを作ってと頼んでもなかなかルール通りに動かなかったけど、今回は少なくともルール通りに動く将棋を作ってくれた気がします。千日手とか持将棋のルールは入ってないらしい。
さすがにあんまり強くなかったけど、もっと強くしてというと強くなりそう。
頼んでから5分くらいでできました。
AIの思考
将棋AIをブラウザで対戦できる形で作ります。まず作業ディレクトリを確認します。
Checked working directory
将棋AIを作ります。ブラウザで動く1ファイル完結のアプリにして、公開URLでも遊べるようにします。まず設計ガイドを読み込みます。
スキルを実行しました/artifact-design
将棋エンジン(ルール判定+思考AI)とUIを1ファイルにまとめて作ります。
Wrote the shogi game HTML file
いくつか仕上げの修正を入れます(ボタン要素の既定枠線と変数名の衝突回避)。
Patched CSS button defaults and renamed history variable
公開して、実際に動くか一度確認します。
木の香 将棋使用: 2個のツール
盤は正しく描画されています。エンジンが実際に応手するか、一度だけ動作確認します。
Ran page script
エンジンは正しく動作しています(☗7六歩に☖6二玉と応手)。駒台ラベルの折り返しだけ直します。
Fixed hand-area label wrapping
木の香 将棋
将棋AIができました。ブラウザで今すぐ対戦できます。
▶ 木の香 将棋
ファイルは shogi.html にも保存してあるので、ダブルクリックでローカルのブラウザでも遊べます。
できること
遊び方
- 自分の駒をクリック → 緑の印が出たマスをクリックで移動
- 持ち駒は下の駒台をクリック → 打ちたいマスをクリック
- 成れる場面では「成る/成らず」を聞いてきます
ルール判定(反則手はそもそも指せません)
- 二歩、打ち歩詰め、行き所のない駒(1段目の歩・香、1〜2段目の桂)
- 王手放置、自分から王手に飛び込む手
- 成りの強制(動けなくなる場所へ行くときは自動で成る)
- 詰みの判定、王手の表示
AIの強さ … 入門・初級・中級・上級の4段階。先手/後手も選べます。
その他 … 棋譜表示(☗7六歩 の形式)、待った、投了、ダークモード対応、スマホでも縦に並んで遊べます。
中身のしくみ(かんたんに)
AIは「ミニマックス法+αβ枝刈り」という定番のやり方です。
- 自分が指せる手を全部並べる
- それぞれに対する相手の最善手を読む…を数手くり返す
- 最後に盤面を点数化する(駒の損得+歩が前に進んでいるか+玉が金銀で囲われているか)
- いちばん点数の高い手を選ぶ
「上級」は5手先まで読みます。駒の取り合いの途中で読みを止めると誤判断するので、取り合いが終わるまでは追加で読む(静止探索)仕組みも入れてあります。コードには日本語のコメントを入れてあるので、AIの強さを変えたい場合は LEVELS と evaluate() のあたりを触ってみてください。
なお、千日手と持将棋の判定は入っていません。実戦ではほぼ問題になりませんが、必要でしたら追加します。
そんなところで

