「チェスで自らに挑み、苦しむ」

2025/12/31 0:03

「チェスで自らに挑み、苦しむ」

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

改訂サマリー:
著者は自分よりも強くなることができるコンパクトで携帯可能なチェスエンジンを構築し、https://jaredkrinke.github.io/cm-chessboard/ でオンライン公開しました。外部ライブラリを一切使用せずに600行未満のCコードで書かれたコアは固定サイズバッファ(動的割り当てなし)を利用し、WebAssemblyにコンパイルすると6 KB以下になります。このエンジンはPentium PC、Raspberry Pi B、DOS、Amigaなどの古いハードウェア上で動作します。開発はAsus EeeBook X205T のクラシックターミナルツールから始まり、UI は ASCII から XBoard/CECP、そして最終的に Web フロントエンドへと進化しました。ブラウザと WebAssembly 間の通信では、手を9ビット整数(ランク3ビット + ファイル3ビット + プロンーション3ビット)として符号化します。当初はテストがなく、後にフレームワークでエンパッサンとキャスリングロジックのバグが検出されました。デモではチェックメイトやステールメイトも通知しません。著者はチェスが苦手だと認めつつ、自身のプレイを向上させた結果、AI を二度打ち負かしました。今後の作業は未定で、このプロジェクトは主に「創造的なバッテリーを再充電するため」のクリエイティブな離れ道でした。バグ報告や提案は著者へメールで送ってください。

本文

2025年12月29日

私に勝てるチェスAIを作るのは、ずっとバケットリストに載っていたことです—信じられないかもしれませんが。
ネタバレ: 私はチェスがひどく、だから「自分」を倒すAIを作るのはそれほど難しくありませんでした。

ブラウザ上でAIと対戦するには以下からどうぞ:
https://jaredkrinke.github.io/cm-chessboard/


予期せぬ注目を受けた後の修正

  • デモは現在、チェックメイト/スコアルムを告知しません ― まあ、ほぼ使える製品と言えます。
  • 少なくとも一つはバグがあるようです。もし他に見つかったらメールで教えてください(あるいは提案でも構いません)。
  • 私はやっとチェスの腕を上げて、AIに連続で勝利しました(少なくともひとつ大きなミスがあっても)。
  • 今後さらに改善するかどうかは未定です――AIを改良するか、自分自身のプレイを向上させるか。今回は「創造的エネルギーを充電」するための楽しいサイドプロジェクトに過ぎません。

動機

静的サイトジェネレーターと同様、私が書く新しいチェスエンジンを求めている人はいません。主な動機は次の通りです:

  • 開発環境を試す
  • 可能な限りシンプルに保つ
  • 結果を古い遅いコンピュータへ移植するかもしれない

できるだけ準備を少なくし、コードを書き始めました!


開発環境

常時オンのインターネットがない昔の頃に懐かしさを覚えつつ、絶え間ない誘惑とバグから解放されたい。私はAsus EeeBook X205T netbook を復活させ、90年代末期のツール群――GNU Screen, Vim, entr, w3m のターミナルモードを選びました。小さくて軽い netbook でコンソールに入力するのは最高の「居心地の良いコーディング」体験です。

シンプルさを保つ

シンプルさと古いコンピュータへの移植性を重視し、C を使ってできるだけ依存関係を削減しました。

  • コアチェスエンジン+AI(フロントエンド除く)は完全に依存なしです。
  • 固定メモリ使用;動的割り当てはありません。
  • エンジン全体 < 600 行、AI < 150 行。
  • WebAssembly にコンパイル:総サイズ 6 KB 未満。

Pentium のノートPCや Raspberry Pi B、さらに DOS や Amiga でも動くことを期待しました!

完璧に行ったわけではありません。プロジェクトを急いでテストは必須になるまで先送りし、最終的にはエンパッサン・キャスリングなどの難しい移動コードをリファクタリングせざるを得ませんでした。途中でテストフレームワークをゼロから構築し、元実装に複数のバグがあることが判明しました。子どもたちよ、テストを書くことをスキップするな!


統合

最初はターミナルで ASCII 文字を使った UI を試したものの、正方形でない VGA フォントではピースの動きをイメージしにくかったです(ANSI エスケープコードで白いマスを反転させる実験も行いましたが、最終的には機能は放棄しました)。

グラフィカルインターフェイスを一から作らずに済むよう、次のツールと統合しました:

  • XBoard(CECP/「XBoard プロトコル」)
  • Web ブラウザ、cm‑chessboard と WebAssembly を使用

XBoard

XBoard は行ベースのテキストプロトコルを使います。ライブで実験するには netcat を利用し、まず

feature sigint=0 done=1
を送信してください(そうしないと XBoard が SIGINT を送り、netcat が終了してしまいます)。
私は標準的なチェス記法を学んだことがないので、XBoard の一貫した構文 (
a7a8q
など) は完璧でした。クライアントは主にプレイヤーの手(例:
e2e4
)を受け取り、AI の手(例:
e7e5
)で応答します。全体は C で100 行未満です。

ブラウザ

ブラウザ統合には WebAssembly が必要でした。移動情報を整数にエンコードし(3 ビットでランク、3 ビットでファイル、3 ビットでプロモーション)、複雑な文字列の marshalling を回避しました。
私はモバイルフレンドリーな HTML+JavaScript のチェスボード (

cm-chessboard
) を見つけましたが、特殊なビルドシステムや NPM は不要でした。単一ファイルのボードを期待していましたが、存在しませんでした。


私に勝てるか?

はい――AI と対戦すると毎回致命的ミスを犯し、クイーンまたはルークを失います。最初に有利になると、次第に馬鹿げたブラインドサートが増えて、続ける価値がなくなります。
まだ私のプログラムが世界で一番弱いチェスプレイヤー以外の誰かを倒せるかは分かりません。

まとめ: 使命達成――少なくとも私がひどいチェスプレイヤーでいる限りです!

このプロジェクト全体は十分に楽しく、プログラミングを練習したい人や新しい言語(またはパラダイム)を試したい人にはおすすめです。


リソース

同じ日のほかのニュース

一覧に戻る →

2026/01/04 1:20

**2025年におけるハッカーニュースで最も人気のあるブログ一覧**

## Japanese Translation: --- ## 要約 この記事は、投稿量、総投票数、およびフロントページへのリーチで評価された2025年の最も影響力のあるHacker Newsブロガーをランキングしています。 - **Simon Willison** は、1,000件以上(118本の全文)にわたる公正なAIツールレビューに焦点を当てた投稿で3年連続王者となっています。リンクブログスタイル―短い引用やコメント付きリンクのみ—は手間が少なく高価値なコンテンツを提供します。 - **Jeff Geerling** が2位にランクインし、10,813投票を集めてわずか9ポイントで3位を抜きます。100万人以上のサブスクライバーを持つYouTubeクリエイターであり、自動生成されたトランスクリプトを避けたテキスト中心の投稿を書いて、HN上で読みやすさを高めています。 - **Sean Goedecke** が新たなパワーハウスとして登場します。2025年に140件の投稿と47件のフロントページヒットを記録し、最も人気のある「How I ship projects at big tech companies」投稿は年間トップ100に入っています。技術職への明確な意見とビッグテック組織政治の解説でエンジニア層に共感されています。 - **Brian Krebs** は常にトップブロガーとして残り、2025年には政治的に重いトランプ時代の言論自由ストーリーを投稿し、一時的に#1になりましたがモデレーションで削除されました。 - **Neal Agarwal** はインタラクティブアートとビジュアルエッセイでフロントページを支配し、投稿の約半分が#1に達します。「Stimulation Clicker」は2025年で4番目に人気のある投稿です。 - **John Gruber** が6位で終わり、2011年以来最高の一年となり、2020年以来初めてトップ10入りしました。潜在的なシャドウバンを疑問視したことで注目されました。 - **Mahad Kalam** は単一投稿リストのトップに立ち、その年で最も投票されたエントリーです;**Byrann Huang** が続き、3位の投票数を記録しました。 この記事は2025年の完全なトップ100リストが別途文書化されていることを指摘し、将来の発表をほのめかしています。これらのランキングは読者がテックニュースにどのように関与するか、AI・職場文化・政治に関する議論を形作り、Hacker Newsや類似プラットフォームでのコンテンツ戦略のベンチマークとなります。

2025/12/29 1:12

**Ed25519‑CLI – Ed25519署名システム用コマンドラインインターフェース**

## Japanese Translation: ドキュメントは、Ed25519 用の lib25519 コマンドラインツールがどのように機能するかを説明しており、主に 3 つのユーティリティ―`ed25519-keypair`、`ed25519-sign`、`ed25519-open` に焦点を当てています。 * `ed25519-keypair` はランダムな鍵ペアを生成します:公開鍵をファイルディスクリプタ 5 に書き込み、秘密鍵を fd 9 に書き込みます。 * `ed25519-sign` は fd 8 から秘密鍵を読み取り、stdin(fd 0)からメッセージを読み取って署名し、署名済みメッセージを stdout(fd 1)に出力します。 * `ed25519-open` は fd 4 からアリスの公開鍵を読み取り、stdin(fd 0)から署名済みメッセージを読み取って検証し、復号された平文を stdout(fd 1)に書き込みます。 検証失敗時、`ed25519-open` はコード 100 で終了し、出力は行いません;他のエラーではすべてのツールが非ゼロで終了し、成功時にはゼロで終了します。 CLI は lib25519 の一部であり、X25519 暗号化と Ed25519 署名の両方を実装しています。2 つの X25519 ツールも存在しますが、別途ドキュメント化されています。現在のドキュメントバージョンは「Ed CLI」ウェブページ用で 2024.02.18 です。関連ユーティリティには `x25519-cli(1)` と `lib25519(3)` が含まれます。 これらのツールにより、ユーザーはシェルから直接暗号操作をスクリプト化したり、他言語で FFI を介して lib25519 の C API を呼び出すことで、安全な認証ワークフローをソフトウェアプロジェクトに組み込むことが可能になります。

2026/01/04 6:58

「一歩だけ踏み出しましょう」

## Japanese Translation: (全ての重要ポイントを組み込んでいます)** この文章は、大きな目標を設定すると扁桃体が闘争・逃走反応を起動し、ストレスや回避行動、進捗の停滞を引き起こすと説明しています。対照的に、目標を小さく段階的に分解することでこの反応を迂回し、不安を軽減しながら安定した行動が可能になります。実践的な戦術は次の通りです: - 「次に何をすべきか?」と自問すること; - 完全感覚でビジュアライゼーションを用いること; - 本全体ではなく1ページだけ読むこと; - ドアの近くにランニングシューズを置く(あるいは新しいものがない場合は注文しておく)ことで歩き始める。 これら小さな問題―例えば靴を持っているかどうか―を解決することで、後で大きな障害になるのを防げます。靴を履いたり短い散歩を終えたりといった控えめな報酬を祝うことは進捗を強化します。毎日1つの小さなステップ(例:1週間ドアにシューズを置き、次にそれらを履く)を繰り返すことで勢いが生まれ、各行動が徐々に長距離散歩や最終的には大きな野心へと導きます。マイクロアクションの累積効果は、個人開発コーチングや職場での目標設定において、生産性と幸福感を高めるために有用であることを示しています。

「チェスで自らに挑み、苦しむ」 | そっか~ニュース