name: detailed-design-templates
description: 詳細設計書作成時のテンプレート集(フロントエンド設計書、Issue作成テンプレート等)
詳細設計テンプレート集
参照元: detailed-design-workflow コマンド
フロントエンド設計書テンプレート
画面を持つ機能には以下の構成で フロントエンド設計書.md を作成する。
# {機能名} フロントエンド設計書
## メタ情報
| 項目 | 内容 |
|------|------|
| ドキュメントID | DETAIL-{機能ID}-FRONTEND-001 |
| 親設計書 | [詳細設計書.md](./詳細設計書.md) |
---
## 1. コンポーネント構成
### 1.1 コンポーネント階層図
```mermaid
graph TD
Page["{PageName}Page"]
Page --> Container["{Feature}Container"]
Container --> Component1["{Component1}"]
Container --> Component2["{Component2}"]
1.2 コンポーネント一覧
| コンポーネント名 | 種類 | 責務 | Props |
|---|
{Feature}Page | Page | ルーティング、レイアウト | - |
{Feature}Container | Container | 状態管理、API呼び出し | - |
{Component} | Presentational | UI表示 | data, onAction |
2. 状態管理設計
2.1 状態の種類と管理方針
| 状態 | スコープ | 管理方法 | 永続化 |
|---|
| ユーザー認証 | グローバル | Zustand/Context | LocalStorage |
| フォーム入力 | ローカル | useState/useForm | - |
| サーバーデータ | キャッシュ | React Query/SWR | - |
2.2 グローバル状態
interface {Feature}State {
// 状態の型定義
}
3. カスタムフック設計
| フック名 | 責務 | 引数 | 戻り値 |
|---|
use{Feature} | {機能}のロジック | - | { data, isLoading, error } |
use{Feature}Mutation | データ更新 | - | { mutate, isPending } |
4. API連携設計
4.1 使用エンドポイント
| API | メソッド | 用途 | フック |
|---|
/api/xxx | GET | データ取得 | use{Feature}Query |
/api/xxx | POST | データ作成 | use{Feature}Mutation |
4.2 エラーハンドリング
| エラーコード | 画面表示 | リカバリ方法 |
|---|
| 400 | バリデーションエラー表示 | フォーム修正を促す |
| 401 | ログイン画面へリダイレクト | - |
| 500 | エラーメッセージ表示 | リトライボタン |
5. フォームバリデーション
| フィールド | ルール | ライブラリ | エラーメッセージ |
|---|
| email | 必須, メール形式 | zod/yup | メールアドレスを入力してください |
6. ルーティング設計
| パス | コンポーネント | 認証 | ガード |
|---|
/xxx | {Feature}Page | O | AuthGuard |
7. パフォーマンス考慮
| 最適化項目 | 実装方法 |
|---|
| 不要な再レンダリング防止 | React.memo, useMemo, useCallback |
| 遅延読み込み | React.lazy, Suspense |
| 仮想スクロール | react-virtuoso (大量データ時) |
8. テスト方針
| テスト種別 | 対象 | ツール |
|---|
| Unit | カスタムフック | Jest, React Testing Library |
| Integration | Container + API | MSW |
| E2E | ユーザーフロー | Playwright |
9. 呼び出し元(Integration Points)⚠️ 必須
重要: このセクションがないと Phase 6.6(設計書整合性チェック)で統合漏れを検出できません。
9.1 このコンポーネントを使用する場所
| 呼び出し元 | 使用方法 | 統合Issue |
|---|
app/{path}/page.tsx | <{FeatureName} /> をレンダリング | #{issue_number} |
components/layout.tsx | Navigationから /{path} へリンク | #{issue_number} |
9.2 ルーティング統合
| パス | ページコンポーネント | 統合確認コマンド |
|---|
/{path} | {Feature}Page | grep -r '{Feature}' app/ |
9.3 統合確認手順
# 1. ページが正しく配置されているか
ls app/{path}/page.tsx
# 2. ナビゲーションからリンクされているか
grep -r '/{path}' components/
# 3. 実際にブラウザで動作確認
npm run dev
# → http://localhost:3000/{path} にアクセス
変更履歴
| 日付 | バージョン | 変更内容 | 担当者 |
|---|
| YYYY-MM-DD | 1.0.0 | 初版作成 | - |
---
## Issue作成テンプレート
### Epic Issue構成
- 概要
- 関連ドキュメント
- スコープ(機能一覧)
- 技術スタック
- 工数見積もり
- 子Issue一覧(**各200行以下**)
- ドキュメント更新Issue
- 依存関係(Mermaid形式)
### 子Issueテンプレート
```markdown
## 概要
{1-2文で機能を説明}
## 親Issue
- Epic: #{epic_issue_number}
## 設計書
- [{設計書名}]({path_to_design_doc})
## 推定規模
| 項目 | 値 |
|------|-----|
| コード量 | {XX}行 |
| ファイル数 | {N}件 |
## 対象ファイル
- `{path/to/file1.rs}` (新規 / 変更)
## 実装内容
- [ ] {実装項目1}
- [ ] {実装項目2}
## 呼び出し元(Integration Points)⚠️ 必須
> **重要**: このセクションがないと Phase 6.6(設計書整合性チェック)で統合漏れを検出できません。
### このモジュールを使用する場所
| 呼び出し元ファイル | 使用方法 | 統合Issue |
|------------------|---------|----------|
| `{path/to/caller.rs}` | `{ClassName}::{method}()` を呼び出す | #{issue_number} |
| `{path/to/cli.rs}` | `{command}` コマンドで使用 | #{issue_number} |
### 統合確認コマンド
```bash
# 呼び出し元から実際に参照されているか確認
grep -r '{ModuleName}\|{ClassName}' {caller_path}
# CLIコマンドの動作確認(該当する場合)
{cli_command} --help
{cli_command} {test_args}
この機能を使用する他のIssue
完了条件
依存
### ドキュメント更新Issueテンプレート
```markdown
## 概要
{機能名}の実装完了に伴い、関連ドキュメントを更新する。
## 親Issue
- Epic: #{epic_issue_number}
## 対象ドキュメント
| ファイル | 更新内容 | 必須/任意 |
|----------|---------|----------|
| `README.md` | 機能概要、使用例の追記 | 必須 |
| `CHANGELOG.md` | 変更履歴の追記 | 必須 |
## 更新内容
- [ ] README.md: 機能概要セクションに{機能名}を追加
- [ ] CHANGELOG.md: バージョン・変更内容・日付を追記
## 完了条件
- [ ] 全対象ドキュメントが更新されている
- [ ] マークダウンの構文エラーがない
- [ ] リンク切れがない
## 依存
- 全実装Issue完了後に着手可能
依存関係の記述方法
禁止: ASCII形式
#47 (DB) ─┬─> #48 (Security)
必須: Mermaid形式
```mermaid
flowchart LR
subgraph 共通基盤
DB["#47 DB (80行)"]
SEC["#48 Security (150行)"]
end
subgraph 機能A
A_BE["#49 BE (120行)"]
A_FE["#50 FE (100行)"]
end
DB --> SEC --> A_BE --> A_FE
```
画面設計書の記述ルール
禁止事項
- ASCII art / テキストベースのワイヤーフレーム
- 罫線文字(
┌─┐│└┘等)を使った図表現
- コードブロック内のUI表現
必須事項
- 視覚表現はHTMLモックアップ + スクリーンショット画像のみ
- 状態の説明は表形式または箇条書きで記述
- ワイヤーフレーム定義は Wireframe DSL(YAML形式) で記述
Wireframe DSL スキーマ
詳細リファレンス: {{skill:wireframe-generator}} を参照
画面設計書内に ```yaml wireframe ブロックでYAML定義を記述する。
対応タイプ(概要)
| カテゴリ | タイプ例 |
|---|
| フォーム系 | form, auth, wizard, settings |
| 一覧系 | table, card-grid, gallery, kanban, calendar, timeline |
| 詳細・ダッシュボード | detail, profile, dashboard, stats |
| 複合・オーバーレイ | crud, tabs, layout, modal, drawer, confirm, alert |
| その他 | empty-state, hero, pricing, faq, chat |
生成コマンド
cd .opencode/skill/wireframe-generator/scripts
bun install
bun run generate.ts <markdown-file> [output-dir]
リバースエンジニアリング設計書テンプレート
既存コードから自動生成する設計書の構成。
# {モジュール名} 詳細設計書(リバースエンジニアリング)
## メタ情報
| 項目 | 内容 |
|------|------|
| ドキュメントID | {module-name} |
| 生成日 | {DATE} |
| 対象コード | `{TARGET_PATH}` |
| 言語 | {LANGUAGE} |
> 注意: このドキュメントは既存コードから自動生成されました。
---
## 1. 概要
### 1.1 目的
{モジュールの目的 - docstringから抽出}
### 1.2 スコープ
{主要機能のリスト}
---
## 2. モジュール設計
### 2.1 モジュール構成
{ディレクトリ構造}
### 2.2 モジュール依存関係
{Mermaid図}
---
## 3. データ型定義
### 3.1 列挙型(Enum)
### 3.2 構造体(Struct)
### 3.3 トレイト/インターフェース
---
## 4. コアロジック
### 4.1 主要関数/メソッド
| 関数名 | 説明 | 引数 | 戻り値 |
|--------|------|------|--------|
---
## 5. エラーハンドリング
### 5.1 エラー型
### 5.2 エラー処理方針
---
## 6. テスト方針
### 6.1 既存テスト一覧
| テスト名 | テスト内容(推測) | ファイル |
|---------|------------------|---------|
---
## 7. 未解決事項・推測
| ID | 内容 | 確認方法 |
|----|------|---------|
言語別追加セクション
| 言語 | 追加セクション |
|---|
| Rust | クレート依存、Feature flags、unsafe使用箇所 |
| TypeScript | コンポーネント階層、状態管理、API連携 |
| Python | デコレータ、型ヒント、依存注入 |
| Go | パッケージ構成、goroutine使用、エラーラップ |