AIが6日間で96万行を書き換えた——BunのZigからRustへの衝撃的移行
JavaScriptランタイム「Bun」が、Anthropicの買収後わずか数ヶ月でZigからRustへの大規模移行を敢行。Claudeエージェントが6日間で96万行のコードを書き換えるという前例のない出来事が、ソフトウェア開発の常識を塗り替えようとしている。
- Bun
- Rust
- Zig
- JavaScript
- AI
- Claude
- Claude Code
2026年5月14日、GitHubにひとつのプルリクエストがマージされた。PR番号は #30412、タイトルは 「Rewrite Bun in Rust」。その中身は、6,755コミット、2,188ファイル変更、100万行超の追加——そして、たった6日間という制作期間だった。
ソフトウェアエンジニアリングの世界に「6日間で100万行のシステムコードを書き換える」という前例はなかった。この出来事が何を意味するのか、まずBunとは何かというところから整理していこう。
Bunとは何か——Node.jsの「全部入り」対抗馬
Bun は、JavaScriptの実行環境(ランタイム)である。だが単なるランタイムにとどまらない。
Bunは、JavaScriptエンジンにJavaScriptCore(Safariを支えるエンジン)を採用し、パッケージマネージャー、バンドラー、トランスパイラー、テストランナーの5つの主要ツールをひとつの実行ファイルに統合した「オールインワン」ソリューションだ。
従来のNode.js開発では、実行環境そのものにnpm(またはyarn/pnpm)、webpack、Babel、Jestといったツールをバラバラに組み合わせて使う必要があった。Bunはこれらをすべて内包し、設定ファイルの海から開発者を解放することを目指している。
BunはNode.jsが複数のツールに分散していた機能——ランタイム、パッケージマネージャー、バンドラー、Jestと互換性のあるテストランナー——を単一のバイナリに統合し、起動時間、パッケージインストール、CPU負荷の高い処理において大幅な性能向上を実現している。
速度においても際立っている。現時点でBunはNode.jsの3〜4倍高速であり、半分以上の設定ファイルを不要にする統合ツールチェーンとともに、Anthropicという強力なバックアップを得ている。
TypeScriptをそのまま実行できる点も開発者に刺さる。設定なしでTypeScript、JSXを解釈し、tsc も ts-node も不要だ。
なぜZigで書かれていたのか
Bunの生みの親、Jarred Sumner がBunの開発を始めたのは2022年のこと。Jarredが当時Zigを選んだ理由は「クールだから」ではなく、GCなし・重厚なランタイムなしで小さなチームが高性能なJSランタイムを迅速にプロトタイピングできる言語だったからだ。Zigの低摩擦な直接メモリ操作とシンプルなCインターオペラビリティこそが、極めて小さなチームでもパフォーマンス面で大きな成果を出せた根本的な理由だった。
つまりZigは、Bunというプロジェクトの「背骨」だった。アーキテクチャも、データ構造も、低レベル設計も、すべてZigによって形作られてきた。
Anthropicによる買収
2025年12月3日、Anthropicが Bunを買収 した。この買収は、Claude CodeがローンチからわずかIか月で10億ドルの年換算売上高を達成するというマイルストーンと時を同じくしていた。
AnthropicはBunがClaude Code、Claude Agent SDK、そして将来のAIコーディングツールを支えると説明し、プロジェクトはオープンソースかつMITライセンスのままで、同じチームが開発を続けると述べた。
買収の背景には実用上の動機があった。直接のきっかけはBunの慢性的なメモリリーク問題で、最大顧客であるClaude Codeに深刻な影響を与えていた。セッションによってはメモリ使用量が14GBから23GBにまで膨れ上がることがあった。
Claude Codeを使っていて「なんかやたら重いな」と感じていたユーザーの記憶は正しかった——原因はBunにあったのだ。
6日間の奇跡——あるいは実験
発端:600行のガイドドキュメント
2026年5月4日、GitHubに最初のコミットが現れた。内容は docs: add Phase-A porting guide。Claudeエージェントが実際の作業に入る前、チームはZigのあらゆる型・イディオム・パターンをRustの対応物にマッピングした600行の詳細なドキュメントを整備した。このドキュメントによって、AIが生成するコードが元のアーキテクチャ——純粋なコールバックやステートマシン——を維持できるよう設計され、TokioやRayonといったフレームワークを意図的に避けることも明示されていた。
無計画に「AIに丸投げ」したわけではない。移行を成功させるための入念な準備が先にあった。
4つのフェーズで進む自動翻訳
このリライトはClaudeのAIコーディングエージェントが4段階で実行された。エージェントはZigコードベース全体を受け取り、Rustを並列生成し、コンパイラエラーを反復的な修正ループにフィードバックし、既存のテストスイートに対して互換性を検証した。開始時点では16,000件以上のコンパイラエラーがあり、それが6日間で99.8%の通過率に到達した。
複数のサブブランチが並列で走っていた記録も残されている。claude/bench-until-green(ベンチマークが緑になるまでループするブランチ)、claude/code-dedup(コードの統合)、claude/ci-auto-fix-53852 などCI障害を自動修正するブランチが並走していた。
まるでClaude同士が並列でレビューし、修正し、最適化し合っているような光景だ。
数字で見るスケール感
この書き換えの規模を改めて整理してみよう。
- コード行数: 約96万行(Rust追加行数は100万行超)
- 変更ファイル数: 2,188ファイル
- コミット数: 6,755コミット
- 所要時間: 6日間(PRオープン:5月8日、マージ:5月14日)
- テスト通過率: 99.8%(Linux x64 glibc)
2026年5月14日、BunのクリエイターJarred SumnerはPR #30412をマージした。このブランチはAnthropicのClaude AIエージェントによってほぼ全面的に生成されたものだ。これは大規模なAI駆動コードベース移行の、最初の実証例のひとつとなった。
ブランチ名が語るもの
ブランチ名は claude/phase-a-port。隠す気が一切ない。準備は方法論的に進められた。実際のリライトが始まる前に、チームはZigのイディオムをRustの等価物にマッピングした詳細なZig-to-Rustポーティングガイドをコミットし、内部スマートポインタ型をRustの対応型にあらかじめマッピングし、bun_collections Rustクレートを準備していた。これは衝動的な判断ではなく、慎重に地盤が固められた計画だった。
コミュニティの反応——称賛と懸念
「vibe porting」という皮肉
99.8%というテスト通過率は印象的だが、批判も激しかった。最大の論点は unsafe ブロックの数だ。
移植されたコードには13,044個の unsafe ブロックが含まれている。同規模のRustプロジェクトである uv の73個と比較すると、その差は歴然だ。
Rustの安全性保証はコンパイラによる厳密な所有権チェックにある。しかし unsafe ブロックはそのチェックを無効化する「抜け穴」であり、Cと同様の危険性を内包する。テスト通過率はランタイムの公開インターフェースにおける振る舞いの正しさを検証するが、それは新コードベースの13,000件超の unsafe ブロックが実際に正しいかを検証することとはまったく別の話だ。
開発者コミュニティでは「vibe porting(バイブコーディング的な移植)」という造語が生まれた——統計的には機能するが、深い理解を欠いたAI主導の翻訳、という意味を込めて。
Zigコミュニティへの衝撃
BunはZig最大のフラッグシッププロジェクトだった。Zigが土台を作り、Claudeが建物を建て、人間のレビュアーはまだ到着途中だ。この建物がいつまで住み続けられるかは、最初に水漏れが起きたとき誰かが設計図を読めるかどうかにかかっている。
Zig Software Foundation のメンバーであるLoris Croは以前、ZigコードベースへのLLMの貢献を「総じてネガティブ」と表現していた。Bunのリライトはその文脈でZigコミュニティに静かな衝撃を与えた。
循環する皮肉
ここに奇妙なフィードバックループが生まれた。Claude Codeがメモリリークで重くなり、AnthropicはClaudeにBunを書き直させ、書き直されたBunが再びClaude Codeを動かす——という構造だ。
AIが自分自身の動作環境を書き直す。SFの設定のような話だが、これは2026年5月の現実だ。
何が変わるのか——ソフトウェア開発の未来
「書き換え」のコストが消える日
もし96万行のシステムレベルランタイムが6日間でAIによって移植できるなら、ソフトウェア書き換えの経済学は根本から変わる。メンテナンス、レガシー移行、言語移植——歴史的に高コストでリスクの高かった作業が、扱いやすいものになる。
これはBunに限った話ではない。COBOLの膨大なレガシーコード、古いC++システム、サポートの切れた言語で書かれたインフラ……そういったものの書き換えに新しい選択肢が生まれたことを意味する。
人間のレビュアーは何をすべきか
6,755コミット、100万行のdiffは通常のPRフローで人間がレビューできる規模ではない。
AIが書いたコードをAIが検証し、AIがデプロイする——このサイクルにおいて、人間の役割はいったいどこにあるのか。「設計図を読む人間」がいなければ、最初の水漏れは大惨事になりうる。
Jarred自身も認めている。JSバウンダリをまたぐ際のメモリ問題はRustコンパイラも対処できず、人間に依存している。そしてそれらの人間に依存する部分は、誰もレビューしていない、と。
それでも前に進む
v1.3.14——Zigによる最終リリース——は今もCanary版として存在し、Rustビルドは段階的に安定化が図られている。Jarredは当初「捨てる可能性が高い実験」と言っていたが、それは6日後に「Zigの最後のバージョン」という一文に変わった。
このポートはまだ完成していない——99.8%は100%ではなく、AIによる翻訳が不十分な箇所も指摘されている。しかしこの実験がmainブランチに到達したという事実自体が、Bunだけでなく、ソフトウェア書き換えに対する私たちの考え方の新たな章の始まりを意味している。
Claude CodeはBunが動かし、BunはClaudeが書いた。その構造を自分自身で体感している開発者のひとりとして、これが単なる技術的な珍事ではないと思う。「書く」という行為のコストが変わるとき、ソフトウェアエンジニアリングという職業の定義も静かに書き換えられていく。
Zigが作った土台の上に、Claudeが建物を建てた。次にその建物に住む人間が何をするかが、問われている。
Last updated