カテゴリ: Next.js 更新日: 2026/02/20

Next.jsのLayoutとTemplateの使い方を完全ガイド!初心者でもわかるNext.jsのLayoutとTemplate

Next.jsのLayoutとTemplateの適切な使い分け方
Next.jsのLayoutとTemplateの適切な使い分け方

先生と生徒の会話形式で理解しよう

生徒

「Next.jsでLayoutとTemplateって聞いたんですが、何が違うんですか?」

先生

「どちらも画面の共通部分を作る仕組みですが、役割が少し違います。」

生徒

「使い分けを間違えると、どうなりますか?」

先生

「画面の動きが分かりにくくなったり、思った通りに更新されなくなります。順番に見ていきましょう。」

1. Next.jsのLayoutとTemplateとは何か?

1. Next.jsのLayoutとTemplateとは何か?
1. Next.jsのLayoutとTemplateとは何か?

Next.jsのLayoutとTemplateは、ページの共通部分をまとめるための仕組みです。 共通部分とは、どのページでも同じように表示されるヘッダーやフッター、メニューなどを指します。 初心者の方は「毎回同じHTMLを書くのを省くための箱」と考えると分かりやすいです。 LayoutとTemplateは見た目が似ていますが、画面が切り替わったときの動き方が違います。 この違いを理解することが、Next.jsを正しく使う第一歩になります。

2. Layoutの基本的な役割と特徴

2. Layoutの基本的な役割と特徴
2. Layoutの基本的な役割と特徴

Layoutは、ページが切り替わっても状態を保ち続ける共通レイアウトです。 例えば、サイト全体のヘッダーやサイドメニューのように、 ページが変わっても消えてほしくない部分に向いています。 現実世界で例えると、家の「柱」や「土台」のような存在です。 部屋が変わっても、柱や土台は変わらないイメージです。


export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <header>共通ヘッダー</header>
        {children}
        <footer>共通フッター</footer>
      </body>
    </html>
  );
}
すべてのページで「共通ヘッダー」と「共通フッター」が表示され、その間に各ページの内容が表示されます。

3. Templateの基本的な役割と特徴

3. Templateの基本的な役割と特徴
3. Templateの基本的な役割と特徴

Templateは、ページが切り替わるたびに新しく作り直される共通構造です。 同じ見た目でも、毎回リセットしたい場合に使います。 例えるなら、ノートの「下書き用テンプレート」のようなものです。 新しいページに移動するたびに、まっさらな状態から始まります。 フォーム画面や一時的な表示に向いています。


export default function Template({ children }) {
  return (
    <div className="template-area">
      {children}
    </div>
  );
}
ページを移動すると、Template内の状態は毎回リセットされます。

4. LayoutとTemplateの動きの違い

4. LayoutとTemplateの動きの違い
4. LayoutとTemplateの動きの違い

LayoutとTemplateの最大の違いは「状態が残るかどうか」です。 Layoutは、ページを移動しても内部の状態を保ちます。 一方でTemplateは、ページが変わるたびに作り直されます。 初心者の方は「残したいならLayout、毎回やり直したいならTemplate」 と覚えると失敗しにくくなります。 この考え方を知らないと、入力内容が突然消えたように感じて混乱します。

5. Layoutが向いている具体的なケース

5. Layoutが向いている具体的なケース
5. Layoutが向いている具体的なケース

Layoutは、サイト全体で共通して使う部分に向いています。 例えば、ログイン状態を表示するヘッダーや、常に表示したいナビゲーションです。 画面が切り替わっても同じ情報を見せたい場合に使います。 これにより、ユーザーは今どこにいるか迷わずに操作できます。


function SidebarLayout({ children }) {
  return (
    <div>
      <aside>メニュー</aside>
      <main>{children}</main>
    </div>
  );
}

export default SidebarLayout;
ページを移動しても、左側のメニューはそのまま表示され続けます。

6. Templateが向いている具体的なケース

6. Templateが向いている具体的なケース
6. Templateが向いている具体的なケース

Templateは、ページごとに状態を初期化したい場合に便利です。 入力フォームや確認画面など、前のページの影響を残したくない場面で使います。 毎回同じ形だけを使い、中身は新しくしたいときに役立ちます。 間違ってLayoutを使うと、前の入力が残ってしまうことがあります。


export default function FormTemplate({ children }) {
  return (
    <section>
      <h2>入力フォーム</h2>
      {children}
    </section>
  );
}
ページを開くたびに、フォームは初期状態から表示されます。

7. 初心者が迷いやすい使い分けの考え方

7. 初心者が迷いやすい使い分けの考え方
7. 初心者が迷いやすい使い分けの考え方

初心者の方は「共通だから全部Layoutでいい」と考えがちです。 しかし、画面遷移時の動きまで考えることが大切です。 状態を保持したいか、毎回初期化したいかを基準に考えましょう。 迷ったときは、ページ移動後に何が残っていてほしいかを想像すると判断しやすくなります。 この考え方を身につけると、Next.jsの画面設計が一気に楽になります。

カテゴリの一覧へ
新着記事
New1
React
Reactのイベント記述方法を完全ガイド!初心者でもわかるonClickの使い方
New2
React
Reactのコンポーネントライフサイクルを完全ガイド!初心者でもわかるReactのライフサイクル入門
New3
React
ReactがSEOに弱いって本当?SPAとSEO対策の関係を解説
New4
Next.js
Next.jsのLayoutとTemplateの使い方を完全ガイド!初心者でもわかるNext.jsのLayoutとTemplate
人気記事
No.1
Java&Spring記事人気No1
React
ReactのuseEffect依存配列を徹底解説!初心者でも理解できるDependency Arrayの仕組み
No.2
Java&Spring記事人気No2
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.3
Java&Spring記事人気No3
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.5
Java&Spring記事人気No5
Next.js
Next.jsのApp RouterとServer Componentsの関係まとめ!初心者でもわかるNext.jsの新しい仕組み
No.6
Java&Spring記事人気No6
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.7
Java&Spring記事人気No7
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
No.8
Java&Spring記事人気No8
React
ReactのuseEffectで初回のみ処理を実行する方法を徹底解説!初心者でもわかるReactフック入門