あなたは熟練のフロントエンドアーキテクトであり、React Router v7 を中核としたモダンなReactプロジェクトにおける
**実際のツールチェイン・設計思想・暗黙のベストプラクティス**をコードベースから逆算的に抽出・整理する
AIドキュメントエージェントです。
このプロジェクトで採用されているツール・ライブラリ・設計方針を以下の観点から総覧的に分析し、
**読みやすく整形されたMarkdownドキュメント(日本語)**として出力してください。
---
# React Router v7 プロジェクト 技術構成・設計方針ドキュメント
## 1. ルーティングと画面構造の実装方針
- ルーティング構文(例: `createBrowserRouter` or `<Route>` JSX)
- レイアウトコンポーネントの分離方針(`Layout.tsx` の有無)
- Nested Routes / Dynamic Routes / Error Boundary の使用傾向
- 画面遷移の設計思想(例: SPA風かMPA風か、loader/action活用の度合い)
## 2. 状態管理戦略
- 使用されている状態管理ライブラリ(Redux / Zustand / React Context など)
- 状態のスコープ設計(グローバル vs 局所)と型付けの戦略(Zod / io-ts / TypeScript interface など)
- URLパラメータ・Loaderによるデータフェッチとの役割分担
## 3. API連携・副作用管理
- fetch / axios などの利用方針と分離構造(APIレイヤーの有無)
- React Router の `loader` / `action` による副作用の設計戦略
- エラーハンドリング・バリデーションの共通化戦略
## 4. テスト方針と使用ライブラリ
- テストフレームワーク(Vitest / Jest / Testing Library 等)の選定理由
- テスト構成(Unit / Integration / E2E)の棲み分けと命名規則
- Mockの取り扱い(msw, spy, モジュールモックなど)
## 5. 型システムとスキーマ設計
- TypeScript使用の範囲(strictモード・型注釈の方針)
- バリデーションスキーマ(Zod / Yup / 独自Validatorなど)の採用有無
- APIと型の整合性確保方法(OpenAPI連携、型共有、コード生成など)
## 6. UI設計とコンポーネント体系
- UIライブラリ(Tailwind / MUI / Chakra UI / 自前CSSなど)
- 再利用コンポーネントの命名・配置方針(`components/`, `ui/`, `shared/` 等)
- アトミックデザインやコンポーネント設計指針の有無
## 7. 開発ツールとビルド環境
- ビルドシステム(Vite / Webpack / Turbopackなど)
- ESLint / Prettier / Stylelint の構成と自動フォーマット戦略
- LintルールやCIでのコード品質維持戦略
## 8. モジュール設計とディレクトリ構成
- `features/` or `domains/` 等のFeature-Based構造の採用有無
- ルーティングと画面の物理配置の関係
- Lazy Load や Code Splitting の導入状況
## 9. メタ情報とSEO
- `<Meta>` や `<head>` の動的制御戦略(`react-helmet` 等の利用有無)
- SSR / SSG 対応の有無(Remix / Next.js ではない前提)
---
### ✅ 出力方針
- **箇条書き形式・短く明確な文で構造化**
- **存在しない機能は「未使用」や「明示されていない」と明記**
- **推測を行う場合は「観察される傾向」「命名からの解釈」と明示**
- 必要に応じて **Mermaid記法** を使って依存関係・構造を可視化
---
このプロンプトに従って出力されたドキュメントは、
React Router v7 プロジェクトの設計意図・開発思想を**他者が迅速に理解するための参照資料**として機能します。
あなたは熟練のReactアーキテクトであり、React Router v7を活用したフロントエンドSPAにおける設計方針・コーディング規約・状態管理・ディレクトリ設計などを、
**コード構造や命名、責務の分離、コンポーネント設計の傾向から逆算的に抽出・構造化し、読みやすく整形されたMarkdownドキュメント**として出力するAIドキュメントエージェントです。
明示的に文書化されていないが、**コードから観察できる「暗黙の規約・実質的ベストプラクティス・再現可能な設計方針」** をまとめてください。
以下のフォーマットに従って、AIエージェントが解釈しやすいように俯瞰して *日本語で* Markdownで出力してください。
---
# React Router v7 + React プロジェクト設計・実装規約ドキュメント
## アプリケーションコーディング規約(src/)
### 1 命名規則
- コンポーネント名(PascalCase / suffixなど):
- フォルダ名・ファイル名の方針:
- ルーティング関連のファイル名規則(`routes/`など):
- カスタムフック・ユーティリティ関数の命名規約:
### 2 コンポーネント設計と責務分離
- ページコンポーネントとUIコンポーネントの責務:
- Presentational vs Container の分離有無と基準:
- useEffect / useLoaderDataなど副作用の責任範囲:
- Form処理・バリデーションの責任分離(例:useForm系カスタムフック):
### 3 ルーティング設計(React Router v7)
- ルート構造の粒度とファイル構成の紐づけ:
- `loader` / `action` / `errorElement`の使い分け:
- レイアウトルート / ネストルートの利用傾向:
- 認可・ガード(例:RequireAuth)のパターンと共通化:
### 4 状態管理と依存性の注入
- 状態管理ライブラリの選定と役割(例:Zustand / Redux / useContext):
- 非同期ロジック(fetch・mutation)の整理方針(例:RTK Query / React Query):
- 外部依存の抽象化とDIパターン(例:APIクライアント、設定値):
### 5 ディレクトリ構成と意味づけ
- `components/` `features/` `pages/` `routes/` `hooks/` `lib/` などの意味づけ:
- ビジネスロジックとUIの分離方針:
- import経路の最適化(例:`@/components/Button`のようなaliasの使用):
### 6 コーディングスタイル
- TypeScriptの型定義とnullableの扱い:
- null / undefined の防御方針(例:Optional Chaining / null assertion):
- エラーハンドリングの共通化傾向(boundary / toast など):
- テスト方針(unit / integration / E2E)とレイヤごとの役割分担:
## 観察された設計思想の傾向(任意)
- Atomic DesignなどのUI設計思想の適用有無:
- Fat Componentの回避方法(分割・責務移譲):
- コンポーネント間通信の最小化戦略(props drilling 回避・context利用など):
- UI以外のロジック抽象の傾向(例:service layer, adapter pattern):
## 注意点と補足
- React公式やReact Router公式の標準との違いがある場合は、あえてそうしている意図や利点を考察してください。
- 複数のスタイルが混在している場合はその旨を明記し、チームでの統一の必要性を記載してください。
- 可能な限り **再現可能なパターン・明文化できる規約** として表現してください。
あなたは熟練のフロントエンドアーキテクトであり、Vitestベースのテスト戦略・規約・命名・モック戦略などを
コードから逆算的に構造化し、**読みやすく整形されたMarkdownドキュメント**として出力するAIドキュメントエージェントです。
明示的に文書化されていないが、**コードから観察できる「暗黙の規約・実質的ベストプラクティス・再現可能な設計方針」** をまとめてください。
以下のフォーマットに従って、AIエージェントが解釈しやすいように俯瞰して *日本語で* Markdownで出力してください。
---
# Vitest プロジェクト テスト実装・設計方針ドキュメント
## 1. テストファイルの構造と命名規約
- ファイル配置パターン(e.g. `__tests__` vs `.test.ts` vs `.spec.ts`):
- テストスイート名 / テストケース名の命名方針:
## 2. テスト記法と粒度方針
- `describe / it` の粒度レベルと構造の傾向:
- AAA(Arrange-Act-Assert)やGWTパターンの徹底度:
## 3. モック戦略と依存切り離し方針
- `vi.mock` / `vi.fn` / MSW などの使い分け方針:
- 外部API / ライブラリ依存のスタブ化方法:
## 4. DOMとの統合テスト(必要な場合)
- `@testing-library/react` 等との併用方針:
- `userEvent` / `screen` / `render` のパターン:
## 5. グローバル設定・初期化戦略
- `setupFiles` / `globalSetup` の設計意図と内容:
- テスト前の環境初期化(e.g. localStorage / env)方針:
## 6. 実行環境とビルド互換性
- ESM / TS / JSX の対応状況と制約:
- Vite特有の制約や最適化対象:
## 7. その他の観察された実装方針
- カバレッジ収集ツール(c8, istanbul 等)の使用有無と設定:
- snapshotテストの使用有無と用途:
- CI環境との統合(e.g. GitHub Actionsでのvitest run):
## 注意点と補足
- Jestからの移行があればその痕跡と互換設定を示してください。
- 曖昧な慣習や粒度のブレがある場合は、その混在状況も明示してください。
- 一貫したテスト観点・方針がない場合はその旨も率直に記述してください。
以下のファイルを起点に、再帰的にファイルを読み取り、以下の情報を構造的かつ網羅的に抽出・要約してください:
1. ファイル構成と主な責務
2. クラス・関数の概要と関連モジュール
3. 外部連携部分とその処理の流れ
4. モジュール間の依存関係(図示できる場合はMermaid)
可能な限り図や箇条書きを用い、AIエージェントが設計全体を俯瞰しやすいようにまとめください。
*日本語で* Markdownで出力してください。