mcpField
R
robis-design-best-practice

robis-design-best-practice

github.com/ethiopian-cursor-communityデザイン・UI3108 回インストール40 週間前に更新
リポジトリ

robis-design-best-practice について

UI コンポーネントを設計・レビューする人向けのデザインリファレンススキルです。配色、コントラスト、間隔、アイコン、ダークモード、動き、レイアウトの指針を示します。

主な機能

  1. 01低彩度カラーの指針
  2. 02WCAG AAA のテキストコントラスト目標
  3. 034px 単位のスペーシング体系
  4. 04アイコンのスタイルとサイズの統一
  5. 05ダークモードでのシャドウ代替策
  6. 06アニメーションとマイクロインタラクションの指針

活用シーン

  1. 01UI の色とコントラストを確認
  2. 02間隔と入れ子の角丸を統一
  3. 03コンポーネント間でアイコンを標準化
  4. 04コンポーネントのダークモード表示を改善

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ethiopian-cursor-community/robis-design-best-practice --skill robis-design-best-practice

インストール後、Claude Code で/robis-design-best-practiceを入力して読み込まれたか確認します。

同梱ファイルexamples.md

詳細

Robi のデザインベストプラクティス

クイックリファレンスチェックリスト

UI コンポーネントを設計またはレビューする際は、次の点を確認してください。

  • 色の彩度は低くします(「バイブコーディング」のような彩度が高すぎる色は避けます)
  • ダークモードの色は、適切に彩度を下げるか明るくします
  • テキストのコントラストは WCAG AAA 基準を満たします
  • 純粋な黒(#000000)や純粋な白(#FFFFFF)は使わず、色味を加えたバリエーションを使います
  • すべての間隔は 4px の倍数にします
  • ネストされた境界半径は、次の式に従います:inner_radius = outer_radius - padding
  • アイコンの太さとスタイルは、全体を通して統一します
  • ダークモードでは影を避け、代わりに境界線や色を使います
  • アニメーションには滑らかなイージングを使います(リニアは避けます)
  • プレミアムな印象を与えるマイクロインタラクションを加えます

色のガイドライン

彩度が高すぎる色を避ける

「パープル・インターネット理論」とは、AI や多くのモダンなサイトで、鮮やかで彩度の高い色が使われすぎているという考え方です。こうした色はユーザーの目を疲れさせ、サイトで過ごす時間を短くしてしまいます。

HSL の基本:

  • 色相:色相環上の位置(0~360°)
  • 彩度:色の強さ(0~100%)
  • 明度:色の明るさ/暗さ(0~100%)

ルール:ネオブルータリズムのデザインを除き、彩度を低く保つことを目指します。

例:

Bad:  hsl(280, 100%, 60%) - Too vibrant purple
Good: hsl(280, 30%, 60%)  - Muted, easier on eyes
ダークモードでの色の調整

黒い背景では色が明るく見えます。次の方法で補正してください。

  • 色の彩度を下げる(彩度を 10~20% 下げます)
  • 明度を少し上げる
Light mode: hsl(220, 40%, 50%)
Dark mode:  hsl(220, 25%, 65%)  // Less saturated, lighter
WCAG のコントラスト基準

背景上のテキストには、常に AAA 評価を目指してください。

  • AAA:コントラスト比は最低 7:1
  • AA:コントラスト比は最低 4.5:1(許容できる代替基準)

WebAIM Contrast Checker などのツールや、ブラウザーに組み込まれた開発者ツールを使います。

ハレーションを防ぐ

白地に純粋な黒、または黒地に純粋な白を使うと、ハレーションと呼ばれる「ぼやけた縁取り」効果が生じます。

解決策:色味を少し加えたバリエーションを使います。

/* Instead of pure values */
/* Bad */ background: #000000;
/* Bad */ color: #FFFFFF;

/* Use tinted variations */
/* Good */ background: #0a0a0a;  /* Slightly lighter black */
/* Good */ color: #fafafa;       /* Slightly darker white */

/* Or with slight color tints */
/* Good */ background: hsl(220, 5%, 5%);   /* Dark with blue tint */
/* Good */ color: hsl(40, 5%, 98%);        /* Off-white with warm tint */

間隔のシステム

すべての間隔は 4px の倍数にする必要があります。

これにより、UI 全体に視覚的な一貫性と整列が生まれます。

Tailwind/Shadcn のスケール
p-1  = 4px     gap-1  = 4px
p-2  = 8px     gap-2  = 8px
p-3  = 12px    gap-3  = 12px
p-4  = 16px    gap-4  = 16px
p-6  = 24px    gap-6  = 24px
p-8  = 32px    gap-8  = 32px

デザイン全体で一貫した間隔の値を使います。

  • 小さい間隔:4px、8px
  • 中くらいの間隔:12px、16px
  • 大きい間隔:24px、32px、48px

境界半径の重ね合わせ

境界半径のある要素をネストする場合、同心円状の見た目を保つため、パディングの値を加えます。

式:inner_radius = outer_radius - padding

/* Parent container */
.outer {
  border-radius: 16px;
  padding: 12px;
}

/* Child element */
.inner {
  border-radius: 4px;  /* 16px - 12px = 4px */
}

Tailwind の例:

<div className="rounded-2xl p-3">  {/* 16px radius, 12px padding */}
  <div className="rounded">         {/* 4px radius */}
    Content
  </div>
</div>

アイコンの一貫性

アイコンのスタイルを混在させない

同じ UI で、デュオトーン、塗りつぶし、レギュラー、シン、ライトの太さを混在させないでください。

Bad: Using filled home icon + regular settings icon + thin user icon
Good: All icons use regular weight and same size
アクティブ/選択状態を示す

混在ルールの例外:同じアイコンの塗りつぶし版を使って、アクティブ/選択状態を示すことができます。

/* Navigation example */
<Icon 
  icon={isActive ? "home-filled" : "home-regular"} 
  weight="regular"
  size={24}
/>
一貫性のルール
  • すべてのアイコンで太さを統一します(例:すべて「レギュラー」)
  • 同じコンテキスト内でサイズを統一します(例:ナビゲーションアイコンはすべて 24px)
  • フォーカス中/アクティブなアイコンは、ストロークの色を変えるか、塗りつぶし版にします
  • アイコンファミリーを混在させないでください(Phosphor と Heroicons を混ぜないでください)

影とダークモード

ダークモードの方針

ダークモードでは、浮き上がりを表現するための影の使用を避けてください。代わりに次を使います。

  • 控えめな色の境界線
  • 背景色のバリエーション
  • 明度のわずかな調整
/* Light mode */
.card-light {
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

/* Dark mode - use border instead */
.card-dark {
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: hsl(220, 10%, 12%);
}
ニューモーフィックデザインの注意点

ニューモーフィックデザインは、奥行きとリアルな印象を生み出すために影に大きく依存します。ライトモードではうまく機能しますが、ダークモードでは問題が生じることがあります。控えめに使いましょう。

アニメーションとイージング

リニアイージングを避ける

リニアな動き(y=x)は機械的で不自然に感じられます。

滑らかなイージング関数を使います。

/* CSS */
/* Bad */  transition: all 0.3s linear;
/* Good */ transition: all 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);

/* Common easings */
ease-out:     cubic-bezier(0.0, 0.0, 0.2, 1)    /* Decelerating */
ease-in-out:  cubic-bezier(0.4, 0.0, 0.2, 1)    /* Smooth both ends */
spring:       Custom spring physics              /* Bouncy, natural */
Framer Motion の例
<motion.div
  initial={{ opacity: 0, y: 20 }}
  animate={{ opacity: 1, y: 0 }}
  transition={{ 
    duration: 0.4,
    ease: [0.4, 0.0, 0.2, 1]  // Custom cubic-bezier
  }}
>
  Content
</motion.div>

マイクロインタラクション

プレミアムな印象を与える、小さなインタラクティブな工夫を加えます。Linear、Notion、Supabase などの企業は、こうした工夫に優れています。

マイクロインタラクションの例
  • 滑らかな色の変化を伴う、ボタンのホバー状態
  • クリック時の控えめな拡大縮小(scale: 0.98)
  • 読み込み中のスケルトンアニメーション
  • スライドインアニメーション付きのトースト通知
  • チェック時のチェックボックスアニメーション
  • 境界線の色が変化する、入力欄のフォーカス状態
  • 表示の遅延とフェードインを伴うホバーツールチップ
/* Button with micro-interaction */
<button className="
  px-4 py-2 rounded-lg
  bg-blue-600 hover:bg-blue-700
  transform transition-all duration-200
  hover:scale-[1.02] active:scale-[0.98]
">
  Click me
</button>

レイアウトの代替案

データの表示形式は、テーブルやカードだけではありません。

次のような代替レイアウトを検討してください。

  • タスク管理にはカンバンボード
  • 時系列データにはタイムラインビュー
  • ダッシュボードには弁当箱型のグリッドレイアウト
  • 区切り線付きのリストグループ
  • 階層データにはツリービュー
  • メディアにはギャラリー/メイソンリーグリッド
  • アコーディオン/折りたたみセクション

テーブルやカードのパターンにとらわれず、より魅力的なインターフェースを作りましょう。

デザインのインスピレーション

見て学ぶ

優れた作品を研究して、デザインのセンスを磨きましょう。

参考にするプラットフォーム:

  • Pinterest - UI デザインのパターンとインスピレーション
  • Twitter - デザインに関するスレッドや専門家のヒント
  • cosmos.so - コンポーネントとパターンのライブラリ
  • Behance - プロのデザインポートフォリオ
  • Dribbble - UI デザインの作品やコンセプト
模倣して学ぶ

「あなたより優れた誰かが素晴らしいものを作っているものです。そこから学びましょう。」

プロセス:

  1. 気に入ったデザインを見つけます
  2. 何がうまく機能しているのか分析します
  3. 手法を学ぶために要素を再現します
  4. 自分のスタイルに合わせて応用し、取捨選択します

質の高い作品に触れ、意識的に練習を重ねることで、センスは磨かれていきます。

追加リソース

コード例と実装の詳細については、examples.mdを参照してください。

参考:HSL カラーツールの kigen.design/color。

コメント