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

Next.jsとNext.js 12以前の違いをわかりやすく解説!pagesからapp時代への大きな変化

Next.jsとNext.js 12以前の違い(pages → app時代へ)
Next.jsとNext.js 12以前の違い(pages → app時代へ)

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

生徒

「Next.jsって、最近pagesじゃなくてappって聞くんですが、何が変わったんですか?」

先生

「Next.jsは途中で大きな進化をして、ページの作り方そのものが変わったんです。」

生徒

「パソコンもあまり触ったことがないので、できるだけ簡単に知りたいです。」

先生

「では、昔のNext.jsと今のNext.jsを比べながら、やさしく説明していきましょう。」

1. Next.js 12以前は「pages」フォルダの時代

1. Next.js 12以前は「pages」フォルダの時代
1. Next.js 12以前は「pages」フォルダの時代

Next.js 12以前では、Webページを作る中心はpagesフォルダでした。 pagesフォルダの中にファイルを置くと、それがそのままWebページになります。

たとえば、pages/index.jsというファイルを作ると、トップページになります。 これは「紙に書いた住所が、そのまま地図になる」ような、とても単純な仕組みです。

初心者でも理解しやすく、Next.jsが人気になった理由のひとつです。


export default function Home() {
  return <h1>pages時代のトップページ</h1>;
}
(ブラウザに「pages時代のトップページ」と表示されます)

2. pages時代のNext.jsの特徴と考え方

2. pages時代のNext.jsの特徴と考え方
2. pages時代のNext.jsの特徴と考え方

pages時代のNext.jsは、「1ページ=1ファイル」という考え方が基本でした。 ページごとに役割がはっきりしているため、初心者でも迷いにくい構造です。

ただし、ページ全体の共通デザインや、読み込みの仕組みを細かく制御するのは少し大変でした。

家にたとえると、部屋ごとに家具を全部置いている状態です。 同じ家具を何度も置く必要がありました。

3. Next.js 13以降で登場した「app」フォルダ

3. Next.js 13以降で登場した「app」フォルダ
3. Next.js 13以降で登場した「app」フォルダ

Next.js 13からは、appフォルダが新しく導入されました。 これにより、ページの作り方が大きく変わりました。

appフォルダでは、「ページ」「レイアウト」「部品」を分けて考えます。 これは、家全体の設計図を先に作るようなイメージです。


export default function Page() {
  return <p>app時代のページ表示</p>;
}
(appフォルダのページとして文字が表示されます)

4. app時代の大きな特徴「レイアウト」

4. app時代の大きな特徴「レイアウト」
4. app時代の大きな特徴「レイアウト」

app時代では、layoutという仕組みが重要になります。 layoutは、すべてのページに共通する枠のようなものです。

ヘッダーやメニューを一度書くだけで、すべてのページに反映できます。


export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <header>共通ヘッダー</header>
        {children}
      </body>
    </html>
  );
}
(どのページにも「共通ヘッダー」が表示されます)

5. app時代で増えた「サーバーで動く考え方」

5. app時代で増えた「サーバーで動く考え方」
5. app時代で増えた「サーバーで動く考え方」

app時代のNext.jsでは、サーバーで処理する考え方がより強くなりました。 サーバーとは、Webサイトの裏側で動いているコンピュータです。

表示に必要な準備を先にサーバーで行うことで、画面表示が速くなります。


export default async function Page() {
  return <div>サーバーで準備された画面</div>;
}
(あらかじめ準備された内容が表示されます)

6. pagesとappの考え方の違いをたとえで理解

6. pagesとappの考え方の違いをたとえで理解
6. pagesとappの考え方の違いをたとえで理解

pages時代は、1枚ずつ完成したチラシを作る感覚です。 app時代は、本の目次や構成を先に決めてから中身を書く感覚です。

app時代の方が最初は難しく見えますが、規模が大きくなるほど整理しやすくなります。

7. これからNext.jsを始める人が知っておくこと

7. これからNext.jsを始める人が知っておくこと
7. これからNext.jsを始める人が知っておくこと

これからNext.jsを学ぶ場合、appフォルダの考え方が基本になります。 ただし、古い情報ではpagesが出てくることもあります。

pagesとappの違いを知っておくことで、記事や解説が理解しやすくなります。

まとめ

まとめ
まとめ

ここまで、Next.jsの劇的な進化である「pages」から「app」への移行について詳しく解説してきました。Web開発の世界では、技術の進歩とともに「より効率的に、より速く、より管理しやすく」という方向へルールが変わっていきます。Next.jsにおけるApp Routerの登場は、まさにその象徴と言えるでしょう。

Pages RouterとApp Routerの決定的な違い

これまでのPages Router(Next.js 12以前)は、シンプルさが最大の武器でした。ファイルを作ればそれが即座にURLになるという直感的な仕組みは、多くの開発者に愛されてきました。しかし、プロジェクトが大規模になるにつれて、ページ間で共通する部品の管理や、データの読み込み効率において限界が見えてきたのも事実です。

それに対してApp Router(Next.js 13以降)は、**「React Server Components」**という強力な機能をベースに設計されています。これにより、ブラウザ(ユーザーのパソコン)で頑張って動かしていた処理の多くを、サーバー側で肩代わりできるようになりました。結果として、ユーザーに届くデータの量が減り、Webサイトの表示速度が劇的に向上しています。

SEOに強いWebサイトを作るためのApp Router活用術

検索エンジン最適化(SEO)の観点からも、App Routerは非常に有利です。ページごとにメタデータ(タイトルや説明文)を簡単に、かつ動的に設定できる仕組みが標準で用意されています。また、表示速度の向上はGoogleの評価基準である「コアウェブバイタル」の改善に直結するため、モダンなWebサイト制作においてApp Routerの採用は避けて通れない道となっています。


import React from "react";

// メタデータの設定例(SEO対策に重要!)
export const metadata = {
  title: "Next.js学習まとめ | 最新のApp Routerをマスターしよう",
  description: "pagesフォルダからappフォルダへの変化を、サンプルコードを交えて分かりやすく解説します。",
};

export default function SummaryPage() {
  return (
    <article style={{ padding: "20px", lineHeight: "1.8" }}>
      <h1 style={{ borderBottom: "2px solid #0070f3" }}>進化を続けるNext.js</h1>
      <p>
        新しい技術を学ぶのは大変ですが、App Routerを使いこなすことで、
        ユーザーにとっても開発者にとっても最高の環境を作ることができます。
      </p>
      <section style={{ marginTop: "30px", backgroundColor: "#f0f0f0", padding: "15px" }}>
        <h2>学習のポイント</h2>
        <ul>
          <li>サーバーコンポーネントとクライアントコンポーネントの使い分け</li>
          <li>layout.jsによる効率的な共通デザインの管理</li>
          <li>高速なデータフェッチング(データ取得)の実現</li>
        </ul>
      </section>
    </article>
  );
}
(ブラウザのタブに指定したタイトルが表示され、整理されたまとめページが表示されます)

これからのフロントエンド開発に向けて

「以前のやり方のほうが楽だった」と感じることもあるかもしれません。しかし、コンポーネントをサーバー側で実行するという新しい常識に慣れてしまえば、今まで複雑だったコードが驚くほどスッキリすることに気づくはずです。特にNext.jsは、Reactの機能を最大限に引き出すためのフレームワークとして、今後も業界の標準であり続けるでしょう。

まずは小さなコンポーネントから「app」ディレクトリでの構築に挑戦してみてください。レイアウトの共通化や、Loading、Errorといった特別なファイルの便利さを体感することで、次世代のWeb開発の楽しさが見えてくるはずです。

先生と生徒の振り返り会話

生徒

「先生、まとめを読んでやっと全体像がつかめてきました!pages時代は『1枚の紙』を作るイメージだったけど、app時代は『システム全体の設計図』を描くようなイメージなんですね。」

先生

「その通りです。素晴らしい洞察ですね。appフォルダを使うことで、今までバラバラに管理していたヘッダーやサイドバーを、layout.jsという一つの場所で賢く管理できるようになったのが大きな進歩なんです。」

生徒

「サンプルコードを見て思ったんですけど、metadataというのを書くだけで検索結果に反映されやすくなるんですか?」

先生

「はい。以前は少し特殊な書き方が必要でしたが、今はエクスポートするだけでNext.jsが自動的に適切なHTMLタグに変えてくれます。これもSEOを意識したモダンな開発では欠かせない機能ですね。」

生徒

「なるほど。でも、サーバーコンポーネントとかクライアントコンポーネントとか、まだ少し難しそうな言葉も出てきました…。」

先生

「最初は戸惑いますよね。簡単に言うと、『計算やデータの準備はサーバーが担当』して、『ボタンをクリックしたときの動きなどはブラウザが担当』するという役割分担のことです。全部をブラウザにやらせないことで、スマホでもサクサク動くサイトになるんですよ。」

生徒

「役割分担をしっかりすることで、結果的に使う人が快適になるんですね。Next.jsをもっと練習して、速くて見やすいサイトを作れるようになりたいです!」

先生

「その意気です。まずは、今回のサンプルコードを自分の環境で動かしてみることから始めてみましょう。エラーが出ても、それが学びの一歩になりますからね。」

カテゴリの一覧へ
新着記事
New1
React
Reactコンポーネントの再利用と分割を完全マスター!初心者でもわかるコンポーネント設計
New2
React
ReactでAxiosインターセプターの使い方を完全ガイド!初心者でもわかるリクエストとレスポンスの処理方法
New3
React
JSXの書き方!初心者でもわかるReactタグと属性の基本ルール解説
New4
React
ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.5
Java&Spring記事人気No5
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.6
Java&Spring記事人気No6
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介
No.7
Java&Spring記事人気No7
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.8
Java&Spring記事人気No8
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!