ソフトウェア
中級
Turbopack(ターボパック)
Vercel が Rust で開発する次世代 JavaScript バンドラー。Webpack の後継として設計され、Next.js 16 でデフォルト採用。大規模プロジェクトで 10-700 倍の高速化を実現。
0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
JavaScript
Bundler
Rust
Vercel
Turbopack
概要
Turbopack は、Vercel が Rust で開発している次世代 JavaScript バンドラーです。Webpack の作者でもある Tobias Koppers をリードとして、Webpack の根本的な設計を見直して作られた「Webpack 後継」として位置付けられています。2025 年の Next.js 16 でデフォルトバンドラーとなり、大規模プロジェクトで劇的な高速化を実現しています。
主要特徴
Rust 実装
- 高速: JavaScript 製バンドラーの 10-700 倍
- 並列処理: 全 CPU コア活用
- 低メモリ: Webpack より効率的
インクリメンタルビルド
- 変更部分のみ再計算
- Function-level キャッシング
- 依存関係グラフベース
超高速 HMR(Hot Module Replacement)
- ファイル変更から反映まで 50-100ms
- Webpack の 10-20 倍高速
段階的な機能対応
- React Server Components
- TypeScript ネイティブ
- CSS Modules
- Tailwind CSS
- MDX
- SVG、画像
パフォーマンス
開発サーバー起動
| バンドラー | 小規模 | 中規模 | 大規模(10k+ module) |
|---|---|---|---|
| Webpack | 10s | 30s | 2-5 分 |
| Vite | 0.5s | 2s | 10-30s |
| Turbopack | 0.5s | 1s | 3-5s |
HMR(変更から反映)
| バンドラー | 時間 |
|---|---|
| Webpack | 500-2000ms |
| Vite | 50-300ms |
| Turbopack | 50-100ms |
本番ビルド
| バンドラー | 大規模 Next.js |
|---|---|
| Webpack | 5-15 分 |
| Turbopack | 1-3 分 |
Next.js 16 での使用
デフォルト
# Turbopack がデフォルト
next dev # 自動的に Turbopack
next build # 自動的に Turbopack
旧 Webpack に戻す(必要時)
// next.config.js
module.exports = {
experimental: {
turbo: false
}
};
Webpack との比較
Webpack の問題
- JavaScript 製: 遅い
- シングルスレッド: CPU コアを活用できない
- 設計の古さ: 2012 年リリース
- Plugin 地獄: 設定の複雑化
- 大規模で遅い: 数十秒〜数分のビルド
Turbopack の改善
- Rust: ネイティブ速度
- 並列処理: マルチコア活用
- モダン設計: ESM、HTTP/2 前提
- ゼロコンフィグ: 開発体験重視
- インクリメンタル: 変更部分のみ
Vite との違い
Vite
- esbuild + Rollup
- 開発サーバー高速
- 本番ビルドは Rollup
Turbopack
- 単一ツール
- 開発も本番も高速
- Next.js 統合
どちらを選ぶか
- Next.js: Turbopack(デフォルト)
- Vue、Svelte、他: Vite
- Vite も Next.js 並の速度
アーキテクチャ
Function-level Caching
Turbopack は関数単位でキャッシュを管理し、変更された関数のみを再実行します:
// 概念図(Rust 擬似コード)
#[memoize]
fn parse_file(path: PathBuf) -> AST {
// ファイルが変わった時のみ実行
}
#[memoize]
fn resolve_imports(ast: AST) -> Vec<Module> {
// AST が変わった時のみ実行
}
依存関係グラフ
- モジュール間の依存を追跡
- 変更の影響範囲を特定
- 最小限の再ビルド
Lazy Compilation
- アクセスされるまでコンパイルしない
- 初回起動を高速化
課題
プラグインエコシステム
- Webpack のプラグインが使えない
- Next.js 以外では未成熟
互換性
- Next.js 向けに最適化
- 汎用性はまだ低い
安定性
- 改善中
- エッジケースで問題
ロードマップ
2025-2026
- Next.js 16 でデフォルト化
- 安定性向上
- Webpack 機能完全対応
将来
- 汎用バンドラー化
- Next.js 以外でも使用可能に
- Webpack からの完全移行パス
Webpack からの移行
Next.js プロジェクト
# 自動移行(Next.js 16 以降)
npm install next@16
大部分の Next.js プロジェクトは自動的に Turbopack で動作します。
非対応機能
- 一部のカスタム Webpack 設定
- 特殊な loader
関連用語
- Webpack、Vite
- Next.js、Vercel
- Rust
- Bundler、Compiler
- HMR(Hot Module Replacement)