最終更新:

【2026年版】Next.jsの始め方 — Reactフレームワークの第一歩を完全ガイド


Next.js の主要機能 Routing app/page.tsx app/layout.tsx ファイルベース SSR / SSG Server Components fetch + cache ISR対応 API Routes app/api/route.ts Server Actions バックエンド統合 Deploy Vercel Docker セルフホスト 開発フロー create-next-app プロジェクト作成 ページ作成 page.tsx + layout データ取得 fetch / API Route ビルド&デプロイ Vercel / Docker React + ルーティング + SSR/SSG + API + デプロイ = Next.js フルスタックReactフレームワーク
Next.jsの主要機能と開発フローのイメージ
🎚 難易度 ★★☆ 中級者向け
⏱ 学習時間の目安 読むだけ10分、動かすまで30〜60分
📚 前提知識 react-getting-started の基礎知識・typescript-getting-started(推奨)
✅ このガイドで学べること
  • Next.jsプロジェクトの作成(App Router)
  • サーバーコンポーネントとクライアントコンポーネントの違い
  • ページルーティングの基本
  • データフェッチングとSSR/SSG/ISRの概念

セットアップ手順

# Next.jsプロジェクト作成(App Router + TypeScript推奨)
npx create-next-app@latest my-next-app --typescript --tailwind --eslint --app
cd my-next-app
npm run dev

App Routerの基本構造

my-next-app/
├── app/
│   ├── layout.tsx      # 共通レイアウト
│   ├── page.tsx        # ルートページ(/)
│   ├── about/
│   │   └── page.tsx    # /about ページ
│   └── api/
│       └── hello/
│           └── route.ts # /api/hello エンドポイント
└── components/         # 再利用コンポーネント
// app/page.tsx(サーバーコンポーネント・デフォルト)
async function HomePage() {
  const data = await fetch('https://api.example.com/posts');
  const posts = await data.json();
  return <main>{posts.map(p => <p key={p.id}>{p.title}</p>)}</main>;
}

// クライアントコンポーネントは先頭に 'use client' を追加
'use client';
import { useState } from 'react';

よくある詰まりポイント

Q: 'use client' をどこに付ければいい?useState / useEffect などのReact Hooksを使うコンポーネントや、ブラウザのAPIを使う場合に付けます。サーバーで完結するデータ取得などは付けなくてOKです。

Q: App RouterとPages Routerどちらを使うべき? → 新規プロジェクトではApp Router(Next.js 13以降)が推奨です。ただし学習資料が古いとPages Routerの例も多いので、両方の違いを把握しておくと混乱しにくいです。

Q: ローカルで画像が表示されるがデプロイ後に表示されないnext/imageremotePatterns 設定が必要な場合があります。next.config.js で許可するドメインを追加してください。

ひよこ ひよこ

Reactを少し触ったんだけど、「本番のWebアプリを作りたいならNext.jsを使え」ってよく見かけるんだよね。Next.jsって何がそんなに違うの?

ペンギン先生 ペンギン先生

Reactだけだとルーティング(ページ遷移の仕組み)やビルド設定を自分で組む必要があって、実は最初のセットアップが結構大変なんだ。Next.jsはそこを全部まとめてくれるフレームワークで、コマンド一発でプロジェクトが作れて、フォルダを作るだけでURLルーティングができる。しかも検索エンジン向けのSSRやISRも標準搭載だから、個人サイトから本番サービスまで幅広く使われているんだよ。

ひよこ ひよこ

なるほど、準備の手間が全然違うんだね!実際に動かすまでどのくらいかかるの?

ペンギン先生 ペンギン先生

環境さえ整っていれば5分もかからないよ。ターミナルで「npx create-next-app@latest my-app」を実行すると、TypeScriptESLintを使うか対話式で聞かれて、答えるだけでプロジェクトの雛形ができあがる。2026年現在はApp Routerがデフォルトで、appフォルダの中にページを配置していく構成になっているよ。このページでは「プロジェクト作成→ページ追加→データ取得→デプロイ」まで一通り説明するから、手を動かしながら読んでみてね。

ペンギン先生 ペンギン先生

