関連記事:プログラミング言語人気ランキング2026|需要・年収・学びやすさで比較もあわせてご覧ください。
Reactでの開発に慣れてくると、ルーティング設定やSEO対策、パフォーマンス最適化など、React単体ではカバーしきれない課題に直面します。Next.jsはこれらの課題を解決するために設計されたReactベースのフルスタックフレームワークです。
この記事では、Next.jsの基本概念から環境構築、学習ロードマップまでを体系的に解説します。
Next.jsとは何か
Reactとの関係
Next.jsは、Vercel社が開発・メンテナンスしているReactフレームワークです。ReactはあくまでUIライブラリであり、ルーティングやデータフェッチ、ビルド最適化などは開発者が自分で選定・設定する必要があります。Next.jsはこれらをフレームワークとして統合的に提供しています。
Next.jsの主な特徴
Next.jsの主な特徴は以下のとおりです。
- ファイルベースルーティング:
app/ディレクトリのフォルダ構造がそのままURLに対応する - 複数のレンダリング方式:SSR(サーバーサイドレンダリング)、SSG(静的サイト生成)、ISR(増分静的再生成)を使い分けられる
- Server Components:サーバー側でのみ実行されるコンポーネントにより、クライアントへ送るJavaScriptの量を削減できる
- API Routes:フロントエンドと同じプロジェクト内にAPIエンドポイントを作成できる
- 画像・フォント最適化:
next/imageやnext/fontによる自動最適化
Vercel公式の発表によると、Next.jsは多くの企業で採用されており、Webアプリケーション開発のフレームワークとして広く利用されています。
ReactとNext.jsの違い
ReactとNext.jsは別々のものではなく、Next.jsはReactの上に構築されたフレームワークです。両者の関係を整理します。
レンダリング方式
素のReact(Create React AppやViteで構築した場合)はCSR(クライアントサイドレンダリング) が基本です。ブラウザ上でJavaScriptが実行されてHTMLが生成されます。
Next.jsでは、ページごとにレンダリング方式を選択できます。
| 方式 | 説明 | 適したページ |
|---|---|---|
| SSR | リクエストごとにサーバーでHTMLを生成 | ユーザーごとに内容が変わるページ |
| SSG | ビルド時にHTMLを生成 | ブログ、ドキュメント等の静的ページ |
| ISR | SSGで生成したページを一定時間ごとに再生成 | 更新頻度が中程度のページ |
| CSR | ブラウザ上でレンダリング | ダッシュボードなどの認証後ページ |
ルーティング
Reactではreact-routerなどのライブラリを別途導入してルーティングを設定しますが、Next.jsはファイルベースルーティングを採用しています。
app/
page.tsx → /
about/
page.tsx → /about
blog/
[slug]/
page.tsx → /blog/記事のスラグ
フォルダ構造がそのままURL構造に対応するため、ルーティング設定のコードを書く必要がありません。
SEO対策
CSRのReactアプリは、検索エンジンのクローラーがJavaScriptを完全に実行できない場合にコンテンツを認識できないリスクがあります。Next.jsのSSR/SSGでは、事前にHTMLが生成されるため、SEOの観点で有利です。
Next.jsの環境構築と基本操作
Next.jsの開発を始めるための手順を解説します。
プロジェクト作成
# create-next-appでプロジェクトを作成
npx create-next-app@latest my-app
# 対話式の設定
# TypeScriptを使用するか? → Yes(推奨)
# ESLintを使用するか? → Yes
# Tailwind CSSを使用するか? → 必要に応じて
# App Routerを使用するか? → Yes(推奨)
ディレクトリ構造
App Routerを選択した場合の基本構造は以下のとおりです。
my-app/
app/
layout.tsx # ルートレイアウト
page.tsx # トップページ
globals.css # グローバルスタイル
public/ # 静的ファイル
next.config.js # Next.jsの設定
tsconfig.json # TypeScriptの設定
開発サーバーの起動
cd my-app
npm run dev
http://localhost:3000でアプリケーションにアクセスできます。ファイルを編集すると自動で画面が更新されるHot Reloadが標準で有効です。
ページの作成
app/ディレクトリ内にフォルダとpage.tsxを作成するだけで新しいページが追加されます。
WordPress vs Next.js比較も参考にしてください。
// app/about/page.tsx
export default function AboutPage() {
return (
<div>
<h1>About</h1>
<p>このサイトについて</p>
</div>
);
}
App Routerの重要概念
Next.js 13以降で導入されたApp Routerは、現在推奨されているルーティング方式です。
Server ComponentsとClient Components
App Routerでは、コンポーネントはデフォルトでServer Componentsとして扱われます。サーバー側で実行されるため、データベースへの直接アクセスや重い処理をクライアントに影響なく実行できます。
ブラウザ側のインタラクション(useState、useEffect、イベントハンドラ等)が必要な場合は、ファイルの先頭に"use client"を記述してClient Componentにします。
"use client";
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
レイアウト
layout.tsxを使うと、複数ページで共通のUIを効率的に管理できます。ヘッダーやサイドバーなど、ページ間で共有する要素はレイアウトに記述します。
// app/layout.tsx
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="ja">
<body>
<header>共通ヘッダー</header>
<main>{children}</main>
<footer>共通フッター</footer>
</body>
</html>
);
}
データフェッチ
Server Componentsでは、コンポーネント内で直接async/awaitを使ってデータを取得できます。
// app/posts/page.tsx
async function getPosts() {
const res = await fetch("https://api.example.com/posts", {
next: { revalidate: 3600 }, // 1時間ごとに再検証
});
return res.json();
}
export default async function PostsPage() {
const posts = await getPosts();
return (
<ul>
{posts.map((post: { id: number; title: string }) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
);
}
Next.jsの学習ロードマップ
Next.jsを効率よく学ぶためのステップを段階的に整理します。
前提知識
Next.jsの学習には以下の知識が前提となります。
- HTML / CSSの基礎
- JavaScriptの基礎(ES6以降の構文、非同期処理)
- Reactの基礎(コンポーネント、state、props、hooks)
- TypeScriptの基礎(推奨)
ステップ1:公式チュートリアルを完了する(目安:1週間)
Next.js公式サイトには実践的なチュートリアルがあります。ダッシュボードアプリを作りながらNext.jsの基本機能を一通り体験できます。
ステップ2:App Routerの仕組みを理解する(目安:1〜2週間)
Server Components、Client Components、レイアウト、ローディングUI、エラーハンドリングなど、App Router固有の概念を学びます。
ステップ3:データフェッチとキャッシュを学ぶ(目安:1〜2週間)
fetch APIの拡張オプション、Server Actions、revalidateの仕組みなど、Next.jsのデータ管理パターンを理解します。
ステップ4:小規模なアプリを作る(目安:2〜4週間)
ブログ、ToDoアプリ、ポートフォリオサイトなど、実際にアプリを作りながら知識を定着させましょう。
ステップ5:デプロイする
Vercelへのデプロイは設定がほぼ不要で、GitHubリポジトリを連携するだけで自動デプロイが可能です。実際に公開することで本番環境ならではの課題(パフォーマンス、SEO等)を体験できます。
技術メモ:Server ComponentsとClient Componentsの使い分け
Next.js App Routerの開発で最もつまずきやすいのが、Server ComponentsとClient Componentsの使い分けです。判断基準をまとめます。
Server Componentを使う場面(デフォルト):
- データベースやAPIからのデータ取得
- アクセストークンやAPIキーを使う処理
- 表示のみでユーザー操作を伴わないUI
Client Componentを使う場面("use client"を付ける):
useState、useEffect、useRefなどのhooksを使うonClick、onChangeなどのイベントハンドラを使う- ブラウザAPIを直接利用する(
window、localStorage等)
実際に手を動かしてみましょう。迷ったときは、まずServer Componentとして書き始め、hooks やイベントハンドラが必要になった時点で"use client"を追加する、という進め方が効率的です。Client Componentの中にServer Componentをchildrenとして渡すパターンも多用されるため、公式ドキュメントの「Composing Client and Server Components」セクションも確認しておくとよいでしょう。
Next.jsが向いているケースと向いていないケース
向いているケース
- SEOが重要なサイト:ブログ、メディアサイト、LP
- フルスタック開発:API RoutesやServer Actionsを活用してバックエンドもまとめたい場合
- パフォーマンスを重視するアプリ:画像最適化やコード分割が標準で組み込まれている
向いていないケース
- SPAで十分な管理画面:認証後のダッシュボードなど、SEOが不要でCSRで問題ない場合はReact + Viteの方がシンプル
- 学習初期段階:Reactの基礎が固まっていない段階でNext.jsに進むと、フレームワーク固有の概念に混乱する可能性がある
よくある質問(FAQ)
Q. Reactを学んでからNext.jsに進むべきですか?
A. はい。Next.jsはReactの上に構築されたフレームワークなので、Reactのコンポーネント設計やhooksの基礎を理解してから進むのが効率的です。Reactの基礎が曖昧なままNext.jsを学ぶと、どこまでがReactの機能でどこからがNext.jsの機能かわからなくなりやすいです。
Q. Pages RouterとApp Routerのどちらを学ぶべきですか?
A. これから新規で始めるならApp Routerが推奨されています。Next.js公式でもApp Routerが推奨ルーティング方式として位置づけられています。ただし、既存プロジェクトではPages Routerが使われていることも多いため、仕事で触る可能性がある場合は両方の概要を知っておくと役立ちます。
Q. Next.jsの開発にはどのホスティングサービスを使えばいいですか?
A. Vercel(Next.jsの開発元)が最も手軽ですが、AWS、Google Cloud、Cloudflare Pagesなどでもデプロイ可能です。Vercelは無料プランがあり、個人開発や学習用途であれば無料の範囲で十分利用できます。
Q. Next.jsの求人需要はどの程度ありますか?
A. フロントエンド・フルスタック系の求人でNext.jsを必須スキルまたは歓迎スキルとして挙げる企業は増えています。特にReactのスキルと合わせて、Next.jsの実務経験があると選択肢が広がる傾向にあります。
Q. GatsbyやRemixなど他のReactフレームワークとの違いは?
A. Gatsbyは静的サイト生成に特化しており、ブログやドキュメントサイトに強みがあります。RemixはWeb標準のAPIを活用する設計思想で、フォーム処理やデータの流れがシンプルです。Next.jsはSSR/SSG/ISR/CSRを柔軟に使い分けられる汎用性が強みです。プロジェクトの要件に応じて選択するのが適切です。
まとめ
Next.jsは、Reactを基盤にルーティング・レンダリング・最適化を統合したフレームワークです。SEO対策やパフォーマンスの向上、フルスタック開発の効率化など、React単体では実現しにくい機能を備えています。
学習を始める場合は、まずReactの基礎を固めたうえで、Next.js公式チュートリアルから着手するのがおすすめです。実際にアプリを作りながら、App RouterやServer Componentsの仕組みを体験的に理解していきましょう。