🔰この記事の対象
- HTML/CSSが少しわかる
- JavaScriptやReactを勉強し始めた
- Next.jsでWebサイトを作ってみたい
- ページの切り替え方(ルーティング)を知りたい
というような初学者の方を想定して、わかりやすく解説します。
✅ この記事でわかること
- App Routerってなに?
- Pages Routerとの違い
- ページやルートの作り方
- 「layout.tsx」って何?
- データの読み込みってどうするの?
- クライアントコンポーネントとサーバーコンポーネントの違い
1. App Routerってなに?
Next.jsは、ReactというJavaScriptのライブラリを使ってWebアプリを作るための「便利セット」です。
その中でもApp Routerとは、ページの切り替えやレイアウトの仕組みをとても柔軟にしてくれる新しい仕組みです。
従来のpages/
フォルダによる「Pages Router」ではできなかった、以下のようなことが可能になります。
- ページごとに共通レイアウト(ヘッダーやフッター)を作れる
- サーバーでデータを読み込んだ状態で表示できる(速い)
- 必要なページだけ部分的に更新できる
📝 用語メモ:ルーティング
「ルーティング」とは、ページのURL(例:
/about
,/contact
)に応じて、どのページを表示するか決める仕組みのこと。
2. Pages Routerとの違いは?
比較ポイント | Pages Router (pages/ ) | App Router (app/ ) |
---|---|---|
フォルダ構成 | ファイルごとにページ作成 | ディレクトリ+page.tsx |
レイアウトの仕組み | _app.tsx で全体を管理 | layout.tsx で部分ごとに可能 |
データの読み込み | getStaticProps など必要 | fetch だけでOK(自動的に) |
表示速度 | クライアントで表示更新 | サーバーで先に表示(速い) |
App Routerは、HTML生成の仕組みが進化しており、特に「表示スピードが速い」「コードがわかりやすい」というメリットがあります。

3. App Routerのフォルダ構成
App Routerでは、app/
というフォルダを使ってページやレイアウトを構成します。
app/
├── layout.tsx ← 共通レイアウト(全体に適用)
├── page.tsx ← トップページ(/)
├── about/
│ └── page.tsx ← /about ページ
各フォルダの中に「page.tsx
」というファイルを作ることで、そのURLに対応したページが自動で作られます。
4. ページの作り方(基本編)
トップページを作る
// app/page.tsx
export default function HomePage() {
return <h1>ホームへようこそ</h1>;
}
サブページ(/about)を作る
// app/about/page.tsx
export default function AboutPage() {
return <h1>このサイトについて</h1>;
}
📌 ファイルを置くだけでルートが作られるのが、App Routerの便利なところです!
5. レイアウト(共通デザイン)を作る
全ページに共通のデザイン(例:ナビゲーションやフッターなど)を持たせるには、「layout.tsx
」を使います。
// 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>
);
}
children
という部分に、それぞれのページが「中身として」差し込まれる仕組みです。
6. データの読み込み(fetchの使い方)
App Routerでは、以下のように**fetch
だけでデータ取得**ができます。
export default async function BlogList() {
const res = await fetch("https://api.example.com/posts");
const posts = await res.json();
return (
<ul>
{posts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
);
}
📝
async
とawait
は、「時間がかかる処理(非同期)」を待ってから次に進むためのJavaScriptの文法です。
7. クライアントコンポーネントとサーバーコンポーネントの違い
App Routerでは、すべてのコンポーネントはデフォルトでサーバー側で動くようになっています。
- サーバーコンポーネント → 画面の内容をサーバーで作って送る(速い)
- クライアントコンポーネント → ボタン操作や状態変更など、ブラウザ内で処理
もし、ボタンやフォームなどを使いたい場合は、ファイルの先頭に以下を記述します:
'use client';
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>クリック数: {count}</button>;
}
📝
useState
は、Reactで「変化する値」を管理するためのフック(関数)です。
8. よくある質問(Q&A)
Q1: pages/
とapp/
を両方使ってもいいの?
A: 基本的にはどちらか片方に統一した方が良いですが、一時的に混在させることも可能です。徐々に移行したいときに便利です。
Q2: App Routerを使うには何が必要?
A: Next.jsのバージョン13以上が必要です。プロジェクトを作る時に以下のように指定します:
npx create-next-app@latest my-app
# → インストール時に App Router を使うか聞かれます
🧠 まとめ
ポイント | 内容 |
---|---|
App Routerとは? | 新しいページ構成の仕組み |
特徴 | 柔軟なレイアウト、速い表示、データ取得が簡単 |
フォルダ構成 | app/ 配下に page.tsx , layout.tsx を配置 |
クライアント操作 | use client を記述すればOK |
Next.jsのApp Routerを使えば、Webサイト制作がもっと速く・綺麗に・楽になります。まだ慣れていない人でも、今回の記事を読みながら一歩ずつ作っていけば、すぐに使えるようになります。
📚 参考文献・引用元
- Next.js 公式ドキュメント(App Router)
https://nextjs.org/docs/app - App Router 概要ページ(Why App Router)
https://nextjs.org/docs/app/building-your-application/routing - React 公式ドキュメント(Server Components)
https://react.dev/learn/server-components - Vercel Blog: Introducing the App Router
https://vercel.com/blog/introducing-the-app-router - Qiita: Next.js App Router 入門記事(日本語)
https://qiita.com/search?q=Next.js+App+Router - Zenn: Next.js App Router実践解説記事
https://zenn.dev/topics/nextjs