ここで「npx create-next-app@latest my-next-app --typescript --app」を実行してみてね。質問にはEnterで進んでOKだよ。「cd my-next-app」→「npm run dev」で「localhost:3000」が開けば成功!最初からかっこいいスタートページが表示されるよ。

ひよこ ひよこ

App Routerってどういう仕組みなの?

ペンギン先生 ペンギン先生

appフォルダの中にフォルダを作ると、それがそのままURLのパスになるんだ。たとえばapp/about/page.tsxを作れば「/about」でアクセスできる。page.tsxがそのルートの画面本体で、layout.tsxが共通のヘッダーやサイドバーを包むラッパーになるよ。この2つのファイルがApp Routerの基本だね。

ひよこ ひよこ

Server ComponentsとClient Componentsっていうのも聞いたけど、どう使い分けるの?

ペンギン先生 ペンギン先生

Next.jsのApp Routerでは、デフォルトで全部Server Componentになっていて、サーバー側でHTMLに変換されてからブラウザに届くんだ。ボタンのクリックやフォーム入力みたいにブラウザ側で動かしたい部分だけ、ファイルの先頭に「"use client"」と書いてClient Componentにする。こうすることでJavaScriptの転送量が減って、ページの表示が速くなるよ。

ひよこ ひよこ

データの取得はどうやるの?SSRとかSSGとか聞くけど…

ペンギン先生 ペンギン先生

Server Componentの中で直接awaitを使ってfetchを呼べるのがNext.jsの便利なところだよ。fetchのキャッシュオプションを「force-cache」にすればビルド時に生成するSSG相当、「no-store」にすればリクエストごとに取得するSSR相当になる。用途に応じて1ページの中でもコンポーネント単位で使い分けられるんだ。

ひよこ ひよこ

API Routesっていうのもあるって聞いたよ!

ペンギン先生 ペンギン先生

app/api/フォルダの中にroute.tsを作ると、バックエンドAPIエンドポイントが作れるよ。たとえばapp/api/hello/route.tsにGET関数をexportすれば、「/api/hello」にアクセスしたときにJSONを返せる。フロントエンドバックエンドを1つのプロジェクトで管理できるのが大きなメリットだね。

ひよこ ひよこ

作ったアプリはどうやって公開するの?

ペンギン先生 ペンギン先生

一番簡単なのはVercelデプロイする方法だよ。GitHubリポジトリを連携するだけで、pushするたびに自動ビルド・デプロイしてくれる。Next.jsの開発元が運営しているサービスだから相性も抜群だね。自前のサーバーで動かしたい場合は「next build」してから「next start」でNode.jsサーバーとして起動できるし、「output standalone」オプションを設定すればDockerコンテナにも載せやすいよ。

ひよこ ひよこ

もっと上級の機能も気になる!ISRとかミドルウェアって何?

ペンギン先生 ペンギン先生

ISR(Incremental Static Regeneration)は、一度静的生成したページをバックグラウンドで定期的に再生成する仕組みだよ。fetchのrevalidateオプションに秒数を指定するだけで使える。ミドルウェアはリクエストがページに届く前に処理を挟む機能で、認証チェックやリダイレクト、地域ごとの出し分けなんかに使うんだ。Edge Runtimeで動くからレスポンスがとても速いよ。

ひよこ ひよこ

React Server Actionsっていうのも最近よく聞くけど…?

ペンギン先生 ペンギン先生

Server Actionsはフォーム送信などのデータ変更をサーバー側で直接処理できる機能だよ。関数の先頭に「"use server"」と書くだけで、クライアントからその関数を呼ぶとサーバーで実行される。従来はAPI Routeを別途作ってfetchで叩く必要があったけど、Server Actionsなら1つのファイルにUIサーバー処理をまとめて書けるんだ。

ひよこ ひよこ

便利すぎる…!これからNext.jsを学ぶならどんな順番がいいかな?

ペンギン先生 ペンギン先生

まずはcreate-next-appでプロジェクトを作って、App Routerでページを2〜3個作ってみること。次にServer ComponentとClient Componentの使い分けを体験して、fetchでデータ取得を試す。そこからAPI RouteやServer Actionsに進んで、最後にVercelデプロイしてみるといいよ。公式ドキュメントのLearnコースが無料でステップバイステップに学べるから、最初の教材としてはベストだね。

次に学ぶなら