yodogawa 1.0.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 (61) hide show
  1. package/.windsurf/templates/documentation-rules.md +143 -0
  2. package/.windsurf/templates/project/01-requirements/01-system-overview.md +49 -0
  3. package/.windsurf/templates/project/01-requirements/02-features-implemented.md +73 -0
  4. package/.windsurf/templates/project/01-requirements/03-features-planned.md +75 -0
  5. package/.windsurf/templates/project/01-requirements/04-non-functional-requirements.md +115 -0
  6. package/.windsurf/templates/project/01-requirements/05-user-stories.md +124 -0
  7. package/.windsurf/templates/project/02-behavior/01-scenarios.md +406 -0
  8. package/.windsurf/templates/project/03-domain/01-domain-model.md +338 -0
  9. package/.windsurf/templates/project/03-domain/02-ubiquitous-language.md +153 -0
  10. package/.windsurf/templates/project/04-design/01-tech-stack.md +360 -0
  11. package/.windsurf/templates/project/04-design/02-repository-structure.md +390 -0
  12. package/.windsurf/templates/project/04-design/03-screen-design.md +586 -0
  13. package/.windsurf/templates/project/04-design/04-data-model.md +211 -0
  14. package/.windsurf/templates/project/04-design/05-api-spec.md +221 -0
  15. package/.windsurf/templates/project/04-design/06-architecture.md +183 -0
  16. package/.windsurf/templates/project/04-design/07-infrastructure.md +180 -0
  17. package/.windsurf/templates/tasks/task-template/a-definition.md +143 -0
  18. package/.windsurf/templates/tasks/task-template/b-research.md +185 -0
  19. package/.windsurf/templates/tasks/task-template/c-implementation.md +197 -0
  20. package/.windsurf/workflows/a-001-SetupDocStructure.md +165 -0
  21. package/.windsurf/workflows/a-002-InitializeProject.md +229 -0
  22. package/.windsurf/workflows/a-003-CreateScenarios.md +130 -0
  23. package/.windsurf/workflows/a-004-DefineDomainModel.md +133 -0
  24. package/.windsurf/workflows/a-005-CreateDomainDiagram.md +114 -0
  25. package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +132 -0
  26. package/.windsurf/workflows/a-007-DefineTechStack.md +121 -0
  27. package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +118 -0
  28. package/.windsurf/workflows/a-009-DefineScreenDesign.md +121 -0
  29. package/.windsurf/workflows/a-010-DefineDataModel.md +125 -0
  30. package/.windsurf/workflows/a-011-DefineAPISpec.md +123 -0
  31. package/.windsurf/workflows/a-012-DefineArchitecture.md +119 -0
  32. package/.windsurf/workflows/a-013-DefineInfrastructure.md +120 -0
  33. package/.windsurf/workflows/a-014-ReviewDesign.md +122 -0
  34. package/.windsurf/workflows/b-001-CreateTaskDirectory.md +71 -0
  35. package/.windsurf/workflows/b-002-CreateTaskDefinition.md +165 -0
  36. package/.windsurf/workflows/b-003-CreateTaskResearch.md +412 -0
  37. package/.windsurf/workflows/b-004-CreateTaskImplementation.md +97 -0
  38. package/.windsurf/workflows/b-005-ReviewTask.md +312 -0
  39. package/.windsurf/workflows/c-001-ImplementTask.md +493 -0
  40. package/.windsurf/workflows/c-002-UpdateDocumentation.md +797 -0
  41. package/.windsurf/workflows/x-Accessibility-Check.md +469 -0
  42. package/.windsurf/workflows/x-Bundle-Optimize.md +386 -0
  43. package/.windsurf/workflows/x-CI-FixFailure.md +636 -0
  44. package/.windsurf/workflows/x-CI-Setup.md +641 -0
  45. package/.windsurf/workflows/x-Code-Refactor.md +71 -0
  46. package/.windsurf/workflows/x-Code-ResearchAndReview.md +78 -0
  47. package/.windsurf/workflows/x-Component-Create.md +359 -0
  48. package/.windsurf/workflows/x-Context-CatchUp.md +63 -0
  49. package/.windsurf/workflows/x-Database-Seed.md +300 -0
  50. package/.windsurf/workflows/x-Dependencies-Update.md +315 -0
  51. package/.windsurf/workflows/x-DevEnvironment-Setup.md +437 -0
  52. package/.windsurf/workflows/x-Logging-Add.md +682 -0
  53. package/.windsurf/workflows/x-Migration-Create.md +354 -0
  54. package/.windsurf/workflows/x-Problem-RootCauseAnalysis.md +65 -0
  55. package/.windsurf/workflows/x-Repository-Push.md +375 -0
  56. package/.windsurf/workflows/x-Repository-PushToGithub.md +72 -0
  57. package/.windsurf/workflows/x-Requirements-Clarify.md +61 -0
  58. package/.windsurf/workflows/z-CreateWorkflow.md +77 -0
  59. package/README.md +280 -0
  60. package/bin/cli.js +74 -0
  61. package/package.json +28 -0
@@ -0,0 +1,586 @@
1
+ # 画面設計
2
+
3
+ <!--
4
+ 何を書くか: 画面一覧、画面の役割、画面遷移フロー
5
+
6
+ 目的:
7
+ - 画面の全体像を把握
8
+ - 画面ごとの責務を明確化
9
+ - ユーザーの導線を可視化
10
+ - 画面追加・削除の記録
11
+
12
+ 重要性:
13
+ - 画面構成の全体像を共有
14
+ - UX設計の基盤
15
+ - 画面間の整合性確認
16
+ - 実装前の手戻り防止
17
+
18
+ 記載のポイント:
19
+ - 画面IDで一意に識別
20
+ - 画面の目的を簡潔に記載
21
+ - Mermaid図で遷移フローを可視化
22
+ - 詳細な実装仕様はコードとStorybookに委ねる
23
+
24
+ 更新頻度:
25
+ - プロジェクト初期に画面設計時
26
+ - 画面追加・削除時に更新
27
+ - 画面遷移変更時に更新
28
+
29
+ **単一情報源(Single Source of Truth)の原則**:
30
+ - このドキュメント: 画面構成と遷移フロー(高レベル、変更頻度低)
31
+ - コード: UIコンポーネント、フォーム仕様、バリデーション(詳細、変更頻度高)
32
+ - Storybook: コンポーネントカタログ、Props仕様
33
+ - Figma: デザインモック、ビジュアルデザイン
34
+ -->
35
+
36
+ ---
37
+
38
+ ## 画面一覧
39
+
40
+ <!--
41
+ システム内の全画面を一覧化
42
+
43
+ **画面は動的**: 現代のWebアプリケーションでは、画面表示はユーザーデータやシステム状態に
44
+ 強く依存します。同じ画面でも、データの有無や権限により全く異なる見た目・振る舞いになります。
45
+
46
+ テーブル構成:
47
+ 【画面ID】
48
+ - 一意の識別子(例: SCR-001, SCR-002)
49
+ - 実装ファイル名やURLパスと紐付けると管理しやすい
50
+
51
+ 【画面名】
52
+ - ユーザーに表示される画面の名前
53
+ - 日本語の正式名称
54
+
55
+ 【役割・目的】
56
+ - その画面が存在する理由
57
+ - ユーザーがこの画面で何を達成するか
58
+ - 簡潔に1-2文で記載
59
+
60
+ 【アクセス権限】
61
+ - 誰がこの画面にアクセスできるか
62
+ - 例: 全ユーザー、認証済みユーザー、管理者のみ
63
+
64
+ 【考慮すべき状態・Empty State】
65
+ - 画面がとりうる主要な状態バリエーションを記載
66
+ - 特にEmpty State(データがない状態)は開発時に忘れられがちなので明示
67
+ - 各状態での表示内容やCTA(Call To Action)を簡潔に記載
68
+
69
+ よくある状態パターン:
70
+ 1. 初回訪問(First Use)
71
+ - まだデータが作成されていない
72
+ - CTA: 「最初の〜を作成」ボタン、チュートリアル
73
+
74
+ 2. 通常状態(Normal)
75
+ - データが存在する通常の状態
76
+ - リスト表示、データ表示
77
+
78
+ 3. 検索・フィルタ結果なし(No Results)
79
+ - 検索条件やフィルタに一致するデータがない
80
+ - CTA: 「検索条件をクリア」リンク、「フィルタをリセット」
81
+
82
+ 4. エラー状態(Error)
83
+ - データ読み込み失敗、ネットワークエラー
84
+ - CTA: 「再試行」ボタン
85
+
86
+ 5. ローディング状態(Loading)
87
+ - データ取得中
88
+ - スケルトンスクリーン、スピナー
89
+
90
+ 記載のポイント:
91
+ - 主要な状態のみ記載(詳細はコードに委ねる)
92
+ - Empty StateのCTAは必ず明記(ユーザーの次のアクションを明確に)
93
+ - メッセージ文言やイラストの詳細は不要(コード・Figmaに委ねる)
94
+
95
+ 【備考】
96
+ - 特記事項(オプション)
97
+ - デザインモックへのリンク
98
+ - 実装状況(実装済み/未実装)
99
+
100
+ 記載のベストプラクティス:
101
+ - 全画面を網羅(エラー画面、管理画面も含む)
102
+ - 役割は簡潔に(詳細はコードに委ねる)
103
+ - カテゴリごとにグループ化すると見やすい
104
+ - Empty Stateを意識的にチェック(忘れがちなので)
105
+
106
+ よくある画面分類:
107
+ - 認証系: ログイン、サインアップ、パスワードリセット
108
+ - メイン機能: ダッシュボード、一覧、詳細、作成、編集
109
+ - 設定系: ユーザー設定、アカウント設定
110
+ - エラー系: 404, 500, 権限エラー
111
+ - 管理系: 管理ダッシュボード、ユーザー管理
112
+ -->
113
+
114
+ ### 認証関連
115
+
116
+ | 画面ID | 画面名 | 役割・目的 | アクセス権限 | 考慮すべき状態・Empty State |
117
+ |--------|--------|-----------|--------------|---------------------------|
118
+ | <!-- SCR-001 --> | <!-- ログイン画面 --> | <!-- ユーザー認証を行い、システムにアクセスできるようにする --> | <!-- 未認証ユーザー --> | <!-- 通常状態:フォーム表示<br/>エラー状態:認証失敗メッセージ、「再試行」 --> |
119
+ | <!-- SCR-002 --> | <!-- サインアップ画面 --> | <!-- 新規ユーザーがアカウントを作成する --> | <!-- 未認証ユーザー --> | <!-- 通常状態:フォーム表示<br/>エラー状態:バリデーションエラー、既存ユーザーエラー --> |
120
+ | <!-- SCR-003 --> | <!-- パスワードリセット画面 --> | <!-- パスワードを忘れたユーザーがパスワードを再設定する --> | <!-- 未認証ユーザー --> | <!-- 通常状態:メール送信フォーム<br/>成功状態:「メールを送信しました」確認画面 --> |
121
+
122
+ ### メイン機能
123
+
124
+ | 画面ID | 画面名 | 役割・目的 | アクセス権限 | 考慮すべき状態・Empty State |
125
+ |--------|--------|-----------|--------------|---------------------------|
126
+ | <!-- SCR-010 --> | <!-- ダッシュボード --> | <!-- システム全体の概要と主要メトリクスを表示し、各機能へのエントリーポイントを提供 --> | <!-- 認証済みユーザー --> | <!-- 初回訪問:データなし、「最初のプロジェクトを作成」CTA<br/>通常状態:メトリクス・グラフ表示<br/>ローディング状態:スケルトンスクリーン --> |
127
+ | <!-- SCR-011 --> | <!-- ユーザー一覧 --> | <!-- 登録ユーザーを一覧表示し、検索・フィルタリング機能を提供 --> | <!-- 管理者 --> | <!-- 初回訪問:ユーザーなし、「ユーザーを招待」CTA<br/>検索結果なし:「検索条件をクリア」リンク<br/>フィルタ結果なし:「フィルタをリセット」リンク<br/>通常状態:ユーザーリスト表示 --> |
128
+ | <!-- SCR-012 --> | <!-- ユーザー詳細 --> | <!-- 特定ユーザーの情報を表示・編集する --> | <!-- 本人または管理者 --> | <!-- 通常状態:ユーザー情報表示<br/>エラー状態:ユーザー不存在(削除済み)、「ユーザー一覧に戻る」CTA<br/>ローディング状態:スケルトンスクリーン --> |
129
+ | <!-- SCR-013 --> | <!-- ユーザー作成 --> | <!-- 新しいユーザーを作成する --> | <!-- 管理者 --> | <!-- 通常状態:作成フォーム表示<br/>エラー状態:バリデーションエラー、重複エラー --> |
130
+
131
+ ### 設定関連
132
+
133
+ | 画面ID | 画面名 | 役割・目的 | アクセス権限 | 考慮すべき状態・Empty State |
134
+ |--------|--------|-----------|--------------|---------------------------|
135
+ | <!-- SCR-020 --> | <!-- アカウント設定 --> | <!-- ユーザーが自分のアカウント情報を編集する --> | <!-- 認証済みユーザー --> | <!-- 通常状態:自分の情報が常に存在<br/>ローディング状態:スケルトンスクリーン<br/>エラー状態:保存失敗、「再試行」 --> |
136
+ | <!-- SCR-021 --> | <!-- システム設定 --> | <!-- システム全体の設定を管理する --> | <!-- 管理者 --> | <!-- 通常状態:設定値表示<br/>初回訪問:デフォルト値表示、「設定を保存」CTA<br/>エラー状態:保存失敗 --> |
137
+
138
+ ### エラー画面
139
+
140
+ | 画面ID | 画面名 | 役割・目的 | アクセス権限 | 考慮すべき状態・Empty State |
141
+ |--------|--------|-----------|--------------|---------------------------|
142
+ | <!-- SCR-900 --> | <!-- 404 Not Found --> | <!-- 存在しないページへのアクセス時にエラーを表示し、トップページへの導線を提供 --> | <!-- 全ユーザー --> | <!-- エラー状態:常にこの状態<br/>CTA:「トップページに戻る」「検索」 --> |
143
+ | <!-- SCR-901 --> | <!-- 500 Server Error --> | <!-- サーバーエラー発生時にエラーを表示 --> | <!-- 全ユーザー --> | <!-- エラー状態:常にこの状態<br/>CTA:「再試行」「サポートに連絡」 --> |
144
+ | <!-- SCR-902 --> | <!-- 403 Forbidden --> | <!-- 権限不足でアクセスできない場合にエラーを表示 --> | <!-- 全ユーザー --> | <!-- エラー状態:常にこの状態<br/>CTA:「ログイン」「ダッシュボードに戻る」 --> |
145
+
146
+ ---
147
+
148
+ ## 画面遷移図
149
+
150
+ <!--
151
+ 画面間の遷移フローをMermaid図で可視化
152
+
153
+ 目的:
154
+ - ユーザーの導線を明確化
155
+ - 画面間の関係性を理解
156
+ - デッドエンド(戻れない画面)の検出
157
+ - 認証フローの可視化
158
+
159
+ 記載のベストプラクティス:
160
+ 1. 主要な遷移フローを記載(全ての遷移を書くと複雑すぎる)
161
+ 2. 認証前/後でグループ化
162
+ 3. 遷移条件をラベルで記載(例: ログイン成功、エラー時)
163
+ 4. 複雑な場合は複数の図に分割
164
+
165
+ Mermaidの記法:
166
+ - flowchart TD: 上から下へのフロー
167
+ - flowchart LR: 左から右へのフロー
168
+ - A[画面名] --> B[画面名]: 遷移
169
+ - A --> |条件| B: 条件付き遷移
170
+
171
+ よくあるパターン:
172
+ - 未認証 → ログイン → ダッシュボード → 各機能画面
173
+ - エラー画面 → トップページ
174
+ - 管理画面は別フローで記載
175
+ -->
176
+
177
+ ```mermaid
178
+ flowchart TD
179
+ %% 認証前
180
+ Landing[トップページ] --> Login[ログイン画面]
181
+ Landing --> Signup[サインアップ画面]
182
+
183
+ Login --> |認証成功| Dashboard[ダッシュボード]
184
+ Login --> |認証失敗| Login
185
+ Login --> PasswordReset[パスワードリセット]
186
+
187
+ Signup --> |登録成功| Login
188
+
189
+ %% 認証後 - メイン機能
190
+ Dashboard --> UserList[ユーザー一覧]
191
+ Dashboard --> Settings[アカウント設定]
192
+
193
+ UserList --> UserDetail[ユーザー詳細]
194
+ UserList --> UserCreate[ユーザー作成]
195
+
196
+ UserDetail --> UserList
197
+ UserCreate --> UserList
198
+
199
+ %% 設定
200
+ Settings --> Dashboard
201
+
202
+ %% エラー処理
203
+ Landing --> |存在しないパス| Error404[404エラー]
204
+ Error404 --> Landing
205
+
206
+ %% ログアウト
207
+ Dashboard --> |ログアウト| Login
208
+ UserList --> |ログアウト| Login
209
+ Settings --> |ログアウト| Login
210
+ ```
211
+
212
+ **補足**:
213
+ <!-- 例:
214
+ - ログイン画面からのOAuth認証フローは省略
215
+ - 管理者専用画面の遷移は「管理機能遷移図」を参照
216
+ - モバイル版は一部遷移が異なる(タブナビゲーション)
217
+ - 詳細な条件分岐はコードを参照
218
+ -->
219
+
220
+ ---
221
+
222
+ ## 画面カテゴリ・役割
223
+
224
+ <!--
225
+ 画面をカテゴリごとに整理し、各カテゴリの役割を明確化(オプション)
226
+
227
+ このセクションは画面数が多い場合に有用。
228
+ 画面一覧テーブルで十分な場合は省略可能。
229
+
230
+ 記載すべき内容:
231
+ - カテゴリ名(認証、メイン機能、管理、設定など)
232
+ - カテゴリの役割・責務
233
+ - 含まれる画面の一覧
234
+ - 特記事項
235
+ -->
236
+
237
+ ### 認証関連画面
238
+
239
+ **役割**: ユーザーの認証・認可を管理し、システムへの安全なアクセスを提供
240
+
241
+ **含まれる画面**:
242
+ - ログイン画面(SCR-001)
243
+ - サインアップ画面(SCR-002)
244
+ - パスワードリセット画面(SCR-003)
245
+
246
+ **特記事項**:
247
+ <!-- 例:
248
+ - OAuth 2.0(Google, GitHub)による認証も対応
249
+ - 二段階認証は今後実装予定
250
+ -->
251
+
252
+ ---
253
+
254
+ ### メイン機能画面
255
+
256
+ **役割**: システムの主要な業務機能を提供
257
+
258
+ **含まれる画面**:
259
+ - ダッシュボード(SCR-010)
260
+ - ユーザー一覧(SCR-011)
261
+ - ユーザー詳細(SCR-012)
262
+ - ユーザー作成(SCR-013)
263
+
264
+ **特記事項**:
265
+ <!-- 例:
266
+ - CRUD操作の標準パターンを採用
267
+ - 一覧画面は検索・フィルタ・ソート・ページネーション機能を標準装備
268
+ -->
269
+
270
+ ---
271
+
272
+ ## レスポンシブデザインポリシー
273
+
274
+ <!--
275
+ 何を書くか: 様々なデバイス・画面サイズへの対応方針
276
+
277
+ 目的:
278
+ - デバイス対応の方針を明確化
279
+ - ブレークポイントの統一
280
+ - 実装時の判断基準の提供
281
+ - QAテスト時の確認項目の明確化
282
+
283
+ 重要性:
284
+ - スマートフォン、タブレット、PCでの一貫したUX
285
+ - 実装の手戻り防止
286
+ - デザインとエンジニアリングの認識統一
287
+ - アクセシビリティ向上
288
+
289
+ 記載のポイント:
290
+ - プロジェクト全体で統一されたブレークポイント定義
291
+ - デバイスごとの対応優先度
292
+ - 主要なレイアウトパターン
293
+ - 画像・メディアの最適化方針
294
+ - タッチインタラクションの考慮
295
+
296
+ 更新頻度:
297
+ - プロジェクト初期にポリシー策定
298
+ - デバイス対応範囲変更時に更新
299
+ - ブレークポイント変更時に更新(稀)
300
+ -->
301
+
302
+ ### ブレークポイント定義
303
+
304
+ <!--
305
+ 何を書くか: CSS/JSで使用するブレークポイントの定義
306
+
307
+ よくあるブレークポイント戦略:
308
+ A. モバイルファースト(推奨)
309
+ - 最小画面から設計し、徐々に大画面に対応
310
+ - min-width を使用
311
+ - パフォーマンス上有利(モバイルが軽量)
312
+
313
+ B. デスクトップファースト
314
+ - デスクトップから設計し、徐々に小画面に対応
315
+ - max-width を使用
316
+ - 既存デスクトップサイトの改修時に採用
317
+
318
+ 記載のベストプラクティス:
319
+ - プロジェクト全体で統一された値を使用
320
+ - CSS変数やデザイントークンとして管理
321
+ - デバイス名ではなく画面サイズで定義("iPhone"ではなく"sm")
322
+ - 主要デバイスの実解像度を考慮
323
+ -->
324
+
325
+ | ブレークポイント | 画面幅 | 対象デバイス | 用途 |
326
+ |-----------------|--------|-------------|------|
327
+ | **xs** (Extra Small) | `< 640px` | スマートフォン(縦) | 最小画面、1カラムレイアウト |
328
+ | **sm** (Small) | `≥ 640px` | スマートフォン(横)、小型タブレット | 2カラム可能 |
329
+ | **md** (Medium) | `≥ 768px` | タブレット(縦) | サイドバー表示開始 |
330
+ | **lg** (Large) | `≥ 1024px` | タブレット(横)、小型ノートPC | 複雑なレイアウト可能 |
331
+ | **xl** (Extra Large) | `≥ 1280px` | デスクトップ、ノートPC | フル機能表示 |
332
+ | **2xl** (2X Large) | `≥ 1536px` | 大型デスクトップ、4Kモニター | 最大コンテンツ幅制限 |
333
+
334
+ **実装例(Tailwind CSS形式)**:
335
+ ```css
336
+ /* tailwind.config.js */
337
+ module.exports = {
338
+ theme: {
339
+ screens: {
340
+ 'sm': '640px',
341
+ 'md': '768px',
342
+ 'lg': '1024px',
343
+ 'xl': '1280px',
344
+ '2xl': '1536px',
345
+ }
346
+ }
347
+ }
348
+ ```
349
+
350
+ **CSS変数での実装例**:
351
+ ```css
352
+ :root {
353
+ --breakpoint-sm: 640px;
354
+ --breakpoint-md: 768px;
355
+ --breakpoint-lg: 1024px;
356
+ --breakpoint-xl: 1280px;
357
+ --breakpoint-2xl: 1536px;
358
+ }
359
+ ```
360
+
361
+ ---
362
+
363
+ ### デバイス対応方針
364
+
365
+ <!--
366
+ 何を書くか: どのデバイスを優先して対応するか
367
+
368
+ 記載のポイント:
369
+ - 対応優先度(必須/推奨/検討中/対応外)
370
+ - ターゲットユーザーのデバイス利用状況
371
+ - アナリティクスデータがあれば参照
372
+ - テスト対象デバイスの明確化
373
+ -->
374
+
375
+ | デバイスカテゴリ | 対応優先度 | 画面幅範囲 | 備考 |
376
+ |----------------|-----------|-----------|------|
377
+ | **スマートフォン** | 必須 | 320px - 640px | iPhone SE (375px) 以上を最優先 |
378
+ | **タブレット** | 推奨 | 640px - 1024px | iPad (768px, 1024px) でテスト |
379
+ | **ノートPC / デスクトップ** | 必須 | 1024px - 1920px | 1366px, 1920px を重点テスト |
380
+ | **大型モニター (4K)** | 検討中 | 1920px 以上 | コンテンツ最大幅で制限 (max-width: 1536px) |
381
+
382
+ **モバイルファースト戦略を採用**:
383
+ - デザイン・実装はスマートフォン画面から開始
384
+ - 段階的にタブレット、デスクトップに対応
385
+ - パフォーマンス最適化をモバイル基準で実施
386
+
387
+ ---
388
+
389
+ ### レイアウトパターン
390
+
391
+ <!--
392
+ 何を書くか: 画面サイズごとの主要なレイアウトパターン
393
+
394
+ よくあるパターン:
395
+ 1. カラム数の変更
396
+ - モバイル: 1カラム
397
+ - タブレット: 2カラム
398
+ - デスクトップ: 3-4カラム
399
+
400
+ 2. ナビゲーションの変更
401
+ - モバイル: ハンバーガーメニュー
402
+ - タブレット: タブバー
403
+ - デスクトップ: サイドバー
404
+
405
+ 3. コンテンツの表示/非表示
406
+ - モバイル: 必須情報のみ、詳細は折りたたみ
407
+ - デスクトップ: 全情報表示
408
+
409
+ 4. モーダルとドロワー
410
+ - モバイル: ボトムシート、フルスクリーンモーダル
411
+ - デスクトップ: センターモーダル
412
+ -->
413
+
414
+ #### ナビゲーション
415
+
416
+ | デバイス | パターン | 説明 |
417
+ |---------|---------|------|
418
+ | **モバイル (xs - sm)** | ハンバーガーメニュー + ボトムナビゲーション | 上部にハンバーガーメニュー、下部に主要4-5項目のタブバー |
419
+ | **タブレット (md)** | サイドドロワー | スワイプで開閉可能なサイドメニュー |
420
+ | **デスクトップ (lg+)** | 固定サイドバー | 常時表示される左サイドバーナビゲーション |
421
+
422
+ #### コンテンツレイアウト
423
+
424
+ | 画面要素 | モバイル (xs) | タブレット (md) | デスクトップ (lg+) |
425
+ |---------|-------------|----------------|------------------|
426
+ | **カラム数** | 1カラム | 2カラム | 3-4カラム |
427
+ | **サイドバー** | 非表示(ドロワー) | 折りたたみ可能 | 常時表示 |
428
+ | **カード一覧** | 縦積み | 2列グリッド | 3-4列グリッド |
429
+ | **フォーム** | 縦積み | 2列可能 | 2列推奨 |
430
+ | **テーブル** | 横スクロール or カード形式 | 横スクロール | フル表示 |
431
+
432
+ ---
433
+
434
+ ### 画像・メディア対応
435
+
436
+ <!--
437
+ 何を書くか: 画像やメディアの最適化方針
438
+
439
+ 記載のポイント:
440
+ - レスポンシブ画像の提供方法
441
+ - 画像フォーマット(WebP, AVIF)
442
+ - 遅延ローディング
443
+ - アスペクト比の維持
444
+ -->
445
+
446
+ | 項目 | 方針 | 実装方法 |
447
+ |------|------|---------|
448
+ | **レスポンシブ画像** | デバイスに応じて最適なサイズを配信 | `srcset` と `sizes` 属性使用、または Next.js Image コンポーネント |
449
+ | **画像フォーマット** | 最新フォーマット優先、フォールバック提供 | WebP/AVIF → JPEG/PNG の順で配信(`<picture>` 要素) |
450
+ | **遅延ローディング** | ファーストビュー外の画像は遅延読み込み | `loading="lazy"` 属性、Intersection Observer |
451
+ | **アスペクト比** | レイアウトシフト防止のため事前確保 | `aspect-ratio` CSS プロパティ |
452
+ | **動画** | モバイルは自動再生オフ、データ通信量考慮 | `preload="metadata"`, 解像度別エンコード |
453
+
454
+ **実装例**:
455
+ ```html
456
+ <picture>
457
+ <source srcset="image.avif" type="image/avif">
458
+ <source srcset="image.webp" type="image/webp">
459
+ <img src="image.jpg" alt="説明" loading="lazy" width="800" height="600">
460
+ </picture>
461
+ ```
462
+
463
+ ---
464
+
465
+ ### タッチインタラクション
466
+
467
+ <!--
468
+ 何を書くか: タッチデバイスでのインタラクション設計
469
+
470
+ 記載のポイント:
471
+ - タップターゲットサイズ(最小44x44px推奨)
472
+ - ジェスチャー対応(スワイプ、ピンチズーム)
473
+ - ホバー効果の代替(タッチデバイスにはホバーがない)
474
+ - タップ時のフィードバック
475
+ -->
476
+
477
+ | 項目 | ガイドライン | 理由 |
478
+ |------|------------|------|
479
+ | **タップターゲットサイズ** | 最小 44x44px (推奨 48x48px) | タップしやすさ、アクセシビリティ(WCAG準拠) |
480
+ | **要素間の余白** | 最小 8px | 誤タップ防止 |
481
+ | **ホバー効果** | タッチデバイスでは `:active` を使用 | `:hover` はタッチ後に残留する問題あり |
482
+ | **スワイプジェスチャー** | カルーセル、ドロワー開閉で活用 | ネイティブアプリに近い操作感 |
483
+ | **長押し** | コンテキストメニュー表示に使用可能 | ただし発見可能性が低いため必須操作には使わない |
484
+ | **ピンチズーム** | 画像ギャラリーで有効化 | `user-scalable=yes` を設定 |
485
+
486
+ **アクセシブルなボタン実装例**:
487
+ ```css
488
+ .button {
489
+ min-width: 44px;
490
+ min-height: 44px;
491
+ padding: 12px 24px;
492
+ /* タップ時の視覚的フィードバック */
493
+ transition: background-color 0.15s;
494
+ }
495
+
496
+ .button:active {
497
+ background-color: var(--color-primary-dark);
498
+ transform: scale(0.98);
499
+ }
500
+ ```
501
+
502
+ ---
503
+
504
+ ### パフォーマンス考慮事項
505
+
506
+ <!--
507
+ 何を書くか: レスポンシブ対応におけるパフォーマンス最適化
508
+
509
+ 記載のポイント:
510
+ - モバイルネットワーク環境への配慮
511
+ - バンドルサイズの最適化
512
+ - リソース読み込み優先順位
513
+ - Core Web Vitals 目標値
514
+ -->
515
+
516
+ | 項目 | 目標値 | 施策 |
517
+ |------|-------|------|
518
+ | **LCP (Largest Contentful Paint)** | < 2.5秒 | 画像最適化、フォント最適化、SSR/SSG活用 |
519
+ | **FID (First Input Delay)** | < 100ms | JavaScript 分割ロード、メインスレッド負荷軽減 |
520
+ | **CLS (Cumulative Layout Shift)** | < 0.1 | 画像・広告サイズ事前確保、フォント読み込み最適化 |
521
+ | **バンドルサイズ** | 初回 < 200KB (gzip圧縮後) | コード分割、Tree Shaking、不要なライブラリ削除 |
522
+ | **TTI (Time to Interactive)** | < 3.5秒(3G回線) | Critical CSS インライン化、遅延ローディング |
523
+
524
+ **モバイルネットワーク対応**:
525
+ - 3G回線でのテストを実施(Chrome DevTools のネットワークスロットリング使用)
526
+ - オフライン時の適切なフォールバック表示
527
+ - プログレッシブWebアプリ(PWA)化を検討
528
+
529
+ ---
530
+
531
+ ## デザイン参考資料
532
+
533
+ <!--
534
+ デザインモックやスタイルガイドへのリンク(オプション)
535
+
536
+ 詳細な実装仕様はここには記載せず、外部リソースへのリンクのみ記載。
537
+ これにより、ドキュメントの保守負担を軽減し、常に最新の情報を参照できる。
538
+
539
+ リンクすべきリソース:
540
+ - Figma/Adobe XD/Sketch プロジェクト
541
+ - Storybook(コンポーネントカタログ)
542
+ - デザインシステムドキュメント
543
+ - ワイヤーフレーム
544
+ - ユーザビリティテスト結果
545
+ -->
546
+
547
+ | リソース | URL | 説明 |
548
+ |---------|-----|------|
549
+ | **Figmaデザイン** | <!-- https://figma.com/file/... --> | <!-- 全画面のデザインモック(レスポンシブ対応含む) --> |
550
+ | **Storybook** | <!-- https://storybook.example.com --> | <!-- UIコンポーネントカタログ(各ブレークポイントで表示確認可能) --> |
551
+ | **デザインシステム** | <!-- https://design.example.com --> | <!-- カラー、タイポグラフィ、コンポーネント仕様、レスポンシブガイドライン --> |
552
+ | **レスポンシブテスト** | <!-- https://browserstack.com/project/... --> | <!-- 実機テスト結果(BrowserStack / Sauce Labs) --> |
553
+
554
+ ---
555
+
556
+ ## メモ
557
+
558
+ <!--
559
+ 画面設計に関する補足情報
560
+
561
+ 記載すべき内容:
562
+ 1. 設計の経緯・背景
563
+ - なぜこの画面構成にしたか
564
+ - ユーザーリサーチの結果
565
+ - 競合分析の結果
566
+
567
+ 2. 将来の変更予定
568
+ - 追加予定の画面
569
+ - リデザイン計画
570
+ - 段階的リリースの計画
571
+
572
+ 3. 技術的制約
573
+ - レスポンシブ対応の方針
574
+ - ブラウザサポート範囲
575
+ - アクセシビリティ対応(WCAG準拠レベル)
576
+
577
+ 4. 既知の問題・改善予定
578
+ - UX上の課題
579
+ - ユーザーフィードバック
580
+ - 改善予定事項
581
+
582
+ 5. 参考資料
583
+ - ワイヤーフレーム作成時の参考サイト
584
+ - デザインパターンライブラリ
585
+ - UXリサーチ資料
586
+ -->