Bunとは何か、そしてなぜClaude Codeに関係するのか

Anthropicのコーディングエージェント「Claude Code」は、単体で動くネイティブバイナリとして配布されている。この中には、JavaScriptランタイム兼バンドラーである「Bun」がまるごと同梱されている。Bunは開発者Jarred Sumner氏が生み出した高速ランタイムで、これまでZig言語で書かれてきた。そのSumner氏本人が「BunをRustで書き直した」と明かし、しかも「Claude Code v2.1.181(2026年6月17日リリース)以降はすでにこのRust版を使っている。Linuxでの起動が10%速くなったが、それ以外はほとんど誰も気づかなかった。地味であることは良いことだ」と投稿した。

stringsコマンドが暴いた証拠

この主張を検証したのが著名開発者Simon Willison氏だ。手元のclaudeバイナリに対しUnixのstringsコマンドを使い、次の2点を確認している。

  • strings ~/.local/bin/claude | grep -m1 'Bun v1' を実行すると「Bun v1.4.0」が出力される。公開されているBunの最新版はv1.3.14(5月12日リリース)であり、v1.4.0はまだ正式リリースされていないプレビュー版のバージョン番号だった(その後、Bunのcanaryチャンネルbun upgrade --canaryとして公開されたことが判明)。
  • strings ... | grep -Eo 'src/[[:alnum:]_./-]+\.rs' を実行すると、src/bundler/bundle_v2.rsなど563個のRustソースファイルパスがバイナリ内から見つかった。旧来のZig実装ならこの痕跡は残らない。

さらに別の開発者は、BUN_OPTIONS="--preload=..." claude --version という形でBunに直接バージョンを出力させる手法も示し、同じく1.4.0であることを裏付けた。

静かな入れ替えが意味すること

重要なのは、Anthropicがバージョン発表もなく、しかもBun側でもまだ正式リリース前のcanaryビルドを、何百万台もの端末で動くClaude Codeの本番バイナリに組み込んでいた点だ。API互換性が保たれていれば、内部実装は黙って刷新してよい、というインフラ運用の思想がここに表れている。

実務への影響

日本のエンジニアやIT管理者にとっても示唆がある。第一に、いま配布されるCLIツールは「ただのスクリプト」ではなく、ランタイムごと同梱したネイティブバイナリであることが増えている。stringsのような古典的なUnixコマンドは、依存関係やライセンス、意図しない情報の混入をチェックする手段として今も有効だ。第二に、自社で配布するバイナリについても、想定外の文字列(デバッグ情報、内部パス、まれに秘密情報)が埋め込まれていないか、同じ手法で棚卸ししてみる価値がある。第三に、大手AIベンダーであっても基盤ランタイムのcanaryビルドを先行投入する運用は珍しくなく、破壊的変更を伴わない基盤刷新は積極的に取り込む文化がある、という一例として参考になる。

筆者の見解

今回面白いのは、新機能の話ではなく「中身がいつの間にか差し替わっていた」という運用姿勢そのものだ。派手な発表やメジャーバージョンアップを打たず、互換性を保ったまま土台を強くしていくやり方は、地味だが学びが多い。筆者は日頃からClaude Codeを実務で使い倒しているが、内部実装の細部を逐一追いかけるよりも、実際に使って成果を出すことのほうがずっと重要だと考えている。その意味で、今回の話は「気づかれないくらい自然に速くなっていた」という結果こそが評価に値する。

もう一つ心に留めておきたいのは、Simon Willison氏の姿勢だ。ベンダーの発表を鵜呑みにせず、自分の手元のバイナリを実際にstringsで覗いて検証する。この「自分で確かめる」態度は、AIツールが次々と登場する今の時代にこそエンジニアに求められる基本動作だと思う。


出典: この記事は Claude Code uses Bun written in Rust now の内容をもとに、筆者の見解を加えて独自に執筆したものです。