TL;DR
Next.js(App Router)の実務2年分の知見を実装観点別に体系化
Next.js 15 / React 19対応(※v16の変更点は随時追記予定)
まずは 第2章(コンポーネント設計)、第3章(データ取得)、第6章(キャッシュ戦略) からどうぞ
はじめに
2023年5月にApp Routerが安定版となり、先日v16も正式リリースされ、現在ではApp Routerを中心とした新しい開発体験が標準となってきました。
しかし、最新のNext.jsにおいて実務で求められる判断基準は多岐にわたります。そのため設計・実装で苦戦している方も多いかと思います。
Server ComponentとClient Componentを意識したコンポーネント設計パフォーマンスやセキュリティを考慮したサーバー側でのData FetchやMutation複数レイヤーを組み合わせたキャッシュ戦略
etc...
筆者は、2023年7月のApp Routerリリース直後から現在まで、約2年に渡りv13~15のNext.js(App Router)を使った開発に携わってきました。 実際に私もApp Routerを使った開発では、情報が少ない中で様々な課題に直面し、先ほど挙げたような観点での設計や実装判断に迷う場面が数多くありました。
これらの実務経験を通じて得た知見を体系的にまとめ、同じような課題に直面している開発者の助けになればと思い、今回約10万文字のNext.js 15 / React 19の設計方針やベストプラクティスをオンライン技術書として執筆しました。(そして翌朝にNext.js v16が正式リリースされました涙)
本bookでは、App Routerの思想に沿いつつ、実務で直面する課題に対応するための実践的な設計方針を体系的にまとめています。
Bookとして公開した背景
筆者は現在、主にNext.jsを使用したWebフロントエンドの開発に携わっています。また社内ではClaude Codeを活用したAI駆動開発をチームで進めており、AIに精度の高い設計・実装をしてもらうために、プロジェクトルールや言語・フレームワークの設計方針、成果物のテンプレートなど、様々な資料の整備とルールの明確化をする必要がありました。
そんな中、社内でNext.js 15を採用した新規のWebアプリ開発のプロジェクトが立ち上がりました。このプロジェクトをきっかけに、今までのNext.js(App Router)の開発経験を体系的に整理し、実装観点別の設計方針を根性で約2万文字のドキュメントにまとめました。
そして「この知見は、同じような課題に直面している他の開発者にも役立つのではないか?」
そう考えたことが、今回このBookを執筆した背景です。
ベースの設計方針ドキュメントの特徴
AI駆動開発を進める上で作成したNext.jsの設計方針ドキュメントには、以下の3つの特徴がありました。
1. 網羅的かつ体系的な整理
プロジェクト全体の基本ルールやディレクトリ構成といった基盤部分から、定量的なコンポーネント分割の基準や複数の具体的なデータ取得の実装方法まで、必要な情報を網羅的かつ体系的に整理しています。「どこを見れば何がわかるか」が明確な構造を意識しました。
2. 実装観点別の設計方針
App Routerを前提とし、ディレクトリ構成、コンポーネント設計、データ取得、データ更新、状態管理、キャッシュ戦略、エラーハンドリングといった実装観点ごとに設計方針を整理しました。各観点で「何をどう判断すべきか」が明確になるよう構成しています。
3. ユースケース別での設計のパターン化
実務で直面する具体的なユースケースを起点に、最適な実装方法をパターン化しました。
例えば、下記のような内容です。
・7つのユースケース別の最適なデータ取得の実装方法
・通常の更新から楽観的更新など、計6パターンのデータ更新方法の設計
・SSOT(データの主軸)とスコープを基準にした9つの状態管理パターン
このパターンのときはこう実装する、という道筋が明確になります。
上記の特徴を持つ設計方針ドキュメントをベースに、約10万文字のオンライン技術書となりました。
あくまでドキュメントとして作成していたことや、AIにインプットさせる想定であったため、なるべく箇条書きでシンプルにまとめていました。
また、コンテキスト圧迫によるハルシネーションを避けるため、サンプルコードは複雑な部分だけに留めていたので、今回Book化にするあたって下記のようなテコ入れをしました。
- ドキュメントの文章を、人間が読みやすいように記事風の文章に整形
- 初中級者の方でも読みやすくするため、用語の補足説明の追加や、Next/Reactの標準機能に関する情報の肉付け
- 具体的なサンプルコードの追加
- 公式ドキュメントのリンクを文中に挿入
etc...
その結果、2万文字から10万文字の規模になってしまいました。
Bookの構成と内容
全10章構成で、現在7章まで公開しています(残り3章は準備中)。
各章は独立して読めるように構成していますので、必要な部分から読み進められます。ぜひ実装の参考としてご活用ください。
第1章: 基本ルールとディレクトリ構成
プロジェクト全体を貫く基本ルールと、保守性・拡張性を両立させるディレクトリ構成について解説しています。App Routerの思想に沿った基本方針、Featureベースのディレクトリ構成、APIクライアントの配置とサーバー/クライアントの分離など、プロジェクトの土台となる設計を扱います。
第2章: コンポーネント設計
適切な粒度でのコンポーネント分割や、Server ComponentとClient Componentの使い分けやルールについて解説しています。 単一責任の原則や状態のコロケーション、行数や関心ごとを基準とした分割基準、Server ComponentでのストリーミングやClient ComponentのSuspense、Compositionパターンなどを扱います。
第3章: データ取得
7つのユースケース別に、最適なデータ取得の実装方法を解説しています。初回レンダリング時(静的・動的・クライアント専用)のデータ取得、ユーザー操作時のデータ取得、初回SSR + クライアントフェッチのハイブリッドデータ取得など、実務で直面するあらゆるケースをカバーしています。
第4章: データ更新
通常の更新から楽観的更新、デバウンス更新まで、6つのパターンを解説しています。 Server ActionsやrevalidateTagを使った通常の更新(クリック/form action)、useOptimisticやuseMutationによる楽観的更新(サーバーフェッチ/クライアントフェッチ)、TanStack Queryの複数機能を使った複雑な更新要件への対応などを扱います。
第5章: 状態管理
SSOT(データの主軸)とスコープを基準に、9つの状態管理パターンを解説しています。 ローカルステート(useState/useReducer)、小中規模グローバルステート(useContext/Zustand)、サーバーフェッチスナップショット(Server Fetch)、サーバーステート(TanStack Query)、その他URLステートやフォームステートなどを扱います。
第6章: キャッシュ戦略
複数のキャッシュレイヤーを理解し、戦略的に活用する方法を解説しています。 Full Route CacheやRouter Cacheの制御、Data Cacheの使い分けとrevalidateTagによる再検証、TanStack Query のクライアントキャッシュとの分離など、Next.jsのキャッシュ機構を深く掘り下げます。
第7章: エラーハンドリング
想定済みエラーと予期せぬエラーに対応する、実践的なエラーハンドリング戦略を解説しています。Result型による型安全なエラー処理、コンポーネント単位での部分的なエラーUI表示、エラー内容の正規化とセキュリティなどを扱います。
第8章〜第10章(準備中)
第8章「認証・認可」、第9章「スタイル」、第10章「テスト」は現在準備中です。後日追加予定となっています。
こんな方におすすめ
- Next.js(App Router)の使い方を体系的に学びたい初学者・中級者の方
- チーム開発で統一した設計方針や具体的なルールを求めている方
- Next.js / Reactの実装観点別の設計方針を知りたい方
- ユースケースに応じた複数のプラクティスを知りたいNext.js経験者の方
- Pages RouterからApp Routerへの移行を検討している方
最後に
Next.js / Reactは、Webアプリケーション開発における新しい標準を提示しています。このBookが、Next.js(App Router)を活用した実務でのWebアプリケーション開発の一助となれば幸いです。
最後まで読んでいただき、ありがとうございました。
読んでくださった方は、ぜひコメント欄で 「ここが参考になった」 「この章を深堀してほしい」 など教えていただけるとありがたいです。