実践記事

Next.js App Router完全ガイド|最新機能でモダンWebアプリを構築する方法

4分で読めます
Tech Study Work編集部
Next.jsApp RouterReactServer ComponentsWeb開発
Next.js App Router完全ガイド|最新機能でモダンWebアプリを構築する方法

Next.js App Routerとは何か|Pages Routerとの違い

Next.js 13で導入され、Next.js 14・15で安定版となったApp Routerは、Reactの最新機能(Server Components・Server Actions・Streaming等)を活用したNext.jsの新しいルーティングシステムです。

App RouterとPages Routerの主な違い:
・Server Components:デフォルトでサーバーサイドでのレンダリング。クライアントサイドのJSバンドルサイズを削減
・Server Actions:サーバーサイドの関数をクライアントコンポーネントから直接呼び出せる(APIルート不要)
・layout.tsx:共通レイアウトの定義が階層的に管理できる
・loading.tsx・error.tsx:ローディング状態・エラー状態のUIが簡単に実装できる
・Streaming・Suspense:UIを段階的にストリーミング表示できる

App Routerのディレクトリ構造

App Routerの規約ベースのファイル構造を解説します。

appディレクトリの基本構造:
app/layout.tsx(ルートレイアウト・必須)
app/page.tsx(ルートページ /)
app/about/page.tsx(/about ページ)
app/blog/[slug]/page.tsx(動的ルート)
app/api/users/route.ts(API Route)

特殊ファイル:
layout.tsx:共通レイアウト(親から子に継承)
page.tsx:ルートのUIコンポーネント
loading.tsx:ローディングUI(React Suspense自動適用)
error.tsx:エラーUI(Error Boundaryとして機能)
not-found.tsx:404ページ
template.tsx:毎回再レンダリングされるレイアウト

この記事を読んでいるあなたへ

具体的なサービス選びで迷っているなら、編集部が厳選した比較記事もご参考ください。

AIツールを比較する →

Server ComponentsとClient Componentsの使い分け

App Routerで最も重要な概念がServer ComponentsとClient Componentsの使い分けです。

Server Components(デフォルト)を使う場面:
・データベースへの直接アクセス(await db.query()等)
・APIキーなどの機密情報を扱う処理
・大きなライブラリ(クライアントに送らなくていいもの)
・SEOが必要な静的コンテンツ

Client Components('use client')を使う場面:
・useState・useEffect等のReact Hooksを使う
・onClick・onChange等のイベントハンドラーを持つ
・ブラウザAPIを使う(localStorage・window等)
・リアルタイムの状態変化を扱う

重要な原則:Serverコンポーネントの中にClientコンポーネントを入れることはできますが、逆(ClientコンポーネントにServerコンポーネント直接インポート)はできません。ただしchildrenとしてpropsで渡すことは可能です。

データフェッチとキャッシュ戦略

App Routerのデータフェッチとキャッシュ戦略を解説します。

Server Componentでのデータフェッチ:
fetch APIを直接Server Component内で使うことで、自動的にキャッシュが機能します。

キャッシュの設定方法:
・fetch('...', { cache: 'force-cache' }):キャッシュを使う(デフォルト)
・fetch('...', { cache: 'no-store' }):キャッシュなし(毎回フェッチ)
・fetch('...', { next: { revalidate: 60 } }):60秒ごとに再検証

revalidateTagを使ったOn-Demand ISR:
特定のtagを付けてフェッチしたデータを、revalidateTag(tag)で手動で無効化できます。CMSの更新時・フォーム送信後のデータ更新に活用できます。

Server Actionsの実装

Server ActionsはApp Routerで導入された強力な機能です。サーバー側の関数をフォームやボタンから直接呼び出せます。

Server Actionsの基本的な使い方:
①actions.tsに'use server'を宣言した関数を作成
②フォームのactionまたはuseActionStateフックで呼び出す
③Server ActionはサーバーサイドでDBアクセス・認証確認などを行える

Server Actionsの利点:APIルートを別途作成する必要がなく、型安全なサーバー処理を簡潔に書ける。Zodでバリデーションと組み合わせることで、セキュアなフォーム処理が実装できます。

関連する比較記事

この記事に関連するサービス比較をチェック

Next.js開発を加速するAIコーディングツールを比較しよう

Next.js App RouterでのWebアプリ開発を効率化するAIコーディングツールを比較して、開発速度を上げましょう。

AIコーディングツールを比較する

よくある質問

この記事をシェアする