ボタン・入力欄などを、状態と種類(バリアント)ごとに部品として定義する。
コンポーネントは、ボタン・入力欄・カードなど、何度も使う部品です。Figma のコンポーネントと、コードのコンポーネント(React・SwiftUI・Jetpack Compose など)が1対1で対応していると、デザインがそのまま実装に移せます。
コードのコンポーネントは props(外から渡す設定)で見た目や動きを変えます。Figma のバリアントやプロパティの名前と値を、props にそろえるのがこつです。
| Figma | コード(例) | 注意 |
|---|---|---|
| バリアント:Type = Primary / Secondary | variant="primary" | 名前と値の綴りまでそろえる |
| バリアント:Size = S / M / L | size="md" | サイズは数を絞る |
| 真偽のプロパティ:アイコンあり | icon={...} | 「あり・なし」ではなく何を入れるか |
| State = Disabled / Loading | disabled・loading | 渡す値になる状態 |
| State = Hover / Pressed / Focus | (props ではない) | 操作でブラウザや OS が切り替える。見た目だけ決める |
ホバー・押下・フォーカスは、props ではなく操作で自動的に変わる状態です。デザインでは全部の見た目を決めますが、エンジニアに「この状態を渡す」設定はありません。一方、無効・処理中・エラーはコードから渡す状態です。この違いを知っておくと、バリアントの作り方が実装に近づきます。
面接ではこう答える
コンポーネントは、ボタンや入力欄のように何度も使う部品です。Figma のコンポーネントとコードのコンポーネントが1対1で対応していると、デザインがそのまま実装に移せます。そのために、Figma のバリアントやプロパティの名前と値を、コードの props にそろえます。例えば Type = Primary なら variant="primary" です。ホバーや押下のように操作で変わる状態は props ではないので、見た目だけ決める、という区別もしています。
デザイナーとの関わりバリアントの名前を props にそろえるだけで、受け渡しの質問が大きく減ります。