16 ビット x86 DOS 用の完全機能版で遊べるチェスプログラム「AttoChess」、わずか 278 バイト。

2026/07/17 3:33

16 ビット x86 DOS 用の完全機能版で遊べるチェスプログラム「AttoChess」、わずか 278 バイト。

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

要約

Japanese Translation:

元の要約は、簡潔な概要として明確かつ正確で完結しており、改訂は必要ない。

要約:

AttoChess は、実行可能な DOS 将棋エンジンにおける従来のサイズ限界を破壊し、わずか 278 バイトにまで縮小したことで、レトロコンピューティング分野における画期的な成果を達成しました。この最小限のエンジニアリングは 2026 年に MIT ライセンスの下でリリースされ、前身である LeanChess を直接的に改良したものであり、16 ビット x86 ハードウェア上で完全なゲームループを実行可能にする絶対的な最低限度のコード量を示すことを目的としています。この劇的な縮小は、BIOS インター럽ト「int 29h」を介して生板データをストリーミングしたり、王手詰判定やフルチェックメイト検出などの非本質的な機能を削ぎ落とすなど、攻撃的な最適化によって実現されています。再帰的なミニマックス探索戦略および専用 0x88 スタイルのボード表現を保持しつつも、ピースの色間で命令を共有するために冗長な算術処理を排除しています。外部のグラフィカルインターフェースなしで決定論的な実行を目指した AttoChess は、単なる 4 文字の動き(例:"e2e4")としてフォーマットされたユーザー入力を待ち続けたまま無限ループに置かれ続けます。このリリースは、コードサイズの効率性の新たな基準を確立し、極限的な制約内で複雑なゲームロジックが存続できることを証明すると同時に、レトロコンピューティングコミュニティにおける低レベル最適化やミニマリズムへのさらなる探求に刺激を与えています。

本文

最小限のチェスエンジン:278 バイトの世界

AttoChess の概要

AttoChess は、16 ビット x86 DOS 環境下で動作する完全なチェスプログラムです。

  • サイズ: 278 バイト(ファイル全体)
  • 形式: x86 DOS .COM ファイル
  • 機能:
    • 盤面の描画と再描画
    • キーボードからの手番入力
    • **4 プリー(ply)**の最善手探索(最小限の深さ)
  • ライセンス: MIT
  • 著者: ニコラス・タナー (Nicholas Tanner)
  • 公開年: 2026 年

このプログラムは、単なるパフォーマンス競技ではなく、ブートから盤面描画、入力読み込み、探索実行までの全ループを278 バイトで完結させる実用的な作品です。


技術的系譜と革新

AttoChess は、以前の「最小のチェスエンジン」記録保持者である Dmitrey Shechtman 氏の LeanChess(288 バイト)を起源としています。 10 バイトの削減は、以下の二つの領域での最適化によって達成されました。

歴史的進化の軌跡

  • 1K ZX Chess (672 バイト, 1982) – David Horne / Sinclair ZX81
  • BootChess (487 バイト, 2015) – Olivier Poudade / x86 ブートセクター
  • LeanChess (288 バイト, 2019) – Dmitry Shechtman / x86 DOS (.COM) ★転換点
  • AttoChess (278 バイト, 2026) – Nicholas Tanner / x86 DOS (.COM)

最適化の詳細分析

01 · ディスプレイ(描画手法の廃止)

レンダリングバッファや文字列出力機能 (

int 21h/09h
) を排除し、直接ストリーミング出力を実現しました。

  • 旧方式: バッファ設定→ASCII 変換→終端記号追加→
    int 21h/09h
    一括出力(オーバーヘッド大)
  • 新方式 (AttoChess):
    • 境界は改行コード (
      CR, LF
      ) で直接表現。
    • int 29h
      (高速コンソール出力) を使用し、各バイトを即座に画面に描画。
    • プログラムメモリ内に盤面配列を予約する必要がない(パディングなし)。

アセンブリコード例:描画ループ

main_loop:
    mov si, offset board_db + 24   ; 黒方のバックランクから開始 (行 2)
    mov cl, 98                     ; 8 行分+最後のリターン処理
disp_loop:
    lodsb                          ; マスデータを読み取る
    test al, 30h                   ; ピースがあるか?(ASCII '0'-'9')
    jz disp_cont                   ; なしなら改行/NUL を出力
    inc ax                         ; 王 (K) のゼロベース調整
    and al, 27h                    ; ピースタイプと色フラグ抽出
    add al, 4Bh                    ; ASCII 文字に変換 (大/小文字自動)
disp_cont:
    int 29h                        ; [AL] を即座に出力
    loop disp_loop

02 · スタートアップ(BIOS の省略)

ビデオモード設定 (

int 10h
) を行わず、プログラムが動作する前提を明示しています。

  • cld
    : デフォルトの DF フラグクリアを強制。
  • mov cx, 13
    : 行数をハードコードし、入力での変数を依存しない設計。

03 · 入力処理(定数の折りたたみ)

ファイル・ランク座標へのマッピング演算を簡素化し、

