プログラミングの入門としてもよく使われるチェス。グローバルで見ると競技人口が8億人とも言われるチェスは、日本での将棋・囲碁のような存在。ちょっと知っておくとコミュニケーションにも役立ちそう。
「将棋と違って復活できない」くらいの知識だったので、「歩」に当たる「ポーン」が斜めしか取れない、2コマ同時に動く謎ムーブキャスリング、コマが無いのに取れてしまうアンパッサンに驚く。
「chess viewer」src on GitHub
対局した後、どうやったら勝てたのか、シンプルにふりかえりができるツール「chess-viewer」を作ってみました。さすが長年楽しまれているだけあって、棋譜のデータ形式(PGN)や、フレームワークなどもいろいろあって便利。
chess.jsが、チェスのルールをJavaScriptで記述してくれていて、chessboard-elementはHTML拡張タグでいい感じのチェスボードを表示してくれるので、組み合わせるとチェスに関するアプリが簡単に実装できます。
例えば、コンソールで交互にランダムに打ち合うチェスプログラムはこんな感じ。
それぞれESモジュールとしてちょっと整えて、HTMLファイル1つで作成。ネットワークが無いところでも使えるように、使用するライブラリを imports.js などでまとめて、deno bundle しておくと便利。更にJavaScriptの最小化&難読化ツール terser を使って圧縮しておくと読み込みが早くなって良さそうです。
deno bundle imports.js | terser -c -m --module > imports.min.js
手紙を使って将棋をする話を聞いたことがありましたが、チェスでも「通信チェス」という文化もあるんですね!伝書鳩を使った例とかすごい!日米スパコンを使った究極対決とかやってみてほしいです。