「似たようなコンポーネントがどんどん増えていく…」
「バリエーションが増えるたびに新しいコンポーネントを作成している…」
「プロパティとバリアントは知っているけど、うまく活用できていない…」
Figmaでのデザイン作業で、こんな悩みを抱えていませんか?
実は、プロパティとバリアントを効果的に活用することで、コンポーネント数を最小限に抑えながら、多様なデザインバリエーションを実現できます。
この記事では、複雑になりがちなコンポーネント運用を整理し、効率的な設計方法を具体的に解説します。
プロパティとバリアントの基本的な使い方から、実践的な活用テクニック、さらには運用のコツまで、現場の事例を交えながらご紹介します。
明日のデザイン作業から即実践できる、コンポーネント設計の具体的なテクニックをお伝えしていきましょう。
1. プロパティとバリアントの基本を押さえる
コンポーネントの柔軟性を高めるためのFigmaの強力な機能が、プロパティとバリアントです。この2つの機能の特徴と違いを理解することが、効率的なコンポーネント設計の第一歩となります。
1-1. プロパティとバリアントの特徴と違い
プロパティとは
インスタンスごとにカスタマイズ可能な要素を定義する機能です。
主な特徴:
- 個別のインスタンスで値を変更可能
- テキスト、ブール値、インスタンスの入れ替えなどが設定可能
- デフォルト値の設定が可能
使用例:
ボタンコンポーネントの場合
├── テキスト:ラベルの文言
├── ブール:アイコンの表示/非表示
└── インスタンス:アイコンの種類
バリアントとは
1つのコンポーネントの異なるバージョンをまとめて管理する機能です。
主な特徴:
事前に定義したバリエーションの中から選択
複数の要素を一括で切り替え
プロパティと組み合わせて使用可能
使用例:
ボタンコンポーネントの場合
├── スタイル:Primary/Secondary/Ghost
├── サイズ:Small/Medium/Large
└── 状態:Default/Hover/Disabled
1-2. 使い分けのポイント
プロパティを使うべき場合:
インスタンスごとに異なる値が必要
- ボタンのラベルテキスト
- カードの見出し
- 画像の差し替え
動的な表示/非表示の制御
- オプション要素の切り替え
- 状態による表示制御
- 条件付きの要素表示
バリアントを使うべき場合:
複数の要素が同時に変化
- スタイルの切り替え
- レイアウトパターン
- 状態による見た目の変化
定型的なバリエーション
- サイズ展開(sm/md/lg)
- カラーテーマ
- デバイス別レイアウト
1-3. 基本的な設定方法
プロパティの設定手順:
- メインコンポーネントを選択
- プロパティパネルを開く
- 必要なプロパティを追加
- デフォルト値を設定
バリアントの設定手順:
- 複数のコンポーネントを選択
- 「Combine as variants」を実行
- プロパティ名を設定
- バリアント名を整理
このセクションの特徴:
- 基本概念の明確な説明
- 具体的な使用例の提示
- 実践的な使い分けの基準
- 具体的な設定手順の解説
次のセクションに進む前に、この内容についてご確認いただければと思います。
2. プロパティの効果的な活用法
プロパティは、コンポーネントの柔軟性を高める重要な機能です。ここでは、それぞれのプロパティタイプの特徴と、実践的な活用方法を解説します。
2-1. テキストプロパティ
最も基本的で使用頻度の高いプロパティです。テキストの内容を自由にカスタマイズできます。
設定例:カードコンポーネント
├── Title:見出しテキスト
├── Description:説明文
└── Category:カテゴリラベル
活用のコツ:
- デフォルトテキストは実際の文例を使用
- 文字数制限の目安を記載
- 改行の有無を考慮
2-2. ブールプロパティ
要素の表示/非表示を制御する強力な機能です。オプション要素の管理に最適です。
設定例:ボタンコンポーネント
├── hasIcon:アイコンの表示切り替え
├── isLoading:ローディング状態
└── isDisabled:無効状態
命名規則:
- is-:状態を表す(isDisabled, isActive)
- has-:要素の有無(hasIcon, hasImage)
- show-:表示制御(showBadge, showLabel)
2-3. インスタンススワップ
コンポーネント内の要素を別のコンポーネントと入れ替えられる機能です。
設定例:アイコンボタン
└── Icon Slot
├── Default:基本アイコン
├── Alternative:代替アイコン
└── Custom:カスタムアイコン
使用時の注意点:
- サイズを統一する
- 入れ替え可能な要素を明確に
- デフォルト値を適切に設定
2-4. 実践的な組み合わせ例
フォームフィールド
Text Properties:
├── Label:フィールドラベル
├── Placeholder:プレースホルダー
└── Helper Text:補助テキスト
Boolean Properties:
├── isRequired:必須マーク
├── hasError:エラー状態
└── showHelper:ヘルプテキスト表示
Instance Swap:
└── Status Icon:状態アイコン
カードコンポーネント
Text Properties:
├── Title:タイトル
└── Description:説明文
Boolean Properties:
├── hasImage:画像の有無
├── hasActions:アクション要素
└── isFeatured:特集表示
Instance Swap:
├── Thumbnail:サムネイル画像
└── Action Buttons:アクションボタン
2-5. プロパティ設計のベストプラクティス
命名の一貫性
推奨:
- 役割が明確な名前
- プレフィックスの活用
- キャメルケースの使用
非推奨:
- 抽象的な名前
- 一貫性のない命名
- 特殊文字の使用
デフォルト値の設定
ポイント:
- 最も使用頻度の高い状態
- エラーが起きにくい値
- チーム内で統一された表現
組み合わせの考慮
チェックポイント:
- プロパティ間の依存関係
- 状態の組み合わせパターン
- エッジケースの確認
3. バリアントの設計テクニック
バリアントは、コンポーネントの異なるバージョンをまとめて管理できる強力な機能です。適切に設計することで、少ないコンポーネント数で多様なバリエーションを実現できます。
3-1. 基本的なバリアント構造
単一のプロパティによるバリアントから見ていきましょう。
サイズバリアント
Button/Size
├── Small
├── Medium
└── Large
スタイルバリアント
Button/Style
├── Primary
├── Secondary
└── Ghost
状態バリアント
Button/State
├── Default
├── Hover
├── Active
└── Disabled
3-2. 複数バリアントの組み合わせ
より複雑なコンポーネントでは、複数のバリアントを組み合わせることができます。
Button
├── Size = sm
│ ├── Style = primary
│ │ ├── State = default
│ │ ├── State = hover
│ │ └── State = disabled
│ └── Style = secondary
│ ├── State = default
│ ├── State = hover
│ └── State = disabled
└── Size = lg
└── ... (同様の構造)
設計のポイント:
- 主要な変数を上位に配置
- 論理的な階層構造を意識
- 必要なバリエーションのみを作成
3-3. バリアントグループの活用
関連するバリアントをグループ化することで、管理が容易になります。
Card/Layout
├── Horizontal
│ ├── With Image
│ └── Text Only
└── Vertical
├── With Image
└── Text Only
Alert/Type
├── Info
│ ├── With Icon
│ └── Text Only
├── Success
│ ├── With Icon
│ └── Text Only
└── Error
├── With Icon
└── Text Only
3-4. バリアント設計の実践テクニック
命名規則の統一
推奨パターン:
- Size: sm, md, lg
- Style: primary, secondary
- State: default, hover, active
バリアントの優先順位
一般的な順序:
- サイズ(視覚的な差が大きい)
- スタイル(デザインの違い)
- 状態(インタラクション)
プロパティとの組み合わせ
バリアントで管理:
- 定型的なバリエーション
- 複数要素の一括変更
- デザインパターン
プロパティで管理:
- カスタマイズ可能な要素
- 動的な表示制御
- インスタンス固有の値
4. 実践的な運用テクニック
プロパティとバリアントの基本を理解したら、次は実践的な運用方法です。ここでは、コンポーネント数を最小限に抑えながら、効率的に管理する具体的なテクニックを紹介します。
4-1. コンポーネント数の削減方法
似たようなコンポーネントが増えがちな要素を、プロパティとバリアントで効率化する方法を見ていきましょう。
Before(非効率な例):
└── Cards/
├── BlogCard
├── BlogCardWithImage
├── BlogCardFeatured
├── ProductCard
├── ProductCardLarge
└── ProductCardWithBadge
After(最適化後):
└── Cards/
├── Blog
│ └── Properties:
│ ├── hasImage(ブール)
│ ├── isFeatured(ブール)
│ └── Variants:
│ └── Size(sm/md/lg)
└── Product
└── Properties:
├── hasBadge(ブール)
└── Variants:
└── Size(sm/md/lg)
4-2. 更新と管理の効率化
プロパティの更新戦略
優先順位:
- 全体に影響する要素
- カラー
- タイポグラフィ
- スペーシング
- 個別の調整
- アライメント
- サイズ調整
- 表示/非表示
バリアントの更新方法
効率的な更新手順:
- メインバリアントでの変更
- 他バリアントへの反映
- 個別調整の適用
4-3. 開発チームとの連携
命名規則の統一
開発フレンドリーな命名:
├── キャメルケース
│ └── hasIcon, isDisabled
├── プレフィックス
│ └── btn, card, input
└── 一貫性のある用語
└── sm, md, lg
ドキュメント化のポイント
必要な情報:
├── コンポーネントの目的
├── プロパティの一覧と使用方法
├── バリアントの組み合わせパターン
└── 制約事項や注意点
まとめ:明日から実践できるプロパティとバリアントの活用ポイント
ここまで、プロパティとバリアントの効果的な活用方法について詳しく見てきました。
最後に、実践的なポイントをチェックリスト形式でまとめます。
プロパティ活用のチェックリスト
1.テキストプロパティ
- 適切なデフォルト値の設定
- 文字数制限の考慮
- 多言語対応の検討
2.ブールプロパティ
- 命名規則の統一(is-, has-, show-)
- デフォルト状態の設定
- 表示/非表示の制御方法
3.インスタンススワップ
- 差し替え可能な要素の選定
- サイズや制約の統一
- デフォルトコンポーネントの設定
バリアント設計のチェックリスト
1.基本設計
- 主要なバリエーションの洗い出し
- 論理的な階層構造の設計
- 命名規則の統一
2.組み合わせの検討
- 必要な組み合わせの特定
- 優先順位の設定
- 不要なバリエーションの削除
明日からできること
小さなところから始めましょう:
1.既存コンポーネントの見直し
- 重複したコンポーネントの統合
- プロパティ化できる要素の特定
- バリアント化できる要素の整理
2.新規コンポーネントの作成
- プロパティとバリアントの使い分け
- 拡張性を考慮した設計
- ドキュメントの準備
完璧な設計を目指すのではなく、徐々に改善していく姿勢が重要です。
この記事で紹介したテクニックを、プロジェクトの状況に応じて柔軟に取り入れていってください。