Next.jsのAppRouterとPagesRouterの違い・移行手順【入門】
この記事のポイント
Next.js App Routerはサーバー処理を基本とするルーティングシステムであり、高い表示速度やSEO効果を得るには従来のPages Routerとは異なるコンポーネントの明確な役割分離と新たなキャッシュ機構を活用した設計が不可欠です。
「Next.js App RouterとPages Routerの決定的な違いや、どちらを採用すべきかという使い分けに悩む方は多いのではないでしょうか。最新のReact Server Componentsを活用し、市場価値の高いモダンな開発スキルを習得したいというニーズが高まっています。
こうした疑問を解決するために、App Routerとは何かという基本から、実践的な開発手法までを詳しくまとめました。
本記事の内容
- App RouterとPages Routerの決定的な違い
- ServerとClientコンポーネントの最適な設計手法
- パフォーマンスを最大化するデータフェッチとキャッシュ制御
Next.js App Routerの基本的な使い方から、効率的なディレクトリ構成、動的ルーティングの設定まで体系的に解説します。さらに、APIの活用方法やSupabaseとの連携といった実戦向けの知識も網羅しました。
2026年現在のフロントエンド開発において、App Routerは主流の選択肢です。新機能をマスターして、保守性とパフォーマンスに優れたWebアプリケーションを構築しましょう。それでは、具体的な実装方法を詳しく紹介します。
Next.jsのApp Routerの基本仕様
Next.jsとは、Reactをベースとした多機能なフレームワークであり、その中でもApp Routerはこれまでの開発手法を大きく変える革新的なルーティングシステムです。2026年現在、モダンな開発現場ではNext.js App Routerの使い方を習得することが必須となっています。
フレームワークの全体像
App Routerとは、React Server Componentsを基盤とした新しいファイルシステムベースのルーターです。従来のPages Routerがブラウザでの動作を前提としたのに対し、App Routerはサーバー側での処理を基本としています。
このシステムを支える主要な構成要素をまとめます。
- ディレクトリベースのルーティング:appディレクトリ内のフォルダ名が実際のURLパスに対応します。
- サーバーコンポーネント:サーバーでのみ実行されるため、ブラウザに送るJavaScriptの量を大幅に削減可能です。
- 特殊ファイルによる機能定義:レイアウトやローディング表示をlayout.tsxなどのファイル名で直感的に管理します。
Pages Routerからの変更点
App RouterとPages Routerの違いを理解することは、既存プロジェクトの移行において非常に重要です。最大の変更点は、コンポーネント単位でサーバーとクライアントの役割が明確に分離され、Next.jsのMiddlewareなどの周辺機能の仕様も刷新された点にあります。
両者の主な機能の違いを以下の表にまとめました。
| 項目 | Pages Router | App Router |
|---|---|---|
| ディレクトリ名 | pages/ | app/ |
| コンポーネントの状態 | 全てクライアントサイド | 原則サーバーコンポーネント |
| レイアウト管理 | _app.tsx等で一括設定 | layout.tsxで階層的に管理 |
| データ取得 | getServerSideProps等 | fetch関数による直接取得 |
| APIの定義 | pages/api/ | route.ts(API Route Handlers) |
どちらを使うべきか迷う場合は、最新機能が充実したApp Routerの採用を推奨します。
おすすめのディレクトリ構成
Next.js App Routerのディレクトリ構成では、機能ごとにフォルダを分けるコロケーションの考え方が基本です。これにより、開発規模が大きくなってもコードのメンテナンス性を高く維持できます。
2026年における標準的な構成例を紹介します。
- app/layout.tsx:アプリ全体の骨組みを定義する
- app/page.tsx:トップページのメインコンテンツ
- app/(auth)/:URLへ影響を与えずに認証関連ファイルをグループ化する
- app/dashboard/loading.tsx:ダッシュボード専用の読み込み画面
- app/dashboard/page.tsx:ダッシュボードのメイン画面
この構成では、丸括弧を使用したルートグループにより、URL構造を保ったままファイルを整理できます。また、フォルダ名に[id]などを用いる動的ルーティングも組み合わせて柔軟な設計が可能です。
キャッシュ制御の仕組み
App Routerは強力なキャッシュ機構を備えており、Next.jsのレンダリング挙動を細かく制御することで表示速度の向上とサーバー負荷の軽減を同時に実現します。APIを公開する場合、データの鮮度に応じた適切なキャッシュ設定が求められます。
具体的なキャッシュ制御の種類は以下の通りです。
- データキャッシュ:fetch関数で得たデータを保存し、不要な通信を削減します。
- フルルートキャッシュ:ページ全体の描写結果を保存して即座に表示させます。
- ルーターキャッシュ:ブラウザ側で遷移をスムーズにするための一時保存を行います。
SupabaseなどのBaaS系外部サービスと連携する際も、このキャッシュ戦略が効果を発揮します。fetch関数のオプションで再検証の時間を指定するだけで、ISRのような動的な更新を簡単に実装できるのが特徴です。
Next.jsのApp Routerを使った開発手順
Next.js App Routerは、React Server Components(RSC)をベースとしたモダンなWeb開発を実現する新しいシステムです。2026年現在、App RouterはNext.jsの標準構成として定着し、従来のPages Routerより高いパフォーマンスを発揮します。
ディレクトリ構造から直感的にレイアウトを設計でき、表示速度の大幅な向上が期待できる仕組みです。Server Componentsがデフォルトでサーバー側レンダリングを担うため、SEOにも強く効率的なサイト構築が可能です。
① プロジェクトを初期設定する
Next.jsでApp Routerを利用するには、最新のCLIツールを使ってプロジェクトを初期化しましょう。2026年の最新バージョンでは、App Routerが標準の推奨設定として組み込まれています。
ターミナルで以下のコマンドを実行して、セットアップを開始してください。
npx create-next-app@latest
対話形式のセットアップでは、以下の選択肢を選ぶとApp Routerが有効になります。
- Would you like to use TypeScript? → Yes
- Would you like to use
src/directory? → Yes(推奨) - Would you like to use App Router? (recommended) → Yes
設定を終えるとappフォルダが生成され、これがNext.js App Routerにおけるディレクトリ構成の中核となります。
② 基本のページを作成する
App Routerとは、ディレクトリ構造がそのままURLパスになるファイルシステムベースのシステムです。appディレクトリ内にpage.tsxを配置するだけで簡単に新しいページを作成でき、Next.jsのMetadataもファイル単位で定義できます。
Pages RouterとApp Routerの主な仕様の差異は以下の通りです。
| 機能 | Pages Router | App Router |
|---|---|---|
| ルーティング用ディレクトリ | pages | app |
| 基本のファイル名 | 任意のファイル名.tsx | page.tsx |
| デフォルトの状態 | Client Component | Server Component |
| レイアウトの共通化 | _app.tsxのみ | layout.tsxで階層別に対応 |
新規プロジェクトであればApp Routerが最適な選択です。フックを使う際は、ファイルの先頭に'use client'と記述してClient Componentへ切り替えます。
③ 動的ルーティングを実装する
ブログ記事やプロフィールのようにURLが変化する画面には、App Routerの動的ルーティングを使用します。フォルダ名をブラケットで囲むだけで、簡単に実装が可能です。
具体的な実装手順は以下の通りです。
- app/blog/[id] というディレクトリを作成する
- 作成したフォルダ内に page.tsx を配置する
- page.tsx の引数である params から動的な値を取得する
これにより、URLに含まれるIDをサーバー側で即座に取得し、最適なコンテンツを表示できます。2026年の仕様ではServer Functionsとの統合も進み、非同期でのパラメータ操作がより安全に行えます。
④ 独自のAPIルートを構築する
App RouterでのAPI構築には、Route HandlersやNext.jsのServer Actionsという仕組みを利用します。appディレクトリ内の好きな場所に route.ts を作成するだけで、特定パスをAPI化できます。
Route Handlersでは、以下のHTTPメソッドを関数としてエクスポートして利用してください。
- GET:データの取得用
- POST:データの作成用
- PUT・PATCH:データの更新用
- DELETE:データの削除用
従来のAPIルートと異なり、Web標準のRequestとResponseオブジェクトを活用します。Edge Runtimeとの相性も良く、あらゆる環境で高いパフォーマンスを発揮する設計が可能です。
⑤ 外部データベースを設定する
App Routerは、Server Components内で直接データベースへのクエリを実行できる点が非常に強力です。APIを仲介させる手間が省けるため、開発効率とレスポンス速度が同時に向上します。
2026年の開発現場では、App RouterとSupabaseを組み合わせる手法が主流となっています。具体的な設定の流れは以下の通りです。
- @supabase/ssr などのライブラリをインストールする
- .env.local ファイルにAPIキーやURLを設定する
- page.tsx などのコンポーネント内で async/await を使いデータを取得する
Next.js独自のfetch拡張やキャッシュ機構を使うことで、クエリ結果を効率的に保持できます。フロントエンドとバックエンドがシームレスに繋がり、よりモダンなアーキテクチャを実現可能です。
Next.jsのApp Routerのコンポーネント設計
2026年現在、Next.js App RouterはモダンなWeb開発の標準となりました。React Server Componentsをベースとした設計思想を理解することが、高パフォーマンスなアプリ構築の鍵です。
App Routerとは、従来のPages Routerから進化した新しいルーティングシステムを指します。効率的なディレクトリ構成を整えるうえで、UIロジックはsrcディレクトリへ分離することを推奨します。
サーバー側で実行する処理の基準
React Server Componentsは、App Routerにおいてデフォルトの形式です。データの取得や機密情報の保持、バックエンドリソースへの直接アクセスが必要な場合に活用します。
サーバー側で処理すべき主な内容は以下の通りです。
- データベースやファイルシステムへの直接アクセス
- APIキーなどの機密情報を含む処理
- 依存関係の大きなライブラリの使用
- データ取得とそれを用いた静的HTMLの生成
App Routerではpage.tsxでのデータ取得が一般的です。ブラウザへ送る前にサーバー側で処理を完結させるため、SEOの向上と初期表示の高速化を同時に実現できます。
クライアント側で実行する処理の基準
クライアントコンポーネントは、ブラウザ上での操作が必要な場合に使用します。ファイル冒頭にuse clientを記述し、従来のReactコンポーネントと同様に動作させます。
サーバーコンポーネントとクライアントコンポーネントそれぞれの対応範囲を整理すると、以下のようになります。
| 機能・処理内容 | サーバーコンポーネント | クライアントコンポーネント |
|---|---|---|
| データ取得 | 推奨(直接DB接続可能) | 非推奨(API経由のみ) |
| Hooksの使用 | 不可能 | 可能(useStateなど) |
| ブラウザAPI | 不可能 | 可能(windowなど) |
| ユーザー操作 | 対応不可 | 対応可能(クリックなど) |
| バンドルサイズ | 0(クライアントに送信なし) | コンポーネント量に比例 |
どちらのコンポーネントを選ぶかは、インタラクションの有無で判断してください。状態管理が必要な最小単位のみをクライアントコンポーネントとして切り出すのが理想的です。
表示速度を上げるデータ取得方法
App Routerで速度を最大化するには、サーバー側での効率的なデータ取得が不可欠です。標準のfetch APIを拡張したキャッシュ機構を活用し、不要なリクエストを排除しましょう。
表示速度を向上させるためのポイントは以下の通りです。
- コロケーションの徹底:データはそれを使用するコンポーネントの近くで取得します。
- 並列フェッチの活用:Promise.allなどを用いてデータの同時取得を行い、待機時間を減らします。
- ストリーミングの活用:loading.tsxやSuspenseで準備ができた部分から順次表示させます。
動的ルーティングを実装する際も、これらの手法は有効です。SupabaseなどのBaaS系サービスと連携する場合も、サーバー側で処理を完結させることでユーザー体験を高められます。
Next.jsのApp Routerを運用する際の注意点
2026年現在、Next.js App RouterはモダンなWeb開発の標準となりました。高いパフォーマンスを目指すには、従来のPages Routerとは異なる設計思想を正しく理解する必要があります。
既存環境からの移行計画
既存プロジェクトからNext.js App Routerへ移行する場合は、段階的なアプローチが有効です。appディレクトリはサーバーコンポーネントが標準となるため、アーキテクチャが根本から異なります。
- Next.jsを最新版に更新し、既存のAPIを調整する
- appディレクトリを作成し、小規模なページから順次移行する
- Pages Routerと共存させながら、動作検証を繰り返す
同一プロジェクト内でPages RouterとApp Routerを共存させることも可能です。大規模な開発でもリスクを抑えながら、新機能を段階的に導入できます。
移行前後での主な変更点は下記の通りです。
| 項目 | Pages Router | App Router |
|---|---|---|
| ディレクトリ構造 | pagesディレクトリ | appディレクトリ |
| コンポーネントの基本 | クライアント側で動作 | サーバー側(RSC)が標準 |
| データ取得手法 | getStaticPropsなど | fetchやServer Actions |
| レイアウト定義 | _app.js等で構築 | layout.jsで階層化 |
データ取得やコンポーネントの挙動を整理し、チーム全体で知識を共有しましょう。
よくあるエラーと解決法
App Routerの運用で最も多い失敗は、サーバーとクライアントの境界に関するエラーです。ブラウザ専用のAPIにアクセスすると、サーバー側での実行時にエラーが発生します。
- ブラウザ特有のオブジェクトを使用する場合
- ファイル先頭にuse clientを記述し、useEffect内で実行する
- onClickなどのイベントハンドラーを定義する場合
- ユーザー操作が必要なパーツを、クライアントコンポーネントとして切り出す
- Context APIを利用する場合
- Providerを独立したクライアントコンポーネントとして作成する
サーバー側はデータ取得に、クライアント側は操作に特化させることが大切です。役割を明確に分けることで、構築時のトラブルを未然に防ぎましょう。
外部ライブラリとの互換性の確認
外部ライブラリを導入する際は、React Server Componentsへの対応状況を確認してください。2026年時点では多くが対応済みですが、古いライブラリは正常に動かない場合があります。
- 注意が必要なライブラリ
- EmotionなどのCSS-in-JS系
- ReduxやRecoilなどの状態管理ツール
- App Router未対応のUIコンポーネント
これらはクライアントサイドの挙動に依存するため、ラッパー作成などの工夫が必要です。新規開発では、Tailwind CSSのようなゼロランタイムの技術を選ぶことが推奨されます。
ホスティング環境の選び方
Next.js App Routerの性能を引き出すには、適切な実行環境が欠かせません。独自のキャッシュ機構やRoute Handlersを最大限に活用できる環境を選びましょう。
- Vercelを利用する
- 開発元による最適化が施されており、設定なしで新機能を利用できる
- AWSやGoogle Cloudを利用する
- コンテナ運用が可能だが、ISRやキャッシュの実装に工夫が必要
App Routerはサーバー側の処理が多いため、Node.jsが効率よく動く環境が必要です。高速なレスポンスはSEO向上に直結するため、要件に合わせたプラットフォームを選定してください。
まとめ:Next.js App Routerはサーバーとクライアントを分けて移行しよう
2026年のフロントエンド開発では、Next.js App Routerの仕組みを正しく理解することがエンジニアの必須スキルです。基本的な使い方はもちろん、Pages Routerとの違いを明確に把握することがスムーズな導入の鍵となります。
動的ルーティングやAPIの実装方法など、新しいディレクトリ構成に合わせた設計を意識しましょう。Supabaseなどの外部サービスと連携する場合も、Server Componentsを軸にしたデータ取得が基本です。
本記事のポイント
- Server ComponentsとClient Componentsの役割を明確に分ける設計が重要
- 新しいキャッシュ機構とディレクトリ構造を理解してパフォーマンスを最大化させる
- ライブラリの互換性に注意しながら段階的にマイグレーションを計画する
App Routerとは何かを深く追求することで、SEOに強く表示速度の速いWebサイトが構築できるようになります。最新技術を実務に取り入れ、エンジニアとしての市場価値を向上させましょう。
効率的なシステム移行や具体的な導入支援についてのご相談も承っています。プロジェクトの最適化にお悩みの方は、ぜひお気軽にご連絡ください。
Next.jsのApp Routerに関するよくある質問
参考文献
執筆者
編集部
BtoB向けのモダンWeb制作に関する情報を発信。Next.jsを活用したWeb制作、SEOに強いサイト設計、UI/UX、AIを活用した制作効率化など、実務に役立つ知見を中心に扱っています。
監修者
Ulty 代表/編集長
海外メディア企業でSEOエディターとして従事後、独立。複数メディア運営の知見をもとに、Next.jsを活用したモダンWeb制作とSEO設計を提供。AIを活用した効率化と高品質な実装を両立し、設計から制作・運用まで一貫して支援している。
関連記事
CloudflareとAWSを比較・料金の違いとハイブリッド構成手順
CloudflareとAWSを比較し、CloudFrontやWAFの機能や料金の違いに迷うご担当者へ最適な構成と移行手順を解説し、インフラコスト削減を実現します。
Cloudflare DNSとは?無料プランの設定方法と速度改善の手順
Webサイトの表示速度や安全性に悩むご担当者様へ、CloudflareのDNSの無料プランや料金体系、安全な設定手順を解説し、知識不要で高速通信を実現します。
CloudflareのCDNの仕組みと使い方・無料の設定手順【図解】
CloudflareのCDNの仕組み・設定・使い方・料金・障害対策を解説し、無料WAFによるクラウド環境の高速化でSEOの評価向上と負荷軽減を実現します。
CloudflareのD1とは?特徴や他DBとの違い・開発手順【入門】
CloudflareのD1の概要や他データベースとの違い、メリットや開発手順を学び導入することで、保守運用が不要なフルサーバーレス環境を構築できます。
CloudflareのRegistrar移管手順と料金・デメリット【完全版】
CloudflareのRegistrarの価格や移管、JPドメインの対応状況でお悩みの方へ、ドメイン料金一覧や無料機能のメリットを解説し、運用コスト削減へ導きます。
Cloudflareの危険性・待機画面の正体と安全な導入手順【解説】
Cloudflareの危険性や安全性に悩む担当者へ、スマホ表示や障害の不安を解説し、リスクを回避して安全に導入運用する正しい設定手順が分かる記事です。