この記事では、Next.js 15 の環境構築から主要概念まで、体系的に解説します。
1. Next.js とは?#
Next.js は React を基盤としたフルスタック Web フレームワークであり、フロントエンド・バックエンド・ビルド最適化・ルーティング・データ取得・レンダリング戦略・画像/フォント最適化・キャッシュ・バンドル制御までを統合的に提供します。
なぜ Next.js がモダン開発の主流なのか?#
| 特徴 | メリット |
|---|---|
| Rendering Strategy の統合 | SSR / SSG / CSR / Streaming / RSC を用途で使い分け可能 |
| Zero Config 最適化 | 画像・フォント・バンドル・ルーティングが初期状態から高速 |
| File System Routing | ディレクトリ構造 = URL で直感的 |
| Full-stack 仕様 | API もフロントも同一プロジェクトで完結 |
| Turbopack / SWC / ESBuild で爆速ビルド | Vite並みのDX、Webpackより遥かに高速 |
| React 19 対応 | Server Components, Actions, Streaming が標準に |
| SEO / OGP / Sitemap / Metadata API | 追加ライブラリ不要で強い検索設計 |
| エコシステムが巨大 | UI, 認証, DB, ログ, テスト, CI/CD, 解析まで選択肢が豊富 |
2. Next.js の主要概念(超重要)#
2.1 App Router(Next.js 13 〜)#
従来の pages/ ルーティングから進化し、app/ ディレクトリで構築する新ルーティング。
| ファイル | 役割 |
|---|---|
layout.tsx | ページ共通UI(ヘッダー/フッター/メタ情報など) |
page.tsx | URL に対応するページ本体 |
loading.tsx | Suspense fallback(読み込みUI) |
error.tsx | エラーバウンダリ |
route.ts | API エンドポイント |
not-found.tsx | 404 ページ |
actions.ts | Server Actions の実装(フォーム/変異処理など) |
2.2 Rendering Strategy(用途で変える)#
| 種類 | 実行場所 | SEO | 初期表示 | 使い所 |
|---|---|---|---|---|
| SSR | サーバ | ◎ | 速い | 動的ページ |
| SSG | ビルド時生成 | ◎ | 最速 | ブログ/ドキュメント |
| CSR | ブラウザ | △ | 遅い | SPA挙動が必要なUI |
| Streaming SSR | サーバ→分割送信 | ◎ | 体感最速 | 重いSSRのUX改善 |
| React Server Components (RSC) | サーバ | ◎ | 速い | セキュアで軽いUI |
Next.js はこれらを ページ単位・コンポーネント単位で混在できるのが強みです。
2.3 React Server Components の意義#
- クライアントへ JS を送らず HTML だけを返せる
- APIキー/DBアクセス/ファイルI/O を安全に扱える
- バンドルサイズが激減 → Core Web Vitals が改善
- データ取得をコンポーネントの中で直接 await できる
// app/users/page.tsx (SSR + RSC)
export default async function UsersPage() {
const users = await db.user.findMany(); // サーバ上で実行
return (
<ul>
{users.map(u => <li key={u.id}>{u.name}</li>)}
</ul>
);
}2.4 Server Actions(React 19〜標準)#
APIを作らずにサーバ処理をフォームやUIから直接実行できる機能。
// app/actions.ts
'use server';
export async function createPost(formData: FormData) {
const title = formData.get('title');
await db.post.create({ data: { title } });
}// app/post/new/page.tsx
import { createPost } from '@/app/actions';
export default function NewPost() {
return (
<form action={createPost}>
<input name="title" placeholder="タイトル"/>
<button type="submit">送信</button>
</form>
);
}2.5 画像最適化(自動WebP/AVIF/遅延/リサイズ)#
next/image は画像を自動最適化します。
import Image from 'next/image';
<Image
src="/cat.jpg"
alt="Cat"
width={1200}
height={630}
priority // LCP用
className="rounded-2xl shadow-lg"
/>2.6 フォント最適化(FOUT/FOIT回避・プリロード)#
import { Inter } from 'next/font/google';
const inter = Inter({ subsets: ['latin'], display: 'swap' });2.7 キャッシュ戦略(デフォルトで強い)#
Next.js 15 では fetch/データ/ページ/画像 のキャッシュが自動適用されます。
// 60秒キャッシュ(ISR的な動作)
fetch('https://api.example.com/data', { next: { revalidate: 60 } });2.8 バンドル高速化(SWC / Turbopack)#
- Turbopack: 開発ビルドがWebpackより10〜20倍速い
- SWC: Babelの代替としてRustで動作するコンパイラ
- minify / transform が高速
- JS parsing / HMR が爆速
npm run dev --turbo2.9 Metadata API(SEOの核)#
ページ単位でtitle/description/OGPなどを定義可能。
// app/blog/[slug]/page.tsx
export const metadata = {
title: "記事タイトル",
description: "ここに要約文",
openGraph: {
title: "記事タイトル",
description: "ここに要約文",
type: "article",
images: "/og.webp",
}
}3. Next.js 15 環境構築(実践手順)#
3.1 Node.js のセットアップ(18.18以上)#
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.nvm/nvm.sh
nvm install 18
nvm use 18
node -v3.2 Next.js 15 プロジェクト作成#
npx create-next-app@latest my-next-blog --yes
cd my-next-blog3.3 推奨選択#
| 項目 | 選択 |
|---|---|
| TypeScript | Yes |
| Tailwind CSS | Yes |
| App Router | Yes |
| Turbopack | Yes |
| ESLint | Yes |
3.4 ローカル起動#
npm run dev --turbo→ http://localhost:3000 が表示されれば成功
4. Next.js を使うべき人#
- ブログ・サービスサイト・SaaS・Webアプリを 高速でSEO強く作りたい
- React の DX を最大化したい
- サーバ側で安全に処理したい
- SPA の自由度も SSR の検索優位性も両立したい
- 依存を減らして開発を1つのフレームワークで完結したい
5. まとめ#
Next.js は React の限界を拡張し、検索・表示速度・セキュリティ・開発体験のすべてを高水準で提供するモダンWebの最適解です。
App Router、React Server Components、Server Actions、Turbopack、Metadata APIなど、Next.js 15 の主要機能を理解することで、モダンなWeb開発の基盤が整います。
この記事で解説した環境構築手順と主要概念を活用して、高速でSEOに強いWebアプリケーションを構築してください。











