デザイントークン 02 設計と命名(カテゴリ別)

更新日:

命名の基本ルール

  • 役割(何に使うか)で名付ける。見た目(色名・数値)はプリミティブ層だけ
    • ✗ button-yellow → ○ button-primary-bg
  • 大 → 小の順: カテゴリ-用途-状態(color-text-muted、color-bg-danger-hover)
  • 面と文字をペアに: primary / primary-foreground(shadcn/ui の規約)
  • W3C 形式では名前に { } . を使えない、$ で始められない
  • チームで規約を決めて統一(略語、区切り文字、状態の語彙: hover / active / disabled / focus)

色

プリミティブ(パレット)

各色相を明るさ 50〜950 の段階で用意(Tailwind と同じ考え方):
gray-50 … gray-950、blue-50 … blue-950、red-*、green-*、yellow-*

  • OKLCH で作ると明るさの段階が揃いやすい

セマンティック(最低限のセット例)

トークン用途
background / foregroundページの背景 / 本文
muted / muted-foreground控えめな面 / 補足テキスト
card / popover (+ -foreground)浮いた面
primary (+ -foreground)主要アクション・ブランド
secondary / accent (+ -foreground)副次アクション / ホバー・選択
border / input / ring枠線 / 入力枠 / フォーカス
destructive / success / warning / info状態色
linkテキストリンク
  • 状態色は意味を固定(赤=エラー)し、色だけでなくアイコン・文言でも伝える
  • 主要アクションの色は乱用しない(1画面1つが目安)

余白(spacing)

  • 基準値の倍数で作る(4px 基準: 4, 8, 12, 16, 24, 32, 48, 64 / 8px 基準: 8, 16, 24, 32 ...)
  • 名前は数値(space-4 = 16px)か T シャツサイズ(sm md lg)。Tailwind は数値方式(1 単位 = 4px)
  • 関係の近さで使い分ける(デザインの4原則 の「近接」):
    • 小(2〜4px): 一体に見せたい要素(タイトルと補足)
    • 中(8〜16px): 独立した操作の間、カード内側
    • 大(32〜64px): セクションの区切り
  • 中途半端な値(6px、13px)が欲しくなったら、構造の見直しのサイン

タイポグラフィ

トークン例
font-sans / font-mono"Noto Sans JP", system-ui, sans-serif
text-xs … text-4xl12 / 14 / 16 / 18 / 20 / 24 / 30 / 36px
font-weight-regular/medium/bold400 / 500 / 700
leading-tight/normal/relaxed1.25 / 1.5 / 1.75(日本語は 1.6〜1.8 が読みやすい)
  • 用途別の複合トークン(W3C の typography 型): heading-1 = { fontFamily, fontSize, fontWeight, lineHeight }
  • 本文は 16px 以上が基本(スマホ)

角丸・影・動き・その他

カテゴリ例ポイント
radiusradius-sm/md/lg/xl/full基準値1つから計算すると統一しやすい(shadcn: --radius から sm〜4xl を算出)
shadowshadow-sm(カード)/ shadow-lg(モーダル)高さ(elevation)の段階として定義
motionduration-fast 150ms / duration-normal 300ms、ease-out「動きを減らす」設定(prefers-reduced-motion)に対応
breakpointssm 640 / md 768 / lg 1024 / xl 1280Tailwind の既定に合わせると楽
z-indexz-dropdown 1000 / z-modal 1100 / z-toast 1200重なり順の衝突を防ぐ

実例: ジョブアンテナUI のトークン(旧1枚ノートから統合)

転職サービス向けに公開されているデザインシステムの例(出典: https://ui.jobantenna.jp/rules/color , https://ui.jobantenna.jp/rules/spacing)。

色

  • ブランド固定値: Black #2A2E3D(文字・骨格)/ Yellow #FFC306(主要アクション)
  • primary … 主要な行動ボタン。1画面に原則1つ(「主要アクションだけが光る」)
  • secondary / outline / ghost … 副次的なボタン
  • muted / accent … 補助的な面・非活性、border / input … 枠線
  • ring … キーボード操作時のフォーカス枠(背景とのコントラスト 3:1 以上)
  • 状態色は意味を固定し、色だけでなくアイコン・文言でも伝える
  • ライト/ダークで役割は同じ、値だけ切り替える

余白

  • 小さい余白で要素を「結合」し、大きい余白で面を「区切る」2層構造
    • 2px: 意味が地続きの行(求人タイトルと会社名)/ 4px: 同種の要素を横に詰める / 8px: 独立した操作を離す / 16px: カード内側
    • 32px / 48px / 64px: 発言単位・空状態・セクション間
  • 中間値(6px など)は使用禁止 → 使いたくなったら階層設計を見直すサイン(デザインの4原則 の「近接」のルール化)
  • AI への指示例: 「色は globals.css のトークンだけを使い、余白は 2/4/8/16/32/48/64px のみ」

小さく始める

最初から完璧にしなくてよい。まずこれだけ:

  1. 色: background/foreground/primary/muted/border/destructive(+ ダーク)
  2. 余白: 4px 基準の段階
  3. 文字: 本文・見出しのサイズ 5段階程度
  4. 角丸: 1つの基準値
    → shadcn/ui を使えば 1 と 4 は最初から揃っている

関連