Bun 1.4 が Rust で書き直された — 業務システムで採用してよいか | GH Media
URLがコピーされました

Bun 1.4 が Rust で書き直された — 業務システムで採用してよいか

URLがコピーされました
Bun 1.4 が Rust で書き直された — 業務システムで採用してよいか

「Node.js ではなく Bun で作りたい」という提案が開発チームから上がってくることがあります。起動が速い、依存が減る、テストランナーが同梱されている。開発者にとっての利点ははっきりしています。

判断する側が引っかかるのは別のところです。3年後にライブラリが動かなくなったとき、対応できる人が採用市場にいるのか。 業務システムの寿命は、ランタイムの流行より長いことが多いためです。

2026年8月にリリースされた Bun 1.4 は、この判断の材料が1つ増えた版でした。

何が変わったか

Bun 1.4 の中身で大きいのは3点です。

1つ目は、実装言語が Zig から Rust に置き換わったこと。 ランタイム全体が書き直されました。利用側の書き方は変わりませんが、Bun 本体に手を入れられる人の母数が変わります。 Zig は現在も安定版に達していない言語で、扱える開発者は限られていました。Rust であれば、少なくとも人を探せます。

2つ目は、Node.js 互換性の伸び。 Bun は Node.js 26 として振る舞うようになり、Node 自身のテストスイートの通過数が 1.3 から 1,517 件増えました。node:httpnode:fsnode:clusternode:timersnode:zlibnode:vmnode:stream が Node 側テストの97%を通過し、node:eventsnode:trace_eventsnode:sqlite は100%です。

実務上の意味は、「動くと分かっているツールが増えた」ことです。Playwright、Next.js 16、Vitest、OpenTelemetry が動作するようになりました。E2E テストと分散トレーシングが両方通るかどうかは、業務システムでは採用可否に直結します。

3つ目は、消費資源の低下。 HTTP サーバーのピークメモリが13〜48%減り、Express は負荷時に169MBから92MB、Next.js は397MBから285MBに下がったと報告されています。アイドル時の CPU 消費は 1.3 比で5分の1。hello-world の起動時間は Linux で10.9msから5.1msになりました。

指標Bun 1.3Bun 1.4
Express ピークメモリ(負荷時)169 MB92 MB
Next.js ピークメモリ(負荷時)397 MB285 MB
起動時間(hello-world / Linux)10.9 ms5.1 ms

速さより、メモリのほうが効く場面がある

ベンチマークの数字は目を引きますが、発注側にとって意味があるのはメモリのほうです。

クラウドのコンテナは、多くの場合メモリの割り当てで課金されます。常時稼働のアプリケーションが285MBで収まるか397MBで収まるかは、インスタンスサイズの段階が1つ変わるかどうかの差になり得ます。台数が増えるほど効きます。

一方で、起動時間5.1msが効く場面は限られます。サーバーレスのコールドスタートや、CI で何百回もプロセスを起動するテスト実行では意味がありますが、常時起動しているアプリケーションでは起動が速くても体感は変わりません。 「速い」という言葉で括らず、どの速さが自社の構成に効くのかを分けて聞いてください。

Bun 採用の判断を、常時稼働・CI・サーバーレスの3つの利用形態ごとに、効く指標と効かない指標で整理した図

採用してよい場合と、待つべき場合

判断を分ける軸は「壊れたときに切り戻せるか」です。

採用しやすいのは、開発時にしか動かない領域です。 テストランナー、ビルドスクリプト、開発サーバー、CI 上のツール実行。ここで問題が起きても、本番は止まりません。Node.js に戻す判断もその日のうちに下せます。E2E テストの実行環境として使うのは、この意味で入り口として妥当です。

慎重になるべきなのは、本番のアプリケーションサーバーです。 互換性が97%まで来ているということは、残る3%のどこかを踏む可能性が消えていないということでもあります。 業務システムでは、その3%が決済ライブラリや帳票生成といった、置き換えの効かない箇所に当たることがあります。

判断に使える条件は次のようになります。

  1. 本番で使う依存ライブラリを全部リストにして、Bun 上で動作確認が取れているか。 「たぶん動く」ではなく、実際に通ることを確認する。ここは着手前に済ませられます
  2. Node.js に戻す手順が現実的か。 ランタイム固有の API(Bun 独自の機能)を使い始めると、戻す難度が上がります。独自 API を使わない縛りを置けるかどうかが分岐点です
  3. 保守を誰が続けるか決まっているか。 委託先が変わったときに、次の会社が扱えるか。ランタイムの選定は保守体制の選定でもあるため、契約期間より長い視点で見る必要があります

Rust への移行が意味すること

実装言語の変更は、利用者から見れば直接の変化がありません。それでも触れておく価値があるのは、この種のプロジェクトが長く続くかどうかの材料になるからです。

書き直しの最中はバグが出やすく、実際にリリース直後は不安定さが指摘されています。新しい版が出た直後に本番投入しない、という原則はここでも同じです。 数ヶ月置いて、パッチ版がいくつか出てから評価するのが安全です。

ビルドツールが Rust で書き直されていく流れは数年前から続いており、Bun もその延長にあります。採用を急ぐ理由は薄く、様子を見るコストも低いというのが、業務システムから見たときの実像です。

次にやること

まず、自社の開発でいちばん時間を食っている工程を測ってください。 CI の実行時間か、ローカルのビルドか、テストか。Bun で改善するのはこのうち一部です。何も測らずに入れ替えると、速くなった実感が得られないまま保守対象だけが増えます。

そのうえで、本番と開発の境界を引いてください。 開発ツールとしてだけ使うなら、判断は軽くて構いません。本番のランタイムまで替えるなら、依存ライブラリの確認と切り戻し手順を先に用意してから決めてください。

技術スタックの選定、既存システムのモダナイゼーション、開発環境と CI の改善については、グリームハブの開発・AI・自動化のご相談で承っています。現在の構成と保守体制によって適切な選択が変わるため、個別にご相談ください。お問い合わせからどうぞ。

Sources

URLがコピーされました

グリームハブ株式会社は、変化の激しい時代において、アイデアを形にし、人がもっと自由に、もっと創造的に生きられる世界を目指しています。

記事を書いた人

鈴木 翔

鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

関連記事

「TECH」の記事一覧を見る