この記事では、Next.js アプリのパフォーマンスを向上させるために有効なベストプラクティスがまとめられています。Next.js は強力で使いやすいフレームワークですが、アプリを高速化するためにはいくつかの重要なポイントを押さえる必要があります。
以下に、記事内容を分かりやすく解説します。
1. Server-Side Rendering(SSR)を活用する
SSR は、ページの初期 HTML をブラウザではなく サーバー側でレンダリングする手法です。
これにより、ユーザーの初回表示が速くなり、特にモバイル環境で大きな改善が期待できます。
Next.js では getServerSideProps を使うことで簡単に SSR を実装できます。
export async function getServerSideProps() {
const data = await fetch('YOUR_API');
return { props: { data } };
}
2. Dynamic Import(動的インポート)でコード分割
アプリ起動時に 全コンポーネントを読み込む必要はありません。
Next.js の dynamic() を使えば、必要な時にだけ読み込むことができ、初期ロードを高速化できます。
const DynamicComponent = dynamic(() => import('../components/LoginButton'));
3. キャッシュを活用する
キャッシュはレスポンス高速化の基本です。
Next.js では API ルートや SSR に対してヘッダを設定するだけで簡単にキャッシュできます。
res.setHeader('Cache-Control', 'public, s-maxage=10, stale-while-revalidate=59');
静的ファイルは Next.js が自動で最適化してくれます。
4. 不要な依存関係を削除する(depcheck の活用)
依存パッケージは多ければ多いほどアプリが重くなります。
使っていない npm パッケージは削除する
大規模プロジェクトでは depcheck を使用して洗い出す
npx depcheck
5. 画像を最適化する
画像はアプリを重くする最大の要因です。
Next.js の next/image コンポーネントを使うと以下の最適化が自動で行われます。
遅延ロード(lazy loading)
適切なフォーマット
プレースホルダー表示
自動リサイズ
<Image src={image_url} alt="text" width={500} height={500} />
6. スクリプトを最適化(next/script)
Google Analytics などの外部スクリプトはパフォーマンスに悪影響を与えます。
Next.js の next/script を使うと、読み込みタイミング(strategy)を制御できます。
<Script src="..." strategy="lazyOnload" />
使用できる strategy:
afterInteractive:ページがインタラクティブになった後に読み込み
beforeInteractive:JS 実行前に読み込み
lazyOnload:全てのリソース読み込み後に実行
まとめ:Next.js アプリ高速化の鍵
Next.js はサーバー側で多くの処理を肩代わりしてくれる強力なフレームワークですが、
アプリを高速化するには以下を意識する必要があります。
SSR の活用で初回表示を高速化
Dynamic import で不要なコードを初期ロードから除外
適切なキャッシュ設定
依存パッケージの整理
next/image で画像最適化
next/script でサードパーティーの最適化
これらを実践することで、Next.js アプリのパフォーマンスが大幅に向上します。