【ターボパック】

Turbopack とは?

最終更新:
💡 変わったところだけ計算し直す、Next.js標準のRust製バンドラ

Rustで書かれた、JavaScript・TypeScript向けのインクリメンタルなバンドラ。Next.jsに組み込まれていて、Next.js 16からは開発・本番ビルドとも標準のバンドラになっている。

📌 このページのポイント
Turbopack:変わったところだけ計算し直す モジュールのつながり(例) page.tsx Header Button ✎ Logo utils 変更・影響あり → 再計算 変更なし → 再利用 最初のビルド 全体を計算し、結果を細かくキャッシュ Button.tsx を保存 2回目以降 影響を受けた部分だけ計算し直す ほかはキャッシュの結果を再利用 Next.js 16以降は開発・本番ビルドの標準バンドラ(--webpack で webpack も選べる)
Turbopackのインクリメンタルな計算のイメージ(速さはプロジェクトの規模や構成で変わる)
ひよこ ひよこ
TurbopackってWebpackの代わりになるの?
ペンギン先生 ペンギン先生
Next.jsの中ではそうなっているよ。2022年に、webpackの作者のTobias Koppers氏が率いるプロジェクトとしてVercelが発表したRust製のバンドラなんだ。Next.js 16からは、何も設定しなければ開発でも本番ビルドでもTurbopackが使われるよ
ひよこ ひよこ
どのくらい速いの?
ペンギン先生 ペンギン先生
Next.js 16の発表では、webpackと比べて本番ビルドが2〜5倍、Fast Refresh(保存した変更の反映)が最大10倍速いとされているよ。これはVercel自身の説明で、プロジェクトの規模や構成によって差は変わるから、自分のアプリで測ってみるのが確実だね
ひよこ ひよこ
なんで速いの?
ペンギン先生 ペンギン先生
Rustで書かれていることに加えて、計算した結果を細かくキャッシュして、ファイルが変わったときは影響を受けた部分だけを計算し直す「インクリメンタル」な仕組みだからだよ。クライアント用とサーバー用の処理を1つのグラフでまとめて扱うのも特徴なんだ
ひよこ ひよこ
Viteもすごく速いって聞くけど、何が違うの?
ペンギン先生 ペンギン先生
Viteはいろいろなフレームワークで使える独立したビルドツールだよ。TurbopackはNext.jsに組み込まれて使うバンドラで、Next.jsのために設計されているんだ。どちらが速いかは条件で変わるから、まずは使うフレームワークに合ったものを選ぶのが自然だね
ひよこ ひよこ
既存のNext.jsアプリはそのまま移れるの?
ペンギン先生 ペンギン先生
多くはそのまま動くけど注意点もあるよ。webpackのローダーには対応しているけど、webpackのプラグインには対応していないんだ。webpackのプラグインに頼っている場合は、代わりの方法を探すか、next build --webpack のようにwebpackを使い続けることもできるよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Turbopack」って出てきたら「Next.jsに組み込まれた、Rust製でインクリメンタルなバンドラ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Turbopack」 = ターボ(高速)+ パック(まとめる)
💬 「ターボのように速く、ファイルをまとめる(パックする)」というイメージで覚えるとわかりやすいよ。名前の由来を公式が詳しく説明した資料は確認できなかったんだ

参考資料

← 用語集にもどる