UIデザインシステム
デザイントークンの生成、カラーパレットの作成、タイポグラフィスケールの計算、コンポーネントシステムの構築、および開発者向けハンドオフドキュメントの準備を行います。
目次
トリガー用語
このスキルは、以下のような状況で使用します:
- 「デザイントークンを生成」
- 「カラーパレットを作成」
- 「タイポグラフィスケールを構築」
- 「スペーシングシステムを計算」
- 「デザインシステムを作成」
- 「CSS変数を生成」
- 「SCSSトークンをエクスポート」
- 「コンポーネントアーキテクチャを設定」
- 「コンポーネントライブラリを文書化」
- 「レスポンシブブレークポイントを計算」
- 「開発者向けハンドオフを準備」
- 「ブランドカラーをパレットに変換」
- 「WCAGコントラストを確認」
- 「8ptグリッドシステムを構築」
まず明確にする
トークンやシステムを生成する前に、以下の入力を確定します。入力が不足している、または曖昧で結果が変わる場合は質問し、そうでない場合は適切なデフォルト値を使用して、使用したデフォルト値を明示します。
- ブランドプライマリカラー(16進数): 完全なパレットのシード(カラースケールとWCAGコントラストチェックを駆動)
- スタイルプリセット: modern、classic、playful(フォント、ボーダー半径、シャドウスタイルを設定)
- 出力形式とフレームワーク: CSS、SCSS、JSON(Tailwind/styled-components/Figma用)(エクスポートと開発者向けハンドオフを駆動)
リスト全体ではなく、このリクエストに最も重要な2〜3の入力について質問します。ユーザーがすぐに結果を希望する場合は、結果を生成し、冒頭で使用した前提条件を明示します。
ワークフロー
ワークフロー1:デザイントークンの生成
状況: ブランドカラーがあり、完全なデザイントークンシステムが必要です。
手順:
-
ブランドカラーとスタイルを特定
- ブランドプライマリカラー(16進数形式)
- スタイルの好み:
modern|classic|playful
-
スクリプトを使用してトークンを生成
python scripts/design_token_generator.py "#0066CC" modern json -
生成されたカテゴリを確認
- 色:プライマリ、セカンダリ、ニュートラル、セマンティック、サーフェス
- タイポグラフィ:fontFamily、fontSize、fontWeight、lineHeight
- スペーシング:8ptグリッドベースのスケール(0-64)
- ボーダー:radius、width
- シャドウ:noneから2xl
- アニメーション:duration、easing
- ブレークポイント:xsから2xl
-
ターゲット形式でエクスポート
# CSSカスタムプロパティ python scripts/design_token_generator.py "#0066CC" modern css > design-tokens.css # SCSS変数 python scripts/design_token_generator.py "#0066CC" modern scss > _design-tokens.scss # Figma/ツール用のJSON python scripts/design_token_generator.py "#0066CC" modern json > design-tokens.json -
アクセシビリティを検証
- カラーコントラストがWCAG AA(通常テキスト4.5:1、大きいテキスト3:1)を満たしていることを確認
- セマンティックカラーにコントラストカラーが定義されていることを確認
ワークフロー2:コンポーネントシステムの作成
状況: デザイントークンを使用してコンポーネントライブラリを構造化する必要があります。
手順:
-
コンポーネント階層を定義
- アトム:Button、Input、Icon、Label、Badge
- 分子:FormField、SearchBar、Card、ListItem
- 有機体:Header、Footer、DataTable、Modal
- テンプレート:DashboardLayout、AuthLayout
-
トークンをコンポーネントにマッピング
コンポーネント 使用するトークン Button colors、sizing、borders、shadows、typography Input colors、sizing、borders、spacing Card colors、borders、shadows、spacing Modal colors、shadows、spacing、z-index、animation -
バリアントパターンを定義
サイズバリアント:
sm: height 32px、paddingX 12px、fontSize 14px md: height 40px、paddingX 16px、fontSize 16px lg: height 48px、paddingX 20px、fontSize 18pxカラーバリアント:
primary: 背景色 primary-500、テキスト色 white secondary: 背景色 neutral-100、テキスト色 neutral-900 ghost: 背景色 transparent、テキスト色 neutral-700 -
コンポーネントAPIを文書化
- 型を持つPropsインターフェース
- バリアントオプション
- 状態処理(hover、active、focus、disabled)
- アクセシビリティ要件
-
参照:
references/component-architecture.mdを参照
ワークフロー3:レスポンシブデザイン
状況: ブレークポイント、流体タイポグラフィ、またはレスポンシブスペーシングが必要です。
手順:
-
ブレークポイントを定義
名前 幅 ターゲット xs 0 小型スマートフォン sm 480px 大型スマートフォン md 640px タブレット lg 768px 小型ノートPC xl 1024px デスクトップ 2xl 1280px 大画面 -
流体タイポグラフィを計算
計算式:
clamp(min、preferred、max)/* ビューポート320pxから1200pxの間で16pxから24px */ font-size: clamp(1rem、0.5rem + 2vw、1.5rem);事前計算されたスケール:
--fluid-h1: clamp(2rem, 1rem + 3.6vw, 4rem); --fluid-h2: clamp(1.75rem, 1rem + 2.3vw, 3rem); --fluid-h3: clamp(1.5rem, 1rem + 1.4vw, 2.25rem); --fluid-body: clamp(1rem, 0.95rem + 0.2vw, 1.125rem); -
レスポンシブスペーシングを設定
トークン モバイル タブレット デスクトップ --space-md 12px 16px 16px --space-lg 16px 24px 32px --space-xl 24px 32px 48px --space-section 48px 80px 120px -
参照:
references/responsive-calculations.mdを参照
ワークフロー4:開発者向けハンドオフ
状況: デザイントークンを開発チームに引き渡す必要があります。
手順:
-
必要な形式でトークンをエクスポート
# CSSプロジェクト用 python scripts/design_token_generator.py "#0066CC" modern css # SCSSプロジェクト用 python scripts/design_token_generator.py "#0066CC" modern scss # JavaScript/TypeScript用 python scripts/design_token_generator.py "#0066CC" modern json -
フレームワーク統合を準備
React + CSS変数:
import './design-tokens.css'; <button className="btn btn-primary">クリック</button>Tailwind設定:
const tokens = require('./design-tokens.json'); module.exports = { theme: { colors: tokens.colors, fontFamily: tokens.typography.fontFamily } };styled-components:
import tokens from './design-tokens.json'; const Button = styled.button` background: ${tokens.colors.primary['500']}; padding: ${tokens.spacing['2']} ${tokens.spacing['4']}; `; -
Figmaと同期
- Tokens Studioプラグインをインストール
- design-tokens.jsonをインポート
- トークンはFigmaスタイルと自動的に同期
-
ハンドオフチェックリスト
- トークンファイルがプロジェクトに追加された
- ビルドパイプラインが設定された
- テーマ/CSS変数がインポートされた
- コンポーネントライブラリが調整された
- ドキュメントが生成された
-
参照:
references/developer-handoff.mdを参照
ツールリファレンス
design_token_generator.py
ブランドカラーから完全なデザイントークンシステムを生成します。
| 引数 | 値 | デフォルト | 説明 |
|---|---|---|---|
| brand_color | 16進色 | #0066CC | ブランドのプライマリカラー |
| style | modern、classic、playful | modern | デザインスタイルプリセット |
| format | json、css、scss、summary | json | 出力形式 |
例:
# JSONトークンを生成(デフォルト)
python scripts/design_token_generator.py "#0066CC"
# クラシックスタイルでCSS出力
python scripts/design_token_generator.py "#8B4513" classic css
# プレイフルスタイルでサマリー表示
python scripts/design_token_generator.py "#FF6B6B" playful summary
出力カテゴリ:
| カテゴリ | 説明 | 主な値 |
|---|---|---|
| colors | カラーパレット | primary、secondary、neutral、semantic、surface |
| typography | フォントシステム | fontFamily、fontSize、fontWeight、lineHeight |
| spacing | 8ptグリッド | 0-64スケール、セマンティック(xs-3xl) |
| sizing | コンポーネントサイズ | container、button、input、icon |
| borders | ボーダー値 | radius(スタイル別)、width |
| shadows | シャドウスタイル | noneから2xl、inner |
| animation | モーショントークン | duration、easing、keyframes |
| breakpoints | レスポンシブ | xs、sm、md、lg、xl、2xl |
| z-index | レイヤーシステム | baseからnotification |
クイックリファレンス表
カラースケール生成
| ステップ | 明度 | 彩度 | ユースケース |
|---|---|---|---|
| 50 | 95% 固定 | 30% | 微妙な背景 |
| 100 | 95% 固定 | 38% | 明るい背景 |
| 200 | 95% 固定 | 46% | ホバー状態 |
| 300 | 95% 固定 | 54% | ボーダー |
| 400 | 95% 固定 | 62% | 無効状態 |
| 500 | オリジナル | 70% | ベース/デフォルト色 |
| 600 | オリジナル × 0.8 | 78% | ホバー(ダーク) |
| 700 | オリジナル × 0.6 | 86% | アクティブ状態 |
| 800 | オリジナル × 0.4 | 94% | テキスト |
| 900 | オリジナル × 0.2 | 100% | 見出し |
タイポグラフィスケール(1.25倍率)
| サイズ | 値 | 計算式 |
|---|---|---|
| xs | 10px | 16 ÷ 1.25² |
| sm | 13px | 16 ÷ 1.25¹ |
| base | 16px | ベース |
| lg | 20px | 16 × 1.25¹ |
| xl | 25px | 16 × 1.25² |
| 2xl | 31px | 16 × 1.25³ |
| 3xl | 39px | 16 × 1.25⁴ |
| 4xl | 49px | 16 × 1.25⁵ |
| 5xl | 61px | 16 × 1.25⁶ |
WCAGコントラスト要件
| レベル | 通常テキスト | 大きいテキスト |
|---|---|---|
| AA | 4.5:1 | 3:1 |
| AAA | 7:1 | 4.5:1 |
大きいテキスト:≥18pt 通常 または ≥14pt 太字
スタイルプリセット
| 側面 | Modern | Classic | Playful |
|---|---|---|---|
| フォント サン | Inter | Helvetica | Poppins |
| フォント モノ | Fira Code | Courier | Source Code Pro |
| 半径 デフォルト | 8px | 4px | 16px |
| シャドウ | レイヤー、控えめ | 単一レイヤー | ソフト、明確 |
ナレッジベース
references/ 内の詳細なリファレンスガイド:
| ファイル | 内容 |
|---|---|
token-generation.md | カラーアルゴリズム、HSV空間、WCAGコントラスト、タイプスケール |
component-architecture.md | アトミックデザイン、命名規則、プロップスパターン |
responsive-calculations.md | ブレークポイント、流体タイポグラフィ、グリッドシステム |
developer-handoff.md | エクスポート形式、フレームワークセットアップ、Figma同期 |
検証チェックリスト
トークン生成
- ブランドカラーが16進数形式で提供されている
- スタイルがプロジェクト要件と一致している
- すべてのトークンカテゴリが生成されている
- セマンティックカラーにコントラスト値が含まれている
コンポーネントシステム
- すべてのサイズが実装されている(sm、md、lg)
- すべてのバリアントが実装されている(primary、secondary、ghost)
- すべての状態が機能している(hover、active、focus、disabled)
- デザイントークンのみを使用している(ハードコードされた値なし)
アクセシビリティ
- カラーコントラストがWCAG AAを満たしている
- フォーカスインジケーターが表示される
- タッチターゲットが44×44px以上である
- セマンティックなHTML要素が使用されている
開発者向けハンドオフ
- トークンが必要な形式でエクスポートされた
- フレームワーク統合が文書化された
- デザインツールと同期した
- コンポーネントのドキュメントが完了した
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 生成された色がWCAGコントラストに不合格 | ブランドカラーが明るすぎる、または彩度が高すぎる | 明るい背景には暗い色合い(600+)を使用する;コントラストツールで確認する |
| トークンエクスポートに誤った値がある | 引数の形式またはカラー構文が間違っている | 16進色を引用符で囲む(例:"#0066CC");形式がjson、css、またはscssであることを確認する |
| タイポグラフィスケールが大きすぎる/小さすぎる | デフォルトの1.25倍率がデザインに合わない | DesignTokenGeneratorクラスのtype_scale_ratioを変更する(1.125でよりタイトに、1.333でよりルーズに) |
| SCSS変数が既存のものと競合する | トークン名の衝突 | すべてのトークンにプロジェクトの名前空間をプレフィックスとして付ける(エクスポート関数を編集) |
| デザインツールで異なる色が表示される | カラースケール生成での16進数の丸め | JSONエクスポートを信頼できる情報源として使用する;Tokens Studioプラグインと同期する |
| スペーシング値がグリッドと合わない | カスタムスペーシングが8ptグリッドと混在している | 生成されたスペーシングシステムからの値のみを使用する;任意のピクセル値を避ける |
| シャドウトークンがダークモードで正しく見えない | シャドウが明るい背景用に設計されている | より薄い不透明度の値を持つ、別のダークモード用シャドウトークンを作成する |
成功基準
| 基準 | 目標 | 測定方法 |
|---|---|---|
| トークンの一貫性 | コードベース内にハードコードされた色/スペーシング値がゼロ | Lintルール違反数 |
| WCAG AA準拠 | すべてのテキスト色が4.5:1のコントラスト比を満たす | 自動コントラストチェッカーまたは手動監査 |
| エクスポート形式のカバレッジ | CSS、SCSS、JSONがすべて正しく生成される | 各形式でジェネレーターを実行;出力を検証 |
| デザイン-開発同期 | トークン更新からコードデプロイまで24時間未満 | Figmaの変更から本番環境までの時間 |
| コンポーネントトークンカバレッジ | 100%のコンポーネントがデザイントークンを使用 | コンポーネントスタイルをハードコード値について監査 |
| タイポグラフィの一貫性 | すべてのテキストがデザインシステムのタイプスケールを使用 | 全ページでビジュアル監査 |
| レスポンシブ動作 | 流体タイポグラフィがすべてのブレークポイントで機能 | xs、sm、md、lg、xl、2xlの幅でテスト |
範囲と制限
対象範囲:
- ブランドカラーからの完全なデザイントークン生成
- カラーパレット生成(プライマリ、セカンダリ、ニュートラル、セマンティック)
- モジュラースケールを使用したタイポグラフィシステム
- 8ptグリッドベースのスペーシングシステム
- コンポーネントサイズ、ボーダー、シャドウ、アニメーショントークン
- CSSカスタムプロパティ、SCSS変数、JSONへのエクスポート
- レスポンシブブレークポイントの定義
- WCAGコントラストリファレンステーブル
対象外:
- ダークモードトークン生成(別のパレットマッピングが必要)
- アニメーション/モーションデザインライブラリ
- アイコンシステム生成
- ランタイムテーマ切り替えの実装
- FigmaプラグインまたはAPI統合(Tokense Studioを使用)
- ビジュアルリグレッションテスト
- デザインからコードへの変換(Figma Dev ModeまたはLocofyを使用)
統合ポイント
…
[翻訳のために省略]