2026年Turbopack完全ガイド:Next.jsのRust製バンドラー徹底解説
最近Next.js 16にアップデートしたなら、何か違いに気づいたはずです。開発サーバーが1秒かからずに起動する。HMRが瞬きする間もなく適用される。そして最大の変化:Turbopackが今やデフォルトのバンドラーになりました—フラグ不要です。
JavaScriptバンドリングが大きく変わりつつあります。
Turbopackは2022年にVercelが「Webpackの後継者」として発表して以来開発が続いていました。Next.js 15でdev用にstableになり、**Next.js 16(2025年10月)ですべてのアプリケーションのデフォルトバンドラーになりました。最新のNext.js 16.1(2025年12月)**ではFile System Cachingがstableになり、さらに高速になりました。
見ていきましょう。
Turbopackとは何か
TurbopackはVercelが作ったRustベースのJavaScript/TypeScriptバンドラーです。元々はNext.js専用に設計されましたが、フレームワーク非依存で使えるよう計画中です。Webpackのドロップイン置換ではありません—2026年にバンドリングがどう動くべきかをゼロから考え直して作られたものです。
Webpackの問題
Webpackは2012年にリリースされた時、JavaScriptバンドリングに革命を起こしました。でも当時の時代に合わせて設計されていました:
- プロジェクトのファイルは数百個で、数万個ではなかった
- Node.jsが唯一のランタイムだった
- TypeScriptとJSXはメインストリームじゃなかった
- HMRはあれば嬉しい機能で、必須じゃなかった
2026年になると、Webpackのアーキテクチャが限界を見せています:
# 典型的なNext.js 14プロジェクト(Webpack) コールドスタート: 12-45秒 HMRアップデート: 1-5秒 フルリビルド: 30-120秒
Webpackのせいじゃありません—JavaScriptがバンドリングのような計算集約型タスクに根本的に遅いんです。どんなに最適化してもV8の性能天井を超えられません。
Rustの強み
TurbopackはRustで書かれています。これにより複数の利点があります:
- ネイティブ性能: Rustはマシンコードにコンパイルされ、V8オーバーヘッドがない
- 真の並列処理: Rustの所有権モデルでGC停止なしに安全なマルチスレッディングが可能
- メモリ効率: 手動メモリ管理でガベージコレクションスパイクがない
- 設計から増分的: Rustの型システムが正しい増分計算の構築を容易にする
でもRustだけが秘密兵器じゃないんです。Turbopackは全く違う設計思想で作られています。
ターボエンジン
Turbopackの核心には「ターボエンジン」があります。メモ化と増分計算システムです。スマートキャッシュだと考えてください:
- すべて記憶: 全関数呼び出し結果がキャッシュされる
- 依存関係追跡: どの出力がどの入力に依存しているか把握
- 最小限だけ無効化: ファイルが変わると影響を受ける計算だけ再実行
従来のバンドラー:
ファイル変更 → バンドル全体を再ビルド → ブラウザに送信
Turbopack:
ファイル変更 → 影響を受けるモジュールだけ再計算 → デルタだけブラウザに送信
だからTurbopackのHMRが瞬間移動みたいに感じるんです—本当に仕事量が少ないんです。
パフォーマンスベンチマーク
数字を見ていきましょう。実際のNext.js 15 Eコマースアプリケーションで測定しました。
テスト環境
- プロジェクト: TypeScriptファイル2,847個、Reactコンポーネント156個
- ハードウェア: M3 MacBook Pro、36GB RAM
- Node.js: v22.1.0
- Next.js: 16.1.0
コールドスタート(開発サーバー)
| バンドラー | 時間 | vs Turbopack |
|---|---|---|
| Webpack 5 | 18.4秒 | 23倍遅い |
| Turbopack | 0.8秒 | 基準 |
HMR(Hot Module Replacement)
| バンドラー | 時間 | vs Turbopack |
|---|---|---|
| Webpack 5 | 1.2秒 | 60倍遅い |
| Turbopack | 20ms | 基準 |
ページコンパイル(新規ルート)
| バンドラー | 時間 | vs Turbopack |
|---|---|---|
| Webpack 5 | 3.1秒 | 15倍遅い |
| Turbopack | 0.2秒 | 基準 |
メモリ使用量(開発サーバー実行中)
| バンドラー | RAM | vs Turbopack |
|---|---|---|
| Webpack 5 | 1.8GB | 1.5倍多い |
| Turbopack | 1.2GB | 基準 |
数字が物語っていますね。Turbopackは開発時に圧倒的に速いです。
Turbopackを始める
Turbopackの有効化
Next.js 16+では、Turbopackがデフォルトで有効です—設定不要です。そのまま実行するだけ:
# Turbopackがデフォルトに! next dev # 古いNext.js 15.xの場合: next dev --turbopack
動作確認
ターミナルで確認できます:
$ next dev --turbo ▲ Next.js 16.1.0 (Turbopack) - Local: http://localhost:3000 - Environments: .env.local ✓ Starting... ✓ Ready in 847ms
16.1のFile System Cachingのおかげで、2回目の起動はさらに高速になります—キャッシュ済みプロジェクトなら200ms未満もあり得ます。
設定詳細解説
Turbopackはnext.config.jsに独自の設定セクションがあります。カスタマイズできるもの:
基本設定
// next.config.js /** @type {import('next').NextConfig} */ const nextConfig = { experimental: { turbo: { // Turbopack専用オプション } } }; module.exports = nextConfig;
カスタムローダー
Webpackの最大の機能の一つがカスタムローダーです。Turbopackは異なる構文でサポートしています:
// next.config.js const nextConfig = { experimental: { turbo: { rules: { // SVGをReactコンポーネントとして '*.svg': { loaders: ['@svgr/webpack'], as: '*.js', }, // GraphQLファイル '*.graphql': { loaders: ['graphql-tag/loader'], as: '*.js', }, // YAMLサポート '*.yaml': { loaders: ['yaml-loader'], as: '*.json', }, }, }, }, };
注意: すべてのWebpackローダーがTurbopackで動作するわけではありません。Turbopackチームが互換性リストを管理しています。
パスエイリアス
パスエイリアスを使っているならtsconfig.jsonとTurbopack両方で設定してください:
// next.config.js const nextConfig = { experimental: { turbo: { resolveAlias: { // @componentsをsrc/componentsにマッピング '@components': './src/components', '@utils': './src/utils', '@hooks': './src/hooks', // 古いパッケージ互換性用 'underscore': 'lodash', }, }, }, };
Webpackからの移行
プロジェクトにカスタムWebpack設定があれば移行に作業が必要です。
一般的な移行シナリオ
カスタムWebpackプラグイン
移行前(Webpack):
// next.config.js const nextConfig = { webpack: (config, { isServer }) => { config.plugins.push(new MyCustomPlugin()); return config; }, };
移行後(Turbopack):
ほとんどのWebpackプラグインはまだTurbopack代替がありません。オプション:
- その機能がTurbopackに内蔵されているか確認
- 互換性のあるローダーを代わりに使用
- その特定機能はWebpackを継続使用
CSS処理
Turbopackは以下を内蔵サポート:
- CSS Modules ✅
- Sass/SCSS ✅
- PostCSS ✅
- Tailwind CSS ✅
内蔵設定:
// postcss.config.js (Turbopackでもそのまま動作) module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, };
まだ動かないもの
2026年1月時点で、一部機能はまだWebpack専用です:
| 機能 | ステータス |
|---|---|
| カスタムWebpackプラグイン | ❌ 未サポート |
webpack()設定関数 | ❌ 未サポート |
| 一部サードパーティローダー | ⚠️ 部分サポート |
| 本番ビルド | ✅ Stable (16+) |
| Standalone出力 | ✅ サポート |
| Edge Runtime | ✅ サポート |
Turbopackで本番ビルド
2026年のビッグニュース:Turbopack本番ビルドが安定化しました。
本番Turbopackの有効化
# Next.js 16+ではデフォルト(Turbopack使用) next build # 明示的フラグ(古いバージョン用) next build --turbopack
本番ベンチマーク
同じEコマースプロジェクトで:
| バンドラー | ビルド時間 | バンドルサイズ | vs Turbopack |
|---|---|---|---|
| Webpack 5 | 142秒 | 2.1MB | 基準 |
| Turbopack | 38秒 | 2.0MB | 3.7倍高速 |
Turbopack本番ビルドはかなり速く、改善されたツリーシェイキングのおかげで若干小さいバンドルを生成します。
Turbopack vs 他のバンドラー
他のバンドラーと比較するとどうでしょうか?
Turbopack vs Vite
| 側面 | Turbopack | Vite |
|---|---|---|
| アーキテクチャ | 増分Rust | ネイティブESM + esbuild |
| 開発サーバー | ~800msコールドスタート | ~300msコールドスタート |
| HMR | ~20ms | ~50ms |
| 本番 | Turbopack使用 | Rollup使用 |
| フレームワーク | Next.js特化 | フレームワーク非依存 |
| 成熟度 | 安定(2025) | 安定(2020) |
結論: Viteはコールドスタートが速いですがTurbopackはHMRが速いです。Viteがより柔軟でTurbopackはNext.jsにより最適化されています。
Turbopack vs Rspack
| 側面 | Turbopack | Rspack |
|---|---|---|
| 言語 | Rust | Rust |
| Webpack互換 | 限定的 | 高い |
| HMR | 優秀 | 良好 |
| エコシステム | 成長中 | Webpack互換 |
| フォーカス | Next.js | 汎用 |
結論: Webpackプラグイン互換性が必要ならRspackがより良い選択です。Next.jsオールインならTurbopackが良いです。
よくある問題の解決
"Module not found"エラー
Turbopack切り替え後にモジュール解決エラーが出たら:
Error: Cannot find module '@/components/Button'
解決: Turbopackでエイリアスが設定されているか確認:
// next.config.js const nextConfig = { experimental: { turbo: { resolveAlias: { '@': './src', }, }, }, };
ローダー互換性問題
Webpackローダーが動かない場合:
Error: Turbopack does not support the 'raw-loader' loader
オプション:
- 内蔵
?rawインポートクエリを使用:import content from './file.txt?raw'; - Turbopack互換の代替を探す
- 開発用に一時的にWebpackフォールバック
いつWebpackを維持すべきか
Turbopackの利点にもかかわらず、こんな場合はWebpackがまだ正しい選択かもしれません:
- 特定のWebpackプラグインに依存していてTurbopack代替がない
- バンドルサイズ最大最適化が必要でWebpack最適化プラグインをすべて使いたい
- Next.jsを使っていないでスタンドアロンTurbopackを待ちたくない
- カスタムWebpack設定が膨大で移行コストが高い
ハイブリッドアプローチ
開発はTurbopack、本番はWebpackを使えます:
{ "scripts": { "dev": "next dev", "build": "next build" // 16+では両方Turbopack } }
本番でWebpackが必要なら15.xに留まるか設定を調整してください。
Turbopackの未来
2026年ロードマップ
Vercel発表に基づく:
- Q1 2026: Next.js 16でTurbopackデフォルト
- Q2 2026: スタンドアロンTurbopack(Next.js専用じゃない)
- Q3 2026: カスタム変換用プラグインAPI
- Q4 2026: 完全なWebpack設定移行ツール
結論
TurbopackはJavaScriptバンドリングの考え方自体を変えるものです。「速いWebpack」じゃなく—今のWebアプリ規模に合わせて設計された新しい構造です。
使うべきでしょうか?
- 開発用: はい、絶対に。速度差が本当に大きいです。
- 本番用: はい、Next.js 16.1+なら。安定していて速いです。
- 移行が複雑なら: 開発だけTurbopack、本番はWebpackという使い分けもありです。
JavaScriptエコシステムがRust製ツールに移行しています。SWCがBabelを置き換えました。BiomeがESLintに挑戦しています。そしてTurbopackがWebpackに挑戦しています。今日切り替えても来年切り替えても、エコシステムはこの方向に向かっています。
next devで始めて自分で違いを感じてみてください。0.5秒のHMRを経験したら、もう戻れなくなりますよ。🚀
関連ツールを見る
Pockitの無料開発者ツールを試してみましょう