2026年10月10日、JavaScriptの実行環境「Bun(バン)」の新しいバージョン v1.4.3 が公開されました。小さな番号の更新に見えますが、中身はかなり盛りだくさんです。いちばんの目玉は、TypeScriptの「型チェック」を行う機能 bun check が組み込まれたことです。TypeScript公式のチェッカーより3〜6.4倍速いと発表されています。
今回は「Bunって名前は聞いたことがあるけれど、よく知らない」という方にも読んでいただけるように、そもそもBunとは何か、型チェックとは何か、という基本からお話しします。
Webサイトの画面を動かすJavaScriptは、もともとブラウザの中で動く言語でした。それをパソコンやサーバーの上でも動かせるようにした「実行環境(ランタイム)」がNode.jsです。いまでは多くのWebサービスのサーバー側が、Node.jsで動いています。
Bunは、このNode.jsと同じ役割をもつ、新しいランタイムです。Node.js向けに書かれたプログラムの多くがそのまま動くように作られていて、そのうえで次のような特長があります。
bunという1つのコマンドにまとめています.tsファイルをbun index.tsのように直接実行できますたとえるなら、Node.jsが「必要な道具を自分でそろえる工具箱」だとすると、Bunは「よく使う道具がひととおり入った、軽くて速い工具セット」のようなものです。今回のv1.4.3で、この工具セットに「型チェック」という大事な道具が新しく加わりました。
tscで行っていました。v1.4.3の変更点はとても多いのですが、初めての方に押さえていただきたいのは次の3つです。
bun check」が加わりました: TypeScriptの型チェックを、Bunだけで、しかも速く行えるようになりましたbun installのムダなダウンロードが減りました: 実際には使わないパッケージを、わざわざダウンロードしなくなりましたこのほかにも、セキュリティの強化や多数の不具合修正が含まれています。順番に見ていきましょう。
まずは、型チェックが見つけてくれる間違いの例を見てみましょう。次のプログラムは、税込み価格を計算する関数に、うっかり文字列の"1000"を渡してしまっています。
// price.ts
function addTax(price: number): number {
return Math.floor(price * 1.1);
}
console.log(addTax("1000")); // ← 数値ではなく文字列を渡してしまっている
JavaScriptは柔軟な言語なので、このまま実行してもエラーで止まらず、気づかないまま間違った動きをすることがあります。こうした間違いを、実行する前に教えてくれるのが型チェックです。bun checkを実行すると、次のように知らせてくれます(表示はイメージです)。
> bun check
error: TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
(訳:'number'型の引数に'string'型は渡せません)
Found 1 error in 1 file
このように、エラーの番号(TS2345など)やメッセージは、これまでのtscとまったく同じものが表示されます。
型チェックは、プロジェクト内のすべてのファイルの関係を調べるため、規模が大きくなるほど時間がかかります。数秒〜数十秒待たされることも珍しくありません。この待ち時間が長いと、「保存するたびにチェックする」「テストの前に必ずチェックする」といった使い方がしにくくなります。
bun checkは、パソコンのCPUのコアをすべて使って並行に処理することで、この待ち時間を大きく縮めました。Bunの発表によると、主なプロジェクトでの比較結果は次のとおりです(16コアのApple silicon Macで計測)。
| プロジェクト | ファイル数 | bun check | tsc 7.0.2 | 速さ |
|---|---|---|---|---|
VS Code(src) | 9,795 | 1.24秒 | 5.98秒 | 4.8倍 |
Next.js(packages/next) | 2,881 | 0.28秒 | 1.82秒 | 6.4倍 |
| Nuxt | 839 | 0.27秒 | 0.80秒 | 3.0倍 |
使うメモリも少なく、VS Codeのソースではtscの7.97GBに対して2.14GB(約3.7分の1)でした。全体では、速さは3〜6.4倍、メモリは2.2〜4.9分の1と発表されています。
※比較相手の「tsc 7.0.2」は、TypeScriptチームがGo言語で書き直して大幅に高速化した、最新世代のtscです。つまり、すでに速くなった公式版と比べても、さらに数倍速いということになります。数値はBun開発元の発表で、当社では計測していません。
「速いけれど、チェックが甘いのでは?」と心配になるかもしれません。bun checkは、TypeScript公式のGo版(typescript-go)を移植したもので、TypeScript 7.0.2の公式テスト51,210件にすべて合格しているそうです。さらに、公開されている72のプロジェクトでtscと結果を比べたところ、違いが出たのは1件(vuejs/core)だけだったと報告されています。
使い方はとてもかんたんです。tsconfig.json(TypeScriptの設定ファイル)があるフォルダで、次のように実行します。typescriptパッケージを別にインストールする必要はありません。
# プロジェクト全体を型チェックする
bun check
# 型チェックに合格したら実行する(型エラーがあれば実行しない)
bun run --check src/index.ts
# 型チェックに合格したらテストを実行する
bun test --check
# 型チェックに合格したらビルドする(型エラーがあれば何も出力しない)
bun build --check ./src/index.ts --outdir out
特に便利なのが、--checkを付けるだけで「チェックしてから実行」ができる点です。これまではtsc --noEmit && bun run ...のように2つのコマンドをつなげていた作業が、1つで済むようになりました。package.jsonに書いたスクリプトでも、bun run --check devのように使えます。
bun checkはチェックだけを行い、JavaScriptファイルや型定義ファイル(.d.ts)は出力しません。ライブラリを公開するために.d.tsが必要な場合は、引き続きtscを使いますbun checkにはありません。エディタ上では、これまでどおりTypeScript公式の仕組みが動きますstrict(厳しいチェック)をオフにした設定では、tscと結果が異なるケースが報告されています。チームの本番の確認作業を置き換える前に、一度tscと結果を見比べておくと安心ですWebサーバーは、リクエスト(アクセス)が来ていない時間のほうが長いことがよくあります。理想は、その間はぐっすり「寝て」いて、CPUをほとんど使わないことです。
ところがv1.4.2までのBunは、一度でもリクエストを受けると、メモリ掃除(GC)のタイマーが1秒ごとに動き続け、何もしていなくても毎秒目を覚ましていました。v1.4.3ではこれを改め、必要なときだけ起きるようになっています。
| フレームワーク | v1.4.2 | v1.4.3 | 削減率 |
|---|---|---|---|
| Express | 282ミリ秒 | 57ミリ秒 | 約80% |
| Hono | 195ミリ秒 | 21ミリ秒 | 約89% |
| Next.js(SSR) | 815ミリ秒 | 268ミリ秒 | 約67% |
※負荷テストのあと、10秒ごとに死活確認(ヘルスチェック)だけを受ける状態で、2分間に使ったCPU時間を比べたものです(Linux x64、Bun開発元の発表)。
1台では小さな差に見えますが、クラウドで多数のサーバーやコンテナを動かしている場合や、使ったCPU時間に応じて料金がかかるサービスでは、コストや電力の節約につながります。アップデートするだけで効果が出るのもうれしい点です。
bun installは、プロジェクトに必要なパッケージ(部品)をインターネットから集めてくるコマンドです。v1.4.3では、ロックファイル(どのバージョンを使うかを記録したファイル)がない状態でインストールするときに、最終的に使わないパッケージをダウンロードしなくなりました。
たとえば、自分のパソコンとは別のOS向けの部品や、--productionで除外した開発用の部品などです。例として、npm@10.9.2をインストールしたときのダウンロード数は、196個から1個に減ったそうです。初めてプロジェクトを準備するときの待ち時間が短くなります。
ここからは、すでにBunをお使いの方向けに、主な改善点をかいつまんでご紹介します。
Bun.FetchSession: 通信の設定(TLS、プロキシ、接続の使い回し)を、用途ごとに分けて管理できる新しい仕組みです。「この外部APIだけは社内プロキシを通す」といった使い分けがしやすくなりますNO_PROXYでワイルドカードやCIDR(192.168.0.0/16のような範囲指定)が使えるようになり、ALL_PROXYにも対応しました。社内ネットワークで開発している方には助かる改善ですnode:httpの高速化: 大きなレスポンスを返すときに、最大2.7倍速くなりましたPromise.allSettledの改善: 大量の失敗(reject)を扱う場合の処理が、10万件で24秒から0.148秒に短縮されましたbun buildの改善: 入口(エントリポイント)が多いビルドでのメモリ使用量が、800件の例で2,121MBから276MBに減りました。--compileで作った実行ファイルの起動を速くする、--bytecode-orderオプションも加わっています--disallow-code-generation-from-strings: eval()やnew Function()のように、文字列からプログラムを作って実行する機能を禁止できます。セキュリティを重視する場面で役立ちますCompressionStreamに圧縮レベルの指定(level)が加わり、Bun.serveがダウンロードの安全な再開(If-Range)に対応しましたこのほかにも、fetch()、node:tls、テストランナー、SQLクライアントなど、多くの部分で不具合が修正されています。すべての変更点は、末尾の参考資料の公式リリースノートをご覧ください。
v1.4.3では、いくつかの細かい動きが、より正しい(仕様どおりの)方向に変わりました。ほとんどの方には影響ありませんが、念のためご確認ください。
fetch(): プロキシが接続を断ったとき、ERR_PROXY_TUNNELというエラーになるようになりました。エラーの種類で処理を分けている場合は、確認をおすすめしますBigInt("-")など: 中身のない文字列("-"、"+"、"0x")をBigIntに変換すると、エラー(SyntaxError)になるようになりました(a?.b)(x)の書き方: aが空(nullまたはundefined)のとき、エラー(TypeError)になるようになりましたfile://のURL: fetch("file://ホスト名/パス")で、ホスト名が空かlocalhostでない場合はエラーになるようになりました業務で使っているシステムをアップデートするときは、いきなり本番に入れるのではなく、開発環境でテストを一通り流してから切り替えるのが安心です。
最後に、Windowsのパソコンでbun checkを試す手順をご紹介します。
PowerShellを開いて、次のコマンドを実行します。
# 初めてインストールする場合
powershell -c "irm bun.sh/install.ps1|iex"
# すでにBunが入っている場合は、最新版に更新する
bun upgrade
# バージョンを確認する(1.4.3 と表示されればOK)
bun --version
※macOSやLinuxではcurl -fsSL https://bun.sh/install | bashでインストールできます。npm(npm install -g bun)やHomebrew、Dockerイメージ(oven/bun)も用意されています。
mkdir bun-check-test
cd bun-check-test
bun init -y
bun initを実行すると、tsconfig.jsonやindex.tsなどのひな形が作られます。
index.tsを開いて、先ほどのaddTaxの例を書き込み、次のコマンドを実行してみてください。
bun check
エラーが表示されたら、addTax("1000")をaddTax(1000)に直して、もう一度実行してみましょう。今度はエラーが出なくなるはずです。続けてbun run --check index.tsを実行すると、「チェックしてから実行」の流れも体験できます。
bun checkが加わりました。公式のtscと同じ結果を、3〜6.4倍の速さで出せると発表されていますbun run --checkやbun test --checkで、「チェックしてから実行」が1つのコマンドでできるようになりましたbun installのムダなダウンロードも減りました型チェックは、プログラムの間違いを早いうちに見つけるための、いわば「安全ネット」です。これまでは「時間がかかるから」と後回しにされがちでしたが、ここまで速くなると、保存するたび、実行するたびにチェックする、という使い方も現実的になります。生成AIでコードを書く機会が増えた今、AIが書いたコードを機械的にすばやく確かめられる仕組みは、ますます大切になっていると私たちは考えています。
BunやTypeScriptを使った開発、既存のNode.jsプロジェクトの見直しなどでお困りのことがあれば、どうぞお気軽にご相談ください。
本記事は2026年10月17日時点の公開情報に基づきます。速度・メモリ・CPU使用量の数値はBun開発元の発表によるもので、当社で計測したものではありません。導入前には公式情報と自社環境での検証をお願いします。