imul
を利用した効率的な計算を実装しました。

  • 削減点: 入力マスク (
    and al, 0Fh
    ) と乗算セットアップ命令を削除。
  • 手法: ASCII バイアスをベースアドレスに直接統合。16 ビットオーバーフローを利用。

アセンブリコード例:入力デコーダ

read_sub:
    mov bp, di
    mov di, offset board_db + 123 + 0CE0h  ; ベースアドレスに定数畳み込み
    mov ah, 01h
    int 21h                                ; ファイル文字入力
    add di, ax                             ; オフセット加算
    int 21h                                ; ランク文字入力
    imul ax, 12                            ; (12 * ランクオフセット) 高速計算
    sub di, ax                             ; 目標マスへジャンプ

04 · 探索ループ(レジスタの再利用)

再帰探索中のスタックフレーム読み込みを削減。CX レジスタは常に「深度カウンター」として維持されます。

  • 手法:
    loop
    命令ではなく、ポインタ比較でループ制御。
  • 効果:
    mov cx, [si + 32]
    のような深度復元作業が不要になる。

アセンブリコード例:探索ループ制御

src_cont:
    inc bp
    cmp bp, offset board_db + 120  ; 盤面末尾越えか?
    jnz src_loop                    ; 未超えなら継続 (CX は維持)

05 · 歩兵の移動判定(色と方向の統合)

ベクトルパリティと先手権限を組み合わせ、方向テストを単一の XOR 命令で完結させました。

  • 手法:
    xor al, dh
    で符号ビットと先手権限を同相化。
  • 結果: カラー依存の別コードパスが不要になり、共通処理で両色に対応。

アセンブリコード例:歩兵移動判定

pawn:
    push ax
    xor al, dh          ; 符号 XOR 先手権限 (bit 5 に整合)
    test al, 20h        ; 前方移動か?(負の符号ビット)
    pop ax              ; フラグ状態維持のため POP
    jz vec_cont         ; 後方なら却下
    test al, 1          ; 斜め移動か?(奇数オフセット判定)
    jnz pawn_cont       ; 斜めなら取処理へ
    xor ah, 30h         ; 直進なら宛先色反転 (空マス確認用)
pawn_cont:
    test ah, dl
    jz vec_cont

環境設定と実行方法

コンパイル手順 (MASM/TASM)

80186 コードを生成し、

.COM
形式の 278 バイトファイルを出力します。

tasm AttoChess
tlink /t AttoChess        ; /t オプションにより .COM ファイルを生成
ls -l AttoChess.com       ; 確認:サイズは 278 バイト

DOS 環境での実行 (DOSBox 例)

標準的な DOS インターフェンス (

int 21h
,
int 29h
) のみのため、エミュレータでも本機でも動作します。

dosbox
mount c: .
c:
AttoChess.com

プレイガイド

  • 対戦スタイル: プレイヤー vs コンピュータ(黒方自動レスポンス)
  • 入力の形式:
    [初期ファイル][初期ランク][目標ファイル][目標ランク]
    の 4 文字(例:
    e2e4
  • 盤面表示: 各一手ごとに自動再描画され、4 プリーまでの最善手が探索されます。

スコープと制限事項

AttoChess は記録達成のための最小限の設計であり、以下の特徴を持っています。

実装されている機能

  • 基本ルール: 全ての駒移動と捕獲ロジックを実装。
  • 探索: 真正な再帰型ミニマックス(4 プリー)。

制限事項 (典型的な小型チェスエングのトレードオフ)

  • 欠落した機能:
    • 王手詰めの判断
    • 王冠 (キャスリング)
    • パスアンパサント (en passant)
    • 歩兵の昇進 (プロンプト)
  • 入力処理:
    • イレガルドな動き(例:
      g1e2
      )はバリデーションされず、単純にエラーとみなします。
    • 「合法な手が存在しない局面」では探索停止(スコア 0)。

結論: これらの制限こそが、278 バイトという圧倒的なコンパクトさを担保しており、この記録の真価を体現しています。

同じ日のほかのニュース

一覧に戻る →

2026/07/16 23:46

Kimi K3:オープン・フロンティア・インテリジェンス

## Japanese Translation: Kimi K3 は、ネイティブビジョン機能と 100 万トークンのコンテキストウィンドウを備えた、開かれた 2.8T パラメータモデルであり、同クラスにおいて初めてこの規模に達したものです。Kimide Delta Attention (KDA)、Attention Residuals (AttnRes)、Stable LatentMoE(896 のエキスパートのうち 16 を有効化)を活用し、Kimi K2 に比べて約 2.5 倍のスケーリング効率向上を実現しています。API、モバイルアプリ(iOS、Android、HarmonyOS)、デスクトップアプリ(Windows/Mac v3.1.0 以降)、ターミナル(Kimi Code)、および Kimi Work プラットフォーム経由で現在利用可能です。完全なモデル重みは 2026 年 7 月 27 日にリリース予定です。 発売時はデフォルトで"max"の思考努力で動作し、将来のアップデートで低い effort と高い effort のモードが個別に導入される予定です。全体的一般ベンチマークでは Claude Fable 5 や GPT 5.6 Sol などのプロプライエタリモデルに劣りますが、「max」推論(temperature = 1.0, top-p = 1.0)を使用する際は、評価スイート内でテストされた他のすべてのモデルで一貫して高スコアを獲得しています。NVIDIA H200 上での Kernel Optimization テストでは、Claude Fable 5 と競合的な性能を誇り、Opus 4.8、GPT 5.6 Sol、GPT 5.5 を大幅に上回っています。また、NanoTriton を成功裏に構築しており、これは Triton や torch.compile に匹敵するかそれ以上のパフォーマンスを発揮しながら、エンドツーエンドの nanoGPT 訓練を継続可能なカスタム GPU コンパイラです。 ドメイン固有のベンチマークでは Kimi K3 が内部指標で優位を示しています:DeepSWE(67.5)、Program Bench(77.8)、Terminal Bench 2.1(88.3)。顕著なケーススタディには、48 時間以内にナノモデルを供給するチップの自律的デザイン(シミュレーションにおいて 100 MHz のタイミングクロージャー達成および>8,700 トークン/秒のデコードスループット達成)、ならびに 20 以上の論文を相互検証し Python コード 3,000 行以上を生成することで複雑な天体物理学研究タスクを数週間から約 2 時間へと短縮する実績が含まれます。 Kimi Work には、永続的な視覚インタラクションのためのウィジェットおよびダッシュボード、そしてネイティブ動画編集機能を搭載した新機能が追加されました。モデルは API 経由で利用可能で、入力/出力それぞれに対し MToken あたり 0.30 米ドル・3.00 米ドル・15.00 米ドルの料金体系を適用しています。制限事項としては、思考履歴への感受性(特定のハネス互換性を必要とする例:Kimi Code など)、および曖昧なタスクに対して過度の能動性を示す傾向があり、これらには明示的な振る舞い制約が必要です。

2026/07/17 5:18

LM Studio Bionic:オープンソースモデル用の AI エージェント

## Japanese Translation: LM Studio Bionic は、機密データを厳格な「ゼロデータ保持ポリシー」に従って安全に処理するために設計された専用のワークアプリケーションとして発売されました。このポリシーにより、文書やコードがより広範なシステムの学習に使用されることは一切ありません。プラットフォームは柔軟な実行環境を提供しており、ユーザーは自身のハードウェア上でローカルにタスクを実行できるほか、LM Link プロトコルを介して接続したり、処理直後にリクエストを削除する安全なクラウドを利用したりすることができます。ただし、クラウドモデルへのアクセスには LM Studio アカウントの作成および課金設定が必要です。主な機能としては、Mistral AI Voxtral を活用したオフライン音声認識と、GLM 5.2 や Kimi K2.7 Code のようなモデルを用いた高度なコーディング能力(ローカルコードベースの検査、説明、編集)が挙げられます。文書処理には PDF スライド表計算シートなどが含まれます。すべてのファイルはサンドボックス化された「Work project」環境内で安全に扱われます。今後のアップデートでは、ジョブごとに特定モデルを選択するための Bionic エージェントおよび、文書の変更を元に戻せる自動チェックポイント機能が導入されます。このソリューションは、ユーザーのプライバシーを犠牲にしてモデル学習を行うプラットフォームとは異なり、組織がコードベースの検査や PDF の分析などを実行しながら、コストを正確に管理でき、安心して作業を進められるよう支援します。

2026/07/17 1:06

Microsoft Comic Chat がオープンソース化されました

## Japanese Translation: Microsoft は、1990 年代に登場し、テキストとイラスト化された漫画パネルを組み合わせた画期的なチャットクライアント「Comic Chat」のオープンソース版を正式に公開しました。このソフトは、ダビッド・DJ・カルランダー氏により Microsoft Research で 1995 年に構想され、Visual C++ 4.0 と MFC を用いて開発されました。同年に Internet Explorer 3 に、その後 Windows 98 にも組み込まれ、24 の言語に対応してリリースされました。「Comic Sans」フォントを最初にスピーチバブル会話の文脈で採用したことで同フォントを広めたのもこの製品です。実際のチャットセッションのトランスクリプトから、漫画家 Jim Woodring 氏が独自のビジュアル資産を作成し、システムは会話を示す手がかりを読み取り、自動的にポーズ、表情、ジェスチャー、パネルレイアウトを生成しました。これは SIGGRAPH '96 の論文で「自動イラストレーション構築の実験」として記述されています。Comic Chat は現代のリアクション、スタicker、GIF、AI 生成コンテンツ、そしてビデオが登場する以前の技術であり、それらの機能を先駆けとしたノスタルジックなアーチファクトとして機能します。オープンソースリリースの一環として、Microsoft は元々の C++/MFC コードを現在の Visual Studio ツールおよび高解像度 Windows システムで動作させるための AI による近代化試みを含めており、これらは洗練されたリイシューではなく、現代的な IRC サーバーとの互換性を示す実用サンプルとして提示されています。この取り組みはソフトウェアの歴史を保存すると同時に、開発者、歴史家、愛好家がソースコードを探索し、実験し、1990 年代の技術を基にした新たな形で創作できるよう促しています。