yodogawa 2.1.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +140 -94
  2. package/LICENSE +1 -1
  3. package/README.md +362 -263
  4. package/bin/checks/id-trace.js +137 -0
  5. package/bin/checks/links.js +59 -0
  6. package/bin/checks/placeholder.js +132 -0
  7. package/bin/checks/structure.js +127 -0
  8. package/bin/cli.js +51 -67
  9. package/bin/commands/doctor.js +128 -0
  10. package/bin/commands/install.js +58 -0
  11. package/bin/commands/new-task.js +117 -0
  12. package/bin/lib/check-cli.js +19 -0
  13. package/bin/lib/findings.js +31 -0
  14. package/bin/lib/markdown.js +103 -0
  15. package/bin/lib/project-spec.js +138 -0
  16. package/bin/lib/walk-md.js +23 -0
  17. package/package.json +68 -55
  18. package/skills/a-001-setup-doc-structure/SKILL.md +68 -68
  19. package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -75
  20. package/skills/a-002-initialize-project/SKILL.md +145 -118
  21. package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
  22. package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
  23. package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
  24. package/skills/a-002b-define-user-stories/SKILL.md +80 -0
  25. package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
  26. package/skills/a-003-create-scenarios/SKILL.md +97 -96
  27. package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
  28. package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
  29. package/skills/a-004-define-domain-model/SKILL.md +107 -98
  30. package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
  31. package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
  32. package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
  33. package/skills/a-006-review-requirements-domain/SKILL.md +79 -29
  34. package/skills/a-006-review-requirements-domain/examples/review-report-template.md +40 -25
  35. package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +67 -24
  36. package/skills/a-007-define-tech-stack/SKILL.md +99 -99
  37. package/skills/a-008-define-repository-structure/SKILL.md +96 -96
  38. package/skills/a-009-define-screen-design/SKILL.md +103 -103
  39. package/skills/a-010-define-design-system/SKILL.md +130 -130
  40. package/skills/a-011-define-data-model/SKILL.md +118 -118
  41. package/skills/a-012-define-api-spec/SKILL.md +105 -105
  42. package/skills/a-013-define-architecture/SKILL.md +98 -98
  43. package/skills/a-014-define-infrastructure/SKILL.md +118 -110
  44. package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
  45. package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
  46. package/skills/a-015-review-design/SKILL.md +15 -11
  47. package/skills/a-015-review-design/examples/review-report-template.md +17 -29
  48. package/skills/a-015-review-design/reference/consistency-checks.md +5 -3
  49. package/skills/b-001-create-task-directory/SKILL.md +68 -68
  50. package/skills/b-002-create-task-definition/SKILL.md +114 -114
  51. package/skills/b-003-create-task-research/SKILL.md +130 -128
  52. package/skills/b-004-create-task-implementation/SKILL.md +98 -98
  53. package/skills/b-005-review-task/SKILL.md +40 -24
  54. package/skills/b-005-review-task/examples/review-report-template.md +25 -35
  55. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
  56. package/skills/b-005-review-task/reference/consistency-checks.md +70 -11
  57. package/skills/c-001-implement-task/SKILL.md +186 -186
  58. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
  59. package/skills/c-002-update-documentation/SKILL.md +159 -159
  60. package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
  61. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
  62. package/skills/d-001-review-retrospective/SKILL.md +93 -0
  63. package/skills/d-001-review-retrospective/examples/retrospective-report-template.md +50 -0
  64. package/skills/d-001-review-retrospective/reference/friction-point-mapping.md +30 -0
  65. package/templates/LESSONS.md +15 -0
  66. package/templates/project/01-requirements/01-product-brief.md +186 -0
  67. package/templates/project/01-requirements/02-mvp-scope.md +64 -0
  68. package/templates/project/01-requirements/03-parking-lot.md +29 -0
  69. package/templates/project/01-requirements/05-user-stories.md +28 -124
  70. package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
  71. package/templates/project/02-behavior/01-core-scenarios.md +80 -0
  72. package/templates/project/03-domain/01-domain-model.md +120 -339
  73. package/templates/project/03-domain/01-domain-sketch.md +90 -0
  74. package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
  75. package/templates/project/04-design/01-tech-stack.md +367 -367
  76. package/templates/project/04-design/02-repository-structure.md +391 -391
  77. package/templates/project/04-design/03-screen-design.md +596 -596
  78. package/templates/project/04-design/04-design-system.md +261 -261
  79. package/templates/project/04-design/05-data-model.md +211 -211
  80. package/templates/project/04-design/06-api-spec.md +226 -226
  81. package/templates/project/04-design/07-architecture.md +183 -183
  82. package/templates/project/04-design/08-infrastructure.md +180 -180
  83. package/templates/project/AI_CONTEXT.md +55 -0
  84. package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
  85. package/templates/tasks/task-template/a-definition.md +143 -143
  86. package/templates/tasks/task-template/b-research.md +185 -185
  87. package/templates/tasks/task-template/c-implementation.md +200 -200
  88. package/templates/project/01-requirements/01-system-overview.md +0 -49
  89. package/templates/project/01-requirements/03-features-planned.md +0 -75
@@ -1,226 +1,226 @@
1
- # API仕様
2
-
3
- <!--
4
- 何を書くか: 認証方式、エンドポイント一覧、共通レスポンス形式
5
-
6
- 目的:
7
- - フロントエンド・バックエンド間の基本契約を明確化
8
- - API設計の全体像を把握
9
- - 開発者間の認識統一
10
-
11
- 重要性:
12
- - 高レベルなAPI設計の記録
13
- - 詳細な仕様(リクエスト/レスポンスのスキーマ)はOpenAPI/Swaggerやコードで管理
14
-
15
- 記載のポイント:
16
- - 認証方式の基本情報
17
- - エンドポイント一覧(メソッド、パス、説明、認証要否)
18
- - 共通のレスポンス形式(成功/エラー)
19
-
20
- 更新頻度:
21
- - プロジェクト初期に基本設計を作成
22
- - エンドポイント追加・削除時に更新
23
-
24
- **詳細な実装仕様の管理**:
25
- - リクエスト/レスポンスの詳細なJSONスキーマ → OpenAPI/Swagger
26
- - バリデーションルール → コード(バリデーター)
27
- - エラーコード詳細 → コード(エラーハンドラー)
28
- - ページネーション、レート制限 → コードと運用ドキュメント
29
- -->
30
-
31
- ---
32
-
33
- ## 認証・認可
34
-
35
- <!--
36
- API のセキュリティ方式の基本情報
37
-
38
- よくある認証方式:
39
- - JWT (JSON Web Token): ステートレス、マイクロサービス向き
40
- - OAuth 2.0: サードパーティ認証、権限委譲
41
- - API Key: シンプル、内部API向き
42
- - Session Cookie: ステートフル、Webアプリ向き
43
-
44
- 記載すべき内容:
45
- - 認証方法(JWT, OAuth 2.0, API Key など)
46
- - トークンの基本的な有効期限
47
- - 認証フローの概要
48
- - 権限スコープの種類
49
- -->
50
-
51
- | 項目 | 内容 |
52
- |------|------|
53
- | **認証方法** | <!-- 例: JWT Bearer Token --> |
54
- | **トークン有効期限** | <!-- 例: アクセストークン: 1時間、リフレッシュトークン: 30日 --> |
55
- | **トークン形式** | <!-- 例: Authorization: Bearer {token} --> |
56
- | **権限スコープ** | <!-- 例: read, write, admin --> |
57
-
58
- **認証フロー概要**:
59
- <!-- 例:
60
- 1. POST /auth/login でログイン
61
- 2. アクセストークンとリフレッシュトークンを取得
62
- 3. 以降のリクエストで Authorization: Bearer {token} ヘッダーに含める
63
- 4. トークン期限切れ時は POST /auth/refresh でリフレッシュ
64
- -->
65
-
66
- ---
67
-
68
- ## エンドポイント一覧
69
-
70
- <!--
71
- すべてのAPIエンドポイントを一覧化
72
-
73
- テーブル構成:
74
- 【メソッド】
75
- - HTTP メソッド(GET, POST, PUT, PATCH, DELETE)
76
- - RESTful な使い分けを意識
77
-
78
- 【パス】
79
- - エンドポイントの URL パス
80
- - パスパラメータは {id}, {userId} のように記載
81
- - 例: /api/users/{id}, /api/orders/{orderId}/items
82
-
83
- 【説明】
84
- - エンドポイントの目的を1行で記載
85
- - 例: 「ユーザー一覧を取得」「注文を作成」
86
-
87
- 【認証】
88
- - 必要/不要/オプション
89
- - 必要な権限スコープがあれば記載(例: admin, write)
90
-
91
- 【ステータス】
92
- - 実装済み/未実装/非推奨(Deprecated)
93
- - バージョニングで廃止予定のエンドポイントを記録
94
-
95
- 記載のベストプラクティス:
96
- - リソースごとにグループ化(ユーザー関連、注文関連など)
97
- - CRUD 操作を揃える(GET一覧, GET詳細, POST作成, PUT更新, DELETE削除)
98
- - ページネーションやフィルタリングのパラメータを記載
99
- - 非推奨(Deprecated)エンドポイントも記録し、移行先を明記
100
- -->
101
-
102
- ### ユーザー管理
103
-
104
- | メソッド | パス | 説明 | 認証 | ステータス |
105
- |---------|------|------|------|-----------|
106
- | <!-- GET --> | <!-- /api/users --> | <!-- ユーザー一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
107
- | <!-- GET --> | <!-- /api/users/{id} --> | <!-- ユーザー詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
108
- | <!-- POST --> | <!-- /api/users --> | <!-- ユーザー作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
109
- | <!-- PUT --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(完全置換) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
110
- | <!-- PATCH --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(部分更新) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
111
- | <!-- DELETE --> | <!-- /api/users/{id} --> | <!-- ユーザー削除 --> | <!-- 必要(admin) --> | <!-- 実装済み --> |
112
-
113
- ### 注文管理
114
-
115
- | メソッド | パス | 説明 | 認証 | ステータス |
116
- |---------|------|------|------|-----------|
117
- | <!-- GET --> | <!-- /api/orders --> | <!-- 注文一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
118
- | <!-- GET --> | <!-- /api/orders/{id} --> | <!-- 注文詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
119
- | <!-- POST --> | <!-- /api/orders --> | <!-- 注文作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
120
- | <!-- POST --> | <!-- /api/orders/{id}/cancel --> | <!-- 注文キャンセル --> | <!-- 必要(write) --> | <!-- 実装済み --> |
121
-
122
- ### 認証
123
-
124
- | メソッド | パス | 説明 | 認証 | ステータス |
125
- |---------|------|------|------|-----------|
126
- | <!-- POST --> | <!-- /api/auth/login --> | <!-- ログイン --> | <!-- 不要 --> | <!-- 実装済み --> |
127
- | <!-- POST --> | <!-- /api/auth/logout --> | <!-- ログアウト --> | <!-- 必要 --> | <!-- 実装済み --> |
128
- | <!-- POST --> | <!-- /api/auth/refresh --> | <!-- トークンリフレッシュ --> | <!-- 不要(リフレッシュトークン必要) --> | <!-- 実装済み --> |
129
-
130
- ---
131
-
132
- ## 共通レスポンス形式
133
-
134
- <!--
135
- 全エンドポイントで統一するレスポンス形式
136
-
137
- 記載すべき内容:
138
- - 成功時のレスポンス構造
139
- - エラー時のレスポンス構造
140
- - 主要なHTTPステータスコード
141
-
142
- 詳細な仕様(リクエスト/レスポンスの詳細なJSONスキーマ、
143
- バリデーションルール、エラーコード定義)は OpenAPI/Swagger で管理します。
144
- -->
145
-
146
- ### 成功レスポンス
147
-
148
- **基本構造**:
149
-
150
- ```json
151
- {
152
- "data": { /* リソースデータ */ },
153
- "meta": { /* メタデータ(ページネーション情報など) */ }
154
- }
155
- ```
156
-
157
- **単一リソース取得の例**:
158
-
159
- ```json
160
- {
161
- "data": {
162
- "id": 1,
163
- "email": "user@example.com",
164
- "name": "User Name",
165
- "created_at": "2024-01-01T00:00:00Z"
166
- }
167
- }
168
- ```
169
-
170
- **リスト取得の例**:
171
-
172
- ```json
173
- {
174
- "data": [
175
- { "id": 1, "name": "User 1" },
176
- { "id": 2, "name": "User 2" }
177
- ],
178
- "meta": {
179
- "total": 100,
180
- "limit": 20,
181
- "offset": 0
182
- }
183
- }
184
- ```
185
-
186
- ### エラーレスポンス
187
-
188
- **基本構造**:
189
-
190
- ```json
191
- {
192
- "error": {
193
- "code": "ERROR_CODE",
194
- "message": "Human-readable error message"
195
- }
196
- }
197
- ```
198
-
199
- **バリデーションエラーの例**:
200
-
201
- ```json
202
- {
203
- "error": {
204
- "code": "VALIDATION_ERROR",
205
- "message": "Validation failed",
206
- "details": [
207
- { "field": "email", "message": "Invalid email format" }
208
- ]
209
- }
210
- }
211
- ```
212
-
213
- ### 主要なHTTPステータスコード
214
-
215
- | ステータスコード | 説明 | 使用場面 |
216
- |----------------|------|---------|
217
- | **200 OK** | 成功 | GET, PUT, PATCH, DELETE の成功 |
218
- | **201 Created** | リソース作成成功 | POST でのリソース作成成功 |
219
- | **204 No Content** | 成功(レスポンスボディなし) | DELETE 成功時など |
220
- | **400 Bad Request** | 不正なリクエスト | バリデーションエラー |
221
- | **401 Unauthorized** | 認証エラー | トークン不正・期限切れ |
222
- | **403 Forbidden** | 権限不足 | 認証済みだが権限不足 |
223
- | **404 Not Found** | リソースが存在しない | 指定したIDのリソースが見つからない |
224
- | **409 Conflict** | リソースの競合 | 既に存在するメールアドレスなど |
225
- | **429 Too Many Requests** | レート制限超過 | リクエスト数が上限を超えた |
226
- | **500 Internal Server Error** | サーバーエラー | サーバー内部エラー |
1
+ # API仕様
2
+
3
+ <!--
4
+ 何を書くか: 認証方式、エンドポイント一覧、共通レスポンス形式
5
+
6
+ 目的:
7
+ - フロントエンド・バックエンド間の基本契約を明確化
8
+ - API設計の全体像を把握
9
+ - 開発者間の認識統一
10
+
11
+ 重要性:
12
+ - 高レベルなAPI設計の記録
13
+ - 詳細な仕様(リクエスト/レスポンスのスキーマ)はOpenAPI/Swaggerやコードで管理
14
+
15
+ 記載のポイント:
16
+ - 認証方式の基本情報
17
+ - エンドポイント一覧(メソッド、パス、説明、認証要否)
18
+ - 共通のレスポンス形式(成功/エラー)
19
+
20
+ 更新頻度:
21
+ - プロジェクト初期に基本設計を作成
22
+ - エンドポイント追加・削除時に更新
23
+
24
+ **詳細な実装仕様の管理**:
25
+ - リクエスト/レスポンスの詳細なJSONスキーマ → OpenAPI/Swagger
26
+ - バリデーションルール → コード(バリデーター)
27
+ - エラーコード詳細 → コード(エラーハンドラー)
28
+ - ページネーション、レート制限 → コードと運用ドキュメント
29
+ -->
30
+
31
+ ---
32
+
33
+ ## 認証・認可
34
+
35
+ <!--
36
+ API のセキュリティ方式の基本情報
37
+
38
+ よくある認証方式:
39
+ - JWT (JSON Web Token): ステートレス、マイクロサービス向き
40
+ - OAuth 2.0: サードパーティ認証、権限委譲
41
+ - API Key: シンプル、内部API向き
42
+ - Session Cookie: ステートフル、Webアプリ向き
43
+
44
+ 記載すべき内容:
45
+ - 認証方法(JWT, OAuth 2.0, API Key など)
46
+ - トークンの基本的な有効期限
47
+ - 認証フローの概要
48
+ - 権限スコープの種類
49
+ -->
50
+
51
+ | 項目 | 内容 |
52
+ |------|------|
53
+ | **認証方法** | <!-- 例: JWT Bearer Token --> |
54
+ | **トークン有効期限** | <!-- 例: アクセストークン: 1時間、リフレッシュトークン: 30日 --> |
55
+ | **トークン形式** | <!-- 例: Authorization: Bearer {token} --> |
56
+ | **権限スコープ** | <!-- 例: read, write, admin --> |
57
+
58
+ **認証フロー概要**:
59
+ <!-- 例:
60
+ 1. POST /auth/login でログイン
61
+ 2. アクセストークンとリフレッシュトークンを取得
62
+ 3. 以降のリクエストで Authorization: Bearer {token} ヘッダーに含める
63
+ 4. トークン期限切れ時は POST /auth/refresh でリフレッシュ
64
+ -->
65
+
66
+ ---
67
+
68
+ ## エンドポイント一覧
69
+
70
+ <!--
71
+ すべてのAPIエンドポイントを一覧化
72
+
73
+ テーブル構成:
74
+ 【メソッド】
75
+ - HTTP メソッド(GET, POST, PUT, PATCH, DELETE)
76
+ - RESTful な使い分けを意識
77
+
78
+ 【パス】
79
+ - エンドポイントの URL パス
80
+ - パスパラメータは {id}, {userId} のように記載
81
+ - 例: /api/users/{id}, /api/orders/{orderId}/items
82
+
83
+ 【説明】
84
+ - エンドポイントの目的を1行で記載
85
+ - 例: 「ユーザー一覧を取得」「注文を作成」
86
+
87
+ 【認証】
88
+ - 必要/不要/オプション
89
+ - 必要な権限スコープがあれば記載(例: admin, write)
90
+
91
+ 【ステータス】
92
+ - 実装済み/未実装/非推奨(Deprecated)
93
+ - バージョニングで廃止予定のエンドポイントを記録
94
+
95
+ 記載のベストプラクティス:
96
+ - リソースごとにグループ化(ユーザー関連、注文関連など)
97
+ - CRUD 操作を揃える(GET一覧, GET詳細, POST作成, PUT更新, DELETE削除)
98
+ - ページネーションやフィルタリングのパラメータを記載
99
+ - 非推奨(Deprecated)エンドポイントも記録し、移行先を明記
100
+ -->
101
+
102
+ ### ユーザー管理
103
+
104
+ | メソッド | パス | 説明 | 認証 | ステータス |
105
+ |---------|------|------|------|-----------|
106
+ | <!-- GET --> | <!-- /api/users --> | <!-- ユーザー一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
107
+ | <!-- GET --> | <!-- /api/users/{id} --> | <!-- ユーザー詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
108
+ | <!-- POST --> | <!-- /api/users --> | <!-- ユーザー作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
109
+ | <!-- PUT --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(完全置換) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
110
+ | <!-- PATCH --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(部分更新) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
111
+ | <!-- DELETE --> | <!-- /api/users/{id} --> | <!-- ユーザー削除 --> | <!-- 必要(admin) --> | <!-- 実装済み --> |
112
+
113
+ ### 注文管理
114
+
115
+ | メソッド | パス | 説明 | 認証 | ステータス |
116
+ |---------|------|------|------|-----------|
117
+ | <!-- GET --> | <!-- /api/orders --> | <!-- 注文一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
118
+ | <!-- GET --> | <!-- /api/orders/{id} --> | <!-- 注文詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
119
+ | <!-- POST --> | <!-- /api/orders --> | <!-- 注文作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
120
+ | <!-- POST --> | <!-- /api/orders/{id}/cancel --> | <!-- 注文キャンセル --> | <!-- 必要(write) --> | <!-- 実装済み --> |
121
+
122
+ ### 認証
123
+
124
+ | メソッド | パス | 説明 | 認証 | ステータス |
125
+ |---------|------|------|------|-----------|
126
+ | <!-- POST --> | <!-- /api/auth/login --> | <!-- ログイン --> | <!-- 不要 --> | <!-- 実装済み --> |
127
+ | <!-- POST --> | <!-- /api/auth/logout --> | <!-- ログアウト --> | <!-- 必要 --> | <!-- 実装済み --> |
128
+ | <!-- POST --> | <!-- /api/auth/refresh --> | <!-- トークンリフレッシュ --> | <!-- 不要(リフレッシュトークン必要) --> | <!-- 実装済み --> |
129
+
130
+ ---
131
+
132
+ ## 共通レスポンス形式
133
+
134
+ <!--
135
+ 全エンドポイントで統一するレスポンス形式
136
+
137
+ 記載すべき内容:
138
+ - 成功時のレスポンス構造
139
+ - エラー時のレスポンス構造
140
+ - 主要なHTTPステータスコード
141
+
142
+ 詳細な仕様(リクエスト/レスポンスの詳細なJSONスキーマ、
143
+ バリデーションルール、エラーコード定義)は OpenAPI/Swagger で管理します。
144
+ -->
145
+
146
+ ### 成功レスポンス
147
+
148
+ **基本構造**:
149
+
150
+ ```json
151
+ {
152
+ "data": { /* リソースデータ */ },
153
+ "meta": { /* メタデータ(ページネーション情報など) */ }
154
+ }
155
+ ```
156
+
157
+ **単一リソース取得の例**:
158
+
159
+ ```json
160
+ {
161
+ "data": {
162
+ "id": 1,
163
+ "email": "user@example.com",
164
+ "name": "User Name",
165
+ "created_at": "2024-01-01T00:00:00Z"
166
+ }
167
+ }
168
+ ```
169
+
170
+ **リスト取得の例**:
171
+
172
+ ```json
173
+ {
174
+ "data": [
175
+ { "id": 1, "name": "User 1" },
176
+ { "id": 2, "name": "User 2" }
177
+ ],
178
+ "meta": {
179
+ "total": 100,
180
+ "limit": 20,
181
+ "offset": 0
182
+ }
183
+ }
184
+ ```
185
+
186
+ ### エラーレスポンス
187
+
188
+ **基本構造**:
189
+
190
+ ```json
191
+ {
192
+ "error": {
193
+ "code": "ERROR_CODE",
194
+ "message": "Human-readable error message"
195
+ }
196
+ }
197
+ ```
198
+
199
+ **バリデーションエラーの例**:
200
+
201
+ ```json
202
+ {
203
+ "error": {
204
+ "code": "VALIDATION_ERROR",
205
+ "message": "Validation failed",
206
+ "details": [
207
+ { "field": "email", "message": "Invalid email format" }
208
+ ]
209
+ }
210
+ }
211
+ ```
212
+
213
+ ### 主要なHTTPステータスコード
214
+
215
+ | ステータスコード | 説明 | 使用場面 |
216
+ |----------------|------|---------|
217
+ | **200 OK** | 成功 | GET, PUT, PATCH, DELETE の成功 |
218
+ | **201 Created** | リソース作成成功 | POST でのリソース作成成功 |
219
+ | **204 No Content** | 成功(レスポンスボディなし) | DELETE 成功時など |
220
+ | **400 Bad Request** | 不正なリクエスト | バリデーションエラー |
221
+ | **401 Unauthorized** | 認証エラー | トークン不正・期限切れ |
222
+ | **403 Forbidden** | 権限不足 | 認証済みだが権限不足 |
223
+ | **404 Not Found** | リソースが存在しない | 指定したIDのリソースが見つからない |
224
+ | **409 Conflict** | リソースの競合 | 既に存在するメールアドレスなど |
225
+ | **429 Too Many Requests** | レート制限超過 | リクエスト数が上限を超えた |
226
+ | **500 Internal Server Error** | サーバーエラー | サーバー内部エラー |