はじめに
Claude Codeをインストールしたことがある方に質問です。
あなたがClaude Codeを起動するとき、裏で動いているのはNode.jsではありません。 Bunです。
2025年12月、AnthropicはJavaScriptランタイム「Bun」の開発元であるOven社を買収しました。Anthropic初の企業買収です。Claude Codeは内部的にBunの実行ファイルとして動作しており、Bunの高速な起動・実行性能がClaude Codeの体験を支えています。
「名前は聞いたことあるけど、結局何がすごいの?」という方のために、Bunの全貌を解説します。
Bunとは何か
Bun(バン) は、Jarred Sumner氏が2021年から開発しているJavaScript / TypeScriptランタイムです。Node.jsやDenoと同じカテゴリのツールですが、決定的に違うのは 「オールインワン」 という設計思想です。
【Node.jsの場合 ── ツールを組み合わせる】
ランタイム: Node.js
パッケージ管理: npm / yarn / pnpm
バンドラー: webpack / Vite / esbuild
テストランナー: Jest / Vitest
TypeScript: tsc / ts-node / tsx
【Bunの場合 ── 全部入り】
ランタイム: Bun
パッケージ管理: bun install(npm互換)
バンドラー: bun build
テストランナー: bun test(Jest互換の構文)
TypeScript: 設定不要。そのまま実行できる
Node.jsで開発環境を整えようとすると、複数のツールをインストールして設定ファイルを書く必要があります。Bunなら bun install → bun run → bun test → bun build ── これだけです。
なぜBunは速いのか
「速い」とだけ言われても信じがたいと思うので、技術的な理由を3つ説明します。
1. JavaScriptエンジンが違う
Node.jsはGoogleのChrome向けエンジン V8 を使っています。Bunは Apple の Safari 向けエンジン JavaScriptCore(JSC) を使っています。
JSCはV8と比べて起動時間が短く、メモリ使用量も少ない傾向があります。これがBunの「起動8倍速」の大きな要因です。
2. Zig言語で書かれている
Node.jsの内部はC++で書かれていますが、Bunは Zig という比較的新しいシステムプログラミング言語で書かれています。
Zigはメモリ管理を手動で行いますが、C++よりも安全なメモリアロケータを備え、コンパイル時に実行できる comptime という仕組みで実行時のオーバーヘッドを削減しています。Sumner氏はZigについて「C++やRustに比べてキーワードが少なく学びやすい上に、非常に生産性が高い」と語っています。
3. I/O処理を独自に最適化
Node.jsは非同期I/Oにlibuvを使っていますが、Bunはio_uring(Linux)やkqueue(macOS)を直接利用し、I/O処理のオーバーヘッドを最小化しています。
数字で見るBunの速度
百聞は一見にしかず。具体的な数字を見てみましょう。
| 項目 | Node.js | Bun | 差 |
|---|---|---|---|
| コールドスタート | 約60〜120ms | 約8〜15ms | Bunが約4〜8倍速い |
npm install 相当 |
数十秒〜数分(npm) | 数秒(bun install) | 大幅に高速 |
| テスト実行(Jest互換) | Jest基準 | bun test | Bunが大幅に高速 |
| Express.js リクエスト処理 | 基準 | 約3倍速い | Bun 1.2公式ベンチマーク |
| S3ファイルダウンロード | aws-sdk基準 | Bun.s3 | Bunが約5倍速い |
| Postgres行読み取り | pg基準 | Bun.sql | Bunが約50%速い |
特に bun install の速度は体験するとインパクトがあります。npmで数十秒〜数分かかっていたインストールが数秒で終わる世界は、一度味わうと戻れません。
Bun 1.2の注目機能 ── S3とPostgresが組み込み
2025年1月にリリースされた Bun 1.2 は、Node.js互換性の大幅向上に加えて、驚きの組み込み機能が追加されました。
組み込みS3クライアント
// AWS SDKなしでS3を操作
const file = Bun.s3("my-bucket/data.json");
// 読み込み
const data = await file.json();
// 書き込み
await Bun.s3("my-bucket/output.json").write(JSON.stringify(result));
@aws-sdk/client-s3 をインストールする必要がありません。Bun.s3はネイティブ実装のため、ダウンロード速度も約5倍高速です。
組み込みPostgresクライアント
// pgやprismaなしでPostgresに接続
const db = Bun.sql("postgres://localhost/mydb");
// クエリ実行(自動的にプリペアドステートメント化)
const users = await db`SELECT * FROM users WHERE age > ${18}`;
Bun.sql はコネクションプーリング、クエリパイプライニング、自動プリペアドステートメントをネイティブで実装しており、一般的なNode.js向けPostgresクライアントより約50%高速に行を読み取れます。
組み込みSQLite
import { Database } from "bun:sqlite";
const db = new Database("mydb.sqlite");
const users = db.query("SELECT * FROM users").all();
SQLiteは以前のバージョンから組み込まれており、外部パッケージなしで利用可能です。
Bunの弱点 ── 正直に書く
バラ色の話ばかりでは記事として不誠実なので、2026年3月時点のBunの弱点も正直に書きます。
1. エコシステムの成熟度
Node.jsは13年以上の歴史があり、あらゆるユースケースに対応するパッケージとノウハウが蓄積されています。BunはNode.js互換性を高めてはいるものの、一部のnpmパッケージで非互換が残っています。
2. 本番運用の実績
Node.jsはNetflix、PayPal、LinkedIn、Uberなどで大規模本番運用されています。Bunの本番運用実績はまだ相対的に少なく、予期しない問題に遭遇するリスクがあります。
3. Windowsサポート
BunはLinuxとmacOSでの動作が最も安定しています。Windowsサポートは改善が進んでいますが、Linux/macOSほどの安定性には達していません。
4. 未解決のIssue
GitHubのIssue数はBunが約4,700件に対し、Node.jsは約1,700件です。比較的新しいプロジェクトであるため、既知の問題がまだ多い状態です。
Node.jsから移行すべきか?
結論から言えば、「全面移行」は時期尚早だが、「部分導入」は今すぐ始める価値がある です。
今すぐBunを使うべきケース
| ケース | 理由 |
|---|---|
| 新規プロジェクト(グリーンフィールド) | TypeScript設定不要。オールインワンで最速起動 |
| CI/CDの高速化 |
bun install だけで体感が変わる |
| CLIツール開発 | 起動の速さはCLIで最も効く |
| サーバーレス / エッジ環境 | コールドスタート8〜15msが圧倒的 |
| スクリプトの実行 |
bun run script.ts でTypeScriptをそのまま実行 |
まだNode.jsを使うべきケース
| ケース | 理由 |
|---|---|
| 既存の大規模本番システム | 移行リスクとコストが高い |
| ネイティブアドオンに強く依存 | 一部のC++アドオンに非互換あり |
| Windows環境がメイン | 安定性がLinux/macOSに劣る |
| 特殊なnpmパッケージに依存 | 互換性を事前に確認する必要あり |
5分で試してみる
「速い」は体験しないとわかりません。5分でBunを試せる手順を載せておきます。
# インストール(macOS / Linux)
curl -fsSL https://bun.sh/install | bash
# バージョン確認
bun --version
# TypeScriptファイルをそのまま実行(tsc不要)
echo 'console.log("Hello from Bun!", Bun.version)' > hello.ts
bun run hello.ts
# パッケージインストールの速度を体感
mkdir test-project && cd test-project
bun init -y
bun add express @types/express
# ↑ npm install と比べてみてください
# 組み込みSQLiteを試す
echo '
import { Database } from "bun:sqlite";
const db = new Database(":memory:");
db.run("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)");
db.run("INSERT INTO test (name) VALUES (?)", ["Bun"]);
console.log(db.query("SELECT * FROM test").all());
' > sqlite-test.ts
bun run sqlite-test.ts
特に bun init → bun add の速度を、普段の npm init → npm install と比べてみてください。体感が全く違うはずです。
まとめ
| 項目 | 内容 |
|---|---|
| Bunとは | JS/TSランタイム+パッケージ管理+バンドラー+テストランナーのオールインワンツール |
| なぜ速い | JavaScriptCore+Zig言語+I/O最適化 |
| どれくらい速い | 起動4〜8倍、installは大幅高速、Express 3倍(対Node.js) |
| Bun 1.2の目玉 | 組み込みS3 / Postgres / テキストベースlockfile |
| Anthropicが買収 | 2025年12月。Claude Codeの実行基盤としてBunが使われている |
| 今使うべき? | 新規プロジェクト・CI高速化・CLIツールなら今すぐ。全面移行は慎重に |
Node.jsが「何でもできる安定したベテラン」だとすれば、Bunは「圧倒的に速い新世代」です。そしてAnthropicの買収により、AIコーディングツールのインフラとしても存在感を増しています。
少なくとも bun install と bun run だけでも試す価値は十分にあります。一度体験すれば、なぜAnthropicがこのランタイムを手に入れたかったのか、実感できるはずです。
参考: