Next.js 15.5が来た! 開発者が知っておくべき5つの大きな変化とは?
みなさん、お疲れさまです!札幌でフロントエンド開発をやっている「たにー」です。
先日、Next.js 15.5がリリースされました。今回のアップデートは、特にパフォーマンス面とTypeScript周りで大きな進化を遂げているので、現役エンジニアの視点から「実際の開発現場で何が変わるのか?」を中心に詳しく解説していきます。
今回のアップデートで特に注目すべき5つのポイント
今回のNext.js 15.5では、以下の5つの大きな変化があります:
- Turbopackビルドがベータ版に昇格
- Node.jsミドルウェアが安定版に
- TypeScript機能の大幅強化
- next lintコマンドの非推奨化
- Next.js 16に向けた非推奨警告
それでは、それぞれ詳しく見ていきましょう。
1. Turbopackビルドがベータ版に!パフォーマンス向上の実力は?
実際のパフォーマンス結果が凄い
まず最も注目したいのが、Turbopackによるビルドパフォーマンスの改善です。
実際の改善データ(公式発表):
- 顧客サイト(4コアマシン): 2倍高速
- 顧客サイト(14コアマシン): 2.2倍高速
- 小規模サイト(1万モジュール、30コア): 4倍高速
- 中規模サイト(4万モジュール、30コア): 2.5倍高速
- 大規模サイト(7万モジュール、30コア): 5倍高速
使い方は超簡単
# Turbopackを使ったビルド
next build --turbopack
これだけです。本当にシンプルですね。
注意すべき点もあります
- 小規模プロジェクトでは劇的な改善を感じにくい場合がある
- 一部のバンドル最適化でWebpackより劣る場合がある
- CSSの順序が変わる可能性がある(見た目に影響する場合も)
2. Node.jsミドルウェアが安定版に昇格
これまでEdge Runtimeのみだったミドルウェアが、ついにNode.js環境でも安定して動作するようになりました。
何が嬉しいの?
import { NextRequest, NextResponse } from 'next/server';
export const config = {
runtime: 'nodejs', // ついに安定版!
};
export function middleware(request: NextRequest) {
// Node.js標準ライブラリが使える
const fs = require('fs');
const crypto = require('crypto');
// 複雑な認証ロジックも実装可能
const token = request.headers.get('authorization');
if (!isValidToken(token)) {
return NextResponse.redirect(new URL('/login', request.url));
}
return NextResponse.next();
}
広告
3. TypeScript機能の大幅強化
個人的に一番テンションが上がったのがこの部分です。
型安全なルーティングが安定版に
const nextConfig = {
typedRoutes: true, // 安定版!
};
export default nextConfig;
import Link from 'next/link'
// 完全な型安全性
<Link href="/blog/example-slug?ui=dark">記事を読む</Link>
// 無効なルートはコンパイル時にエラー
<Link href="/invalid-route">壊れたリンク</Link> // ← 型エラー!
自動型生成が超便利
これまでは手動で型を書いていた部分が、自動生成されるようになりました。
Before(手動で型定義):
interface Props {
params: Promise<{ slug: string }>;
children: React.ReactNode;
analytics: React.ReactNode; // 手動で定義
team: React.ReactNode; // 手動で定義
}
export default function DashboardLayout(props: Props) {
return (
<div>
{props.children}
{props.analytics}
{props.team}
</div>
);
}
After(自動型生成):
// インポートも不要!グローバルに利用可能
export default function DashboardLayout(props: LayoutProps<'/dashboard'>) {
return (
<div>
{props.children}
{props.analytics} {/* 完全に型安全 */}
{props.team} {/* 完全に型安全 */}
</div>
);
}
新しいnext typegenコマンド
# 手動で型生成
next typegen
# TypeScriptチェックと組み合わせ
next typegen && tsc --noEmit
# CIでの型チェック
next typegen && npm run type-check
4. next lintコマンドの非推奨化
何が変わるの?
これまでの:
{
"scripts": {
"lint": "next lint"
}
}
これからは:
{
"scripts": {
"lint": "eslint", // 直接ESLintを呼び出し
"lint:fix": "eslint --fix",
// または Biome を選択
"lint": "biome check",
"format": "biome format --write"
}
}
移行は自動化されています
# 自動移行コマンド
npx @next/codemod@latest next-lint-to-eslint-cli .
5. Next.js 16に向けた非推奨警告
削除される機能たち
以下の機能がNext.js 16で削除されます:
1. legacyBehavior prop(next/link)
// ❌ Next.js 16で削除予定
<Link href="/about" legacyBehavior>
<a>About</a>
</Link>
// ✅ 推奨される書き方
<Link href="/about">About</Link>
2. AMP サポート完全削除
// ❌ すべて削除予定
import { useAmp } from "next/amp";
export const config = { amp: true };
3. next/image の品質設定制限
// ⚠️ 明示的な設定が必要に
<Image src="/photo.jpg" quality={100} alt="Photo" />;
// next.config.ts で設定
const nextConfig = {
images: {
qualities: [75, 100], // 明示的に許可
},
};
まとめ:現場目線での評価
👍 特に嬉しい変化
- Turbopackの実用化 :大規模プロジェクトでのビルド時間短縮は本当に嬉しい
- TypeScript強化 :型安全性の向上で開発効率とコード品質が向上
- Node.jsミドルウェア :認証やデータベース連携がより柔軟に
🤔 注意が必要な部分
- next lintの非推奨化 :移行作業が必要
- Next.js 16の破壊的変更 :早めの対応が必要
- Turbopackの一部制限 :小規模プロジェクトでは効果が薄い場合も
アップグレードのタイミング
# アップグレードコマンド
npx @next/codemod@canary upgrade latest
# 手動アップグレード
npm install next@latest react@latest react-dom@latest
今回のNext.js 15.5は、パフォーマンスと開発体験の両面で大きな進歩を遂げています。特に大規模プロジェクトを扱う開発者には恩恵が大きそうです。
皆さんの開発現場でも、ぜひ試してみてくださいね!何か質問や気づいたことがあれば、お気軽にコメントください。
それでは、今日も良いコーディングを!