Next.jsの開発環境が重くて、保存するたびに待たされる。そんなモヤモヤを抱えている人に向けて書きました。この記事を読むと、Next.js 16.2で何が速くなったのかを数字で理解しつつ、あなたの現場で再現できる計測と改善手順まで持ち帰れます。僕は福祉事業のIT全般を担当しながら、AI×SaaS開発も並行しているので、机上の話ではなく日々の開発ループで使っている方法だけに絞って紹介します。小さく試して、確実に前へ進める構成でまとめます。
こんな方におすすめ
- Next.js 開発環境 遅い 改善の具体策を探している
- next devの起動と再ビルドをまず半分くらいまで短くしたい
- Docker/WSL環境でホットリロードの遅延に悩んでいる
- チームに説明できる計測データ付きで改善したい
この記事でわかること
- Next.js 16.2で改善されたポイントと公式の数値
- 起動時間・再ビルド時間を測るテンプレートと運用手順
- next.configの実践設定(import最適化・キャッシュ・HMR)
- ハマりがちなDocker/WSLやcustom webpackの回避方法
公開前確認(2026年5月時点):Next.js 16.2のTurbopack改善は公式ブログで確認済みです。一方で、公開時点ではNext.jsのセキュリティパッチも進んでいるため、実導入時は next@latest で最新16.2系へ更新し、リリースノートとlockfileを必ず確認してください。
Next.js 16.2でnext devが速くなった理由をまず数字で押さえる
まず前提を揃えます。Next.js 16.2は2026年3月18日に公開され、公式リリースノートではnext devのTime-to-URLが約400%改善(16.1比で約87%短縮)と説明されています。さらにReact側のRSC payload逆シリアライズ改善も入り、実アプリのHTMLレンダリングで25〜60%の短縮が報告されています。体感で「なんか速い」ではなく、数字で見ても明確に変わったリリースです。
加えてTurbopack 16.2の発表ではServer Fast Refreshが既定で有効になり、アプリによっては67〜100%のリフレッシュ短縮、Next.js内部コンパイルでは400〜900%短縮という結果も公開されています。つまりアップデートだけで土台はかなり改善されています。ただし、ここで終わると現場差が大きく残ります。なぜかというと、遅延の原因はプロジェクト構造や開発環境にも分散しているからです。
このあとの手順は、公式ブログと公式ドキュメントの再現可能な範囲だけを使っているので、チーム展開しやすいと思います。
| 指標 | 16.1以前の例 | 16.2の例 | 改善率 |
|---|---|---|---|
| 起動関連ベンチ1 | 80ms | 60ms | 33% |
| 起動関連ベンチ2 | 52ms | 33ms | 60% |
| レンダリング関連ベンチ | 43ms | 32ms | 34% |
ここだけ先に結論
- 更新だけでも前進 — 16.2への更新で土台改善は期待できます
- 本番の差は設定で決まる — import整理や環境整備まで含めると体感差が大きくなります
- 計測が必須 — 変化を数字で残すとチーム合意が早くなります
起動時間と再ビルド時間を測るテンプレートを先に作る
改善を始める前に、まず現在地を測ります。ここを飛ばすと「速くなった気がする」で終わりやすいです。イメージとしては、ダイエット前に体重を測らずに走り始める状態です。Next.js 開発環境 遅い 改善は、計測を先に置くと失敗しにくくなります。僕は最低でも「cold start」「最初の編集反映」「2回目以降の編集反映」の3つを同じ条件で記録しています。
計測ステップ(5分で開始できます)
- 比較条件を固定 — 同じNodeバージョン、同じ依存関係で計測します
- cold start計測 —
.next/devを消して起動完了までを測ります - 再ビルド計測 — 1ファイル変更後の反映時間を3回測って中央値を使います
- Turbopack trace取得 — 遅延要因を後で可視化できるようにします
# cold start
rm -rf .next/dev
start=$(date +%s%3N); pnpm dev >/tmp/dev.log 2>&1 & pid=$!
until curl -sf http://127.0.0.1:3000 >/dev/null; do sleep 0.1; done
echo "startup_ms=$(( $(date +%s%3N)-start ))"; kill $pid
# 比較起動
pnpm dev # Turbopack既定
pnpm dev --webpack # 比較用
# trace
NEXT_TURBOPACK_TRACING=1 pnpm dev
npx next internal trace .next/dev/trace-turbopack
数字を残す場所はNotionでもスプレッドシートでも十分です。僕は「日付」「ブランチ」「startup_ms」「rebuild_ms」「変更内容」を1行で管理しています。これだけで、改善後の説明が一気に楽になります。公式のローカル開発ガイドもこの流れなので、まずはこのテンプレートから始めるのがおすすめです。
Next.js 16.2 next dev高速化の実践手順7選
ここからが実装です。アップデート済みでも、現場で待ち時間が残ることは普通にあります。そのときは1つずつ潰していくのが近道です。僕が実際に使っていて再現性が高かった手順を7つにまとめます。
- 1. Next.jsを最新版へ更新 —
pnpm add next@latestで16.2系へ揃えます - 2. Turbopack前提で運用 — 比較用途以外は
pnpm devを標準にします - 3. import過多を整理 —
optimizePackageImportsで重いライブラリを分割最適化します - 4. Tailwindのscan範囲を狭める — 不要ディレクトリを除外して監視対象を減らします
- 5. custom webpack設定を点検 — 互換目的の古い設定は遅延要因になりやすいです
- 6. Docker/WSL依存を見直す — Mac/WindowsのDockerはHMRが秒〜分単位で遅れる場合があります
- 7. セッション跨ぎキャッシュを活用 — 16.1からのFileSystem Cache前提で再計算を減らします
この7つをやるときのコツは、全部一気に入れないことです。1項目ずつ適用して、毎回startup_msとrebuild_msを記録してください。「何を変えたら何ms短くなったか」を残すだけで、次回の改善がかなり速くなります。業務改善ツールで月80時間削減したときも、この積み上げ方式が一番安定しました。
どの順番で入れるか迷う場合は、まず「更新 → 計測 → Docker/WSL見直し」の3点だけを1週間試してください。計測表にstartup_msとrebuild_msを残すと、次に触るべき箇所が見えやすくなります。
next.config最適化レシピ(import・キャッシュ・HMR)
次は設定ファイルです。ここは「とりあえずコピペ」で入れると副作用が出るので、意図をセットで理解しておくと安心です。16.2時点で僕がまず確認するのは、optimizePackageImports、turbopackFileSystemCacheForDev、serverComponentsHmrCache、onDemandEntriesの4点です。
// next.config.mjs
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
optimizePackageImports: ['lodash-es', 'date-fns'],
turbopackFileSystemCacheForDev: true,
turbopackFileSystemCacheForBuild: true,
serverComponentsHmrCache: true,
},
onDemandEntries: {
maxInactiveAge: 25 * 1000,
pagesBufferLength: 2,
},
}
export default nextConfig
- import最適化 — 大きなパッケージの読み込みを整理して再コンパイル負荷を下げます
- FileSystem Cache — 開発セッションをまたいだ再計算を減らせます
- HMR cache — 開発時のfetch応答再利用で待ち時間を減らせます
注意点はserverComponentsHmrCacheです。公式ドキュメントにもある通り、既定trueのため、cache: 'no-store'を付けていてもHMR中は最新データにならないケースがあります。管理画面や在庫表示のように鮮度が最優先の画面では、一時的にfalseで比較して挙動を確認するのがおすすめです。
設定変更時のチェック項目
- 開発体験 — 起動と再描画が短くなったか
- データ鮮度 — HMR中の表示が期待どおりか
- 事故回避 — 変更前の設定をgitで戻せる状態にしているか
Docker/WSL・custom webpackで詰まるポイントと回避策
Next.js 開発環境 遅い 改善で一番ハマりやすいのが、アプリコード以外のレイヤーです。公式ガイドでも、Mac/WindowsのDocker開発ではHMRが秒〜分単位で遅れるケースがあると明記されています。僕もモノレポ案件で同じ壁に当たり、最初はNext.jsの問題だと思っていました。でも実際はファイル監視とボリューム同期のオーバーヘッドが主因でした。
| 症状 | よくある原因 | 最初の対処 |
|---|---|---|
| 保存しても反映が遅い | Dockerボリューム同期の遅延 | ローカル直実行で差分確認 |
| 起動だけ異常に遅い | custom webpackの過剰設定 | pnpm dev --webpackと比較 |
| 原因が読めない | ボトルネック未可視化 | traceを取得して詰まり箇所を特定 |
# traceファイルを読みやすくする
NEXT_TURBOPACK_TRACING=1 pnpm dev
npx next internal trace .next/dev/trace-turbopack
もう1つの落とし穴は「慣れたwebpack設定を残しすぎる」ことです。互換維持のために積んだ設定が、16.2の改善を打ち消すことがあります。困ったら一度シンプル構成へ戻し、そこから必要な設定だけ戻すと切り分けしやすいです。比較が難しいときは、entry-12891576288とentry-12876072557の比較軸を使うと、チーム内の説明も通しやすくなります。
つまり、遅い原因をNext.js本体だけに限定せず、実行環境と設定の両方を見るのが近道です。
Before/Afterの見せ方まで作ると、改善がチームに定着する
高速化は、やって終わりだと次の案件でリセットされがちです。なので「どう測って、どう報告するか」までテンプレ化しておくのがおすすめです。僕はPRテンプレートに計測欄を追加して、最低限この3つを毎回書くようにしています。
- startup_ms — cold startの起動完了時間
- rebuild_ms — 1ファイル編集後の中央値
- 変更点 — 設定変更かコード変更かを明記
| 項目 | 改善前 | 改善後 | 差分 |
|---|---|---|---|
| 起動時間 | 14.2秒 | 7.1秒 | -50% |
| 再ビルド時間 | 2.4秒 | 1.1秒 | -54% |
| 初回レビュー待ち | 1.8日 | 1.2日 | -33% |
数字が揃うと、改善提案が「好み」ではなく「再現可能な運用」に変わります。ここまで作っておくと、メンバーが変わっても速さを維持しやすいです。また、比較記事導線としてentry-12836297015をセットで置くと、クラスター回遊も伸びやすくなります。
僕は週次で「待ち時間が減った分を何に使えたか」まで記録しています。例えばレビュー前のセルフチェック、テスト追加、仕様確認の時間に振り替えると、開発品質も一緒に上がりやすいです。イメージとしては、移動時間が短くなって読書時間が生まれるのと同じです。速くなった事実だけでなく、浮いた時間の使い道まで可視化すると、改善が文化として残りやすくなります。
改善テンプレは、PRテンプレートや週次メモに「変更点 / startup_ms / rebuild_ms / 所感」を固定欄として残すだけでも十分です。実データの見せ方まで決めておくと、チーム内の合意形成が速くなります。
高速化を後回しにしたときに起きやすい現実
next devの待ち時間を放置すると、1回あたり数秒でも1日でかなり積み上がります。しかも厄介なのは、時間損失だけではないところです。待ち時間が長い環境では、小さく試す回数が減って、実装の安全性まで落ちやすくなります。この情報を知らないままだと、機能追加の速度だけでなく学習速度まで落ちる可能性があります。だからこそ、派手な最適化より先に、毎日の開発ループを短くする設計が大切です。結果として、同じ労力でもアウトプットの質が変わります。
この記事を書いている理由
僕自身、Mac mini M4 Pro(24GB)を24時間稼働させて、Node.js + TypeScript + npm workspacesのモノレポを日常的に回しています。2025年10月に結婚式Web招待状サービスを出して、90日以上ログイン継続率を維持できたのも、開発ループを細かく回し続けられたからです。さらに業務効率化ツールで月80時間の工数削減を出した経験から、正しい方向に努力を寄せる重要性をずっと感じています。だからこそ、僕自身が試して再現できたNext.js 16.2 next dev高速化の手順を、実務でそのまま使える形で残したいと思って書いています。
次のアクション
まずは今日、計測テンプレを1回実行して現状値を残してください。数字が1つあるだけで次の改善が進めやすくなります。
今日からできるアクション
.next/dev削除後の起動時間を1回測る- 計測結果をPRテンプレートか週次メモに残し、次に試す改善を1つだけ決める