Design Foundationと標準UIパターン
AIが生成した画面を、再利用可能で検証できるプロダクト体験へ変える方法を学ぶ。
- Why design needs a system
- Principles, tokens, and recorded decisions
- Standard components and screen states
- Reviewing and improving AI output
- カラーシステムとアクセシビリティ
デザイン哲学: 画面は利用者の仕事を支える契約である
デザイン規則は、人とAIが共有する契約である。画面ごとに色、余白、文字、情報の優先順位を決め直すと、機能が同じでも体験は揺らぐ。デザインシステムは建築図面のように材料と寸法を先に決め、再現可能な結果を作る。
最初に利用者の目的、成功状態、失敗状態、確認する証拠を記録する。美しさより、利用者が次の行動を迷わず見つけられるかを確認する。
| 確認項目 | 意図 |
|---|---|
| タスク | 利用者が完了する行動 |
| 階層 | 読む順序 |
| 制約 | アクセシビリティ、狭い画面、長い翻訳、失敗 |
デザイン原則: 一貫性・明確性・回復性
原則は判断の方向を示し、トークンはその判断を再利用できる名前にする。意味を持つトークンは、コード、文書、ダークモードで同じ意図を保つ。
生の色や任意のピクセルではなく役割に名前を付ける。ブランド変更やアクセシビリティ修正では、画面ごとではなく定義を更新できる。
| 確認項目 | 意図 |
|---|---|
| 一貫性 | 同じ意味には同じ表現を使う。 |
| 明確性 | 一画面の主要行動は一つにする。 |
| アクセシビリティ | 色だけで状態を伝えない。 |
| 回復性 | 危険な行動には確認または取り消しを置く。 |
演習
生の色や任意のピクセルではなく役割に名前を付ける。ブランド変更やアクセシビリティ修正では、画面ごとではなく定義を更新できる。
# design-contract.yaml
screen: report-review
primary_task: approve-or-return-a-report
states: [default, loading, empty, error, forbidden]
components:
- status-panel
- review-summary
- primary-action
acceptance:
- one-primary-action
- keyboard-reachable
- semantic-tokens-onlyデザインガイド: 余白・階層・文言・レスポンシブ
デザインガイドは好みを抑えるためではなく、複数の人と画面が同じ仕事を一貫して完了するための作業言語である。余白は関係を示し、見出し・本文・補助文は読む順序を作る。
新しい画面は既存規則を複製し、必要な差だけを記録する。根拠のない余白、固定幅、曖昧なボタン文言を増やさない。
| Element | Rule |
|---|---|
| 余白 | 近い関係には小さい余白を使う。 |
| 階層 | 役割別のサイズと太さを使う。 |
| 文言 | 行動と結果を先に伝える。 |
| レスポンシブ | 柔軟な幅と優先順位の再配置を使う。 |
カラーシステムとアクセシビリティ
カラーシステムはパレット集ではなく、意味を伝える契約である。原始パレットは色の段階だけを提供し、画面ではtext、surface、border、action、success、warning、errorのような意味トークンを使う。これによりブランド色やダークモードが変わっても、画面ごとに失敗・警告・完了の意味を作り直さない。
アクセシビリティはカラーシステムの検証条件である。成功、エラー、選択を色だけで伝えず、文章、アイコン、枠線、パターンを組み合わせる。文字、アイコン、フォーカスリング、入力エラー境界をライト・ダーク両方で確認する。
| Layer | Purpose |
|---|---|
| 原始パレット | 色の段階だけを定義する。 |
| 意味トークン | 文字、面、境界、行動、状態の役割を表す。 |
| 部品トークン | ボタン、入力欄、通知の状態を定義する。 |
| アクセシビリティ確認 | 色以外の手掛かり、対比、フォーカスを確認する。 |
状態色の確認演習
AIには生の色値ではなく意味トークンだけを使うよう依頼する。一画面で通常、hover、focus、disabled、errorを確認し、色を除いても状態と次の行動が分かるかを確認する。
{
"color": {
"brand": { "$value": "#0969da", "$type": "color" },
"action-primary": { "$value": "{color.brand}", "$type": "color" },
"status-error": { "$value": "#cf222e", "$type": "color" },
"focus-ring": { "$value": "{color.action-primary}", "$type": "color" }
}
}タイポグラフィとフォントシステム
フォントは装飾ではなく、読む速度と情報階層を作るインターフェースである。本文、見出し、補助文、コードの役割を分け、family、weight、size、line-height、letter-spacingをトークンで管理する。
Webフォントが遅延・失敗しても読めなければならない。fallback、コード用等幅書体、長い翻訳の折返し、表とボタンの可読性を確認する。
| Element | Rule |
|---|---|
| 本文 | 読みやすいサイズと行間を保つ。 |
| 見出し | サイズと太さで構造を示す。 |
| コード | 等幅書体と折返し規則を使う。 |
| fallback | 文字対応と読込失敗を考慮する。 |
標準コンポーネントと標準画面
ボタン、入力欄、カード、表、通知は部品である。リスト、詳細、作成、確認、エラー、空状態は部品を組み合わせた画面パターンである。部品だけを標準化すると、読み込み、空、権限なし、保存失敗が不統一になる。
各部品には目的、変形、状態、アクセシブルな名前を記録する。各画面には開始条件、次の行動、成功・失敗・待機状態、証拠を記録する。
| 確認項目 | 意図 |
|---|---|
| 主要ボタン | 決定的な行動だけを強調する。 |
| フォーム | 必須とエラー理由を入力欄の近くに置く。 |
| 状態パネル | 次の行動を示す。 |
| 確認画面 | 変更、影響、承認、戻しを分ける。 |
アクセシビリティとAI出力の確認
「きれいな画面」という依頼では解釈が毎回変わる。目的、許可する部品、禁止事項、状態一覧、アクセシビリティ、受入証拠を渡す。生成後は長い文字列、キーボード操作、失敗状態、ダークモードで確認する。
レビューでは、誰がどの状態でなぜ止まるかを記録する。修正前後の証拠を残し、次の担当者が同じ判断を使えるようにする。
| 確認項目 | 意図 |
|---|---|
| 1. タスクと主要行動が見えるか。 | 画面の目的が一目で伝わるか確認するため。 |
| 2. 基本・読込・空・エラー・権限なしを扱うか。 | AI下書きが状態の抜けを残さないよう全状態を要求するため。 |
| 3. 色以外の手掛かりとキーボード操作があるか。 | 色やマウスに依らないアクセシビリティを保証するため。 |
| 4. トークンと画面契約を守るか。 | 一貫性判断を感覚ではなく契約で行うため。 |
- 画面契約には何を含め、下書き前に定めるのはなぜか。
- 基本・読込・空・エラー・権限なしの全状態を設計すべき理由は何か。
- 色に依らない手掛かりとキーボード操作をどう確認するか。
- トークンと標準コンポーネントを使う利点は何か。