4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeの裏で動いている「Bun」を知っていますか? ── Node.jsより圧倒的に速いJavaScriptランタイムの全貌

4
Posted at

はじめに

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 installbun runbun testbun 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 initbun add の速度を、普段の npm initnpm 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 installbun run だけでも試す価値は十分にあります。一度体験すれば、なぜAnthropicがこのランタイムを手に入れたかったのか、実感できるはずです。


参考:

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?