見出し画像

Figma の Component Properties を学ぶ

こんにちは、ふじけん(@kenshir0f)です。
Figma Config 2022 で新しく追加された Component Properties によって UI コンポーネントをより再利用しやすい形で作ることが可能になりました。

この記事では Figma の Component Properties を使った UI コンポーネントについて、使い方とメリットなどについてまとめたいと思います。
公式のチュートリアルはこちら↓

Component Properties とは?

Component Properties (コンポーネントプロパティ) は名前の通り UI コンポーネントにプロパティを設定することができる機能です。プロパティは以下の3つを設定することができます。

  1. Boolean プロパティ (要素の表示・非表示を切り替えられる)

  2. Text プロパティ (テキストをプロパティとして管理できる)

  3. Instance swapプロパティ (要素内のインスタンスを切り替えられる)

とはいえ、プロパティ名だけではどう使うのがよいのか分かりにくいと思うので、実際にコンポーネントを作りながら  Component Properties のメリットなどを紹介したいと思います。

Component Properties の設定方法

サンプルとして、よくあるテキスト入力フォームをベースに Component Properties を設定してみます。まず上から「ラベル」「入力フォーム」「エラーメッセージ」を並べたコンポーネントを作成します。

この例では縦のオートレイアウトでコンポーネントを組んでいます

このコンポーネントを使って、Component properties について深ぼってみます。

1. Boolean プロパティ (表示・非表示) の設定

Boolean は表示・非表示を切り替えられるプロパティです。基本的な入力フォームでは普段エラーメッセージ表示されていませんが、入力に不備があったときに表示したい要素なので、この Boolean プロパティをエラーメッセージに割り当てて表示・非表示を管理してみたいと思います。

コンポーネントを選択した状態で、画面右にあるパネルの中ら、 Properties の右にあるプラスボタンをクリックします。

画面右の Properties にあるプラスボタンを押す

Create new property のダイアログが表示されるので、その中から Boolean を選択します。

Boolean を選択

次に component property の登録画面が表示されます。
Name はプロパティのニックネームのようなもので、Value は初期値を指しています。
今回はエラーメッセージの表示・非表示を切り替えたいため Name を isError とし、初期値は非表示でよいため Value に False を選択します。
値が入力できたら Create property をクリック。

Name に isError 、 Value を False 

これで Boolean プロパティがコンポーネントに追加されました。試しにコンポーネントをクリックすると、画面右のパネルの Properties に追加した Boolean のプロパティが表示されていると思います。

isError の Boolean プロパティが追加されました

次に、このプロパティをコンポーネント内のエラーメッセージに割り当てます。コンポーネント内のエラーメッセージを選択した状態で、画面右のパネルの Layer の右側にある Apply boolean property をクリックします。

エラーメッセージを選択して、画面右の Layer の右にある Apply boolean property をクリック

先程作成した Boolean プロパティを選択します。

先程つくった isError を選択

すると、コンポーネントの中にあったエラーメッセージが非表示になりました。

コンポーネント内のエラーメッセージが非表示に

これは Boolean プロパティの初期値を False にしていたため非表示になっています。画面左のレイヤーパネルを見ると、実際にはエラーメッセージのレイヤーは残っていて消えずに非表示になっているのがわかります。

Error Message のレイヤーが非表示扱いになっています

これで Boolean プロパティをエラーメッセージに割り当てられました。

Boolean プロパティを使う

実際に使うときは、インスタンス(コンポーネントを複製したもの) を選択して、画面右のトグルを押すだけで表示非表示を切り替えることができます。

使うときに画面右のパネルからエラーメッセージの表示非表示を切り替えれる

これ実は Variants でも似たようなことができたのですが、表示非表示のためにいくつもコンポーネントを定義しなければならなかったので、 Component Properties を使うほうが管理が遥かに楽になると思います。

また複数の要素を一つの Boolean プロパティで管理することもできるので、複雑になっているコンポーネントを整理するときに役立つかもしれません。

2. Text プロパティ (テキスト) の設定

Text プロパティは名前の通りテキストを設定できるプロパティです。要素内のテキストをダブルクリックすればテキストを編集できるので、このプロパティいらないのでは?と思うのですが、設定するといくつかメリットがあるので紹介したいと思います。

まずは Boolean で設定したときと同様に、コンポーネントを選択して Properties 横のプラスボタンから Text を選択します。

コンポーネントを選択して画面右のパネルの Properties の右のプラスマークから Text を選択

今回は例としてラベルのプロパティに割り当ててみたいので、Name を Label に、Value にメールアドレスを入力します。

Name に Label, Value に メールアドレス

次にコンポーネント内のテキストを選択した状態で、画面右のパネルの Content の右にあるボタンから、先程つくった Text プロパティを選択します。

画面右のパネルの Content 右のボタンから作成したプロパティを選択

これで、Text プロパティを割り当てることができました。実際にコンポーネント内のラベルのテキストが Value で入力したものに置き換わっていることがわかります。

「好きな食べ物」が Value で入力していた「メールアドレス」に

Text プロパティを使う

実際に Text プロパティを使うときは、コンポーネントを選択した状態で画面右のパネルからテキストを入力して UI 上のテキストを変えることができます。

画面右の Label からテキストを変更できます

テキストプロパティは複数のコンポーネントのテキストを一括で修正するときに役に立ちます。例えば、メールアドレスの入力フォームを電話番号に変えたい時に、テキストを一つずつコピペしなくても一括で変えることができます。多くのページで使われているボタンの文言などの一括変更などで便利です。

テキストを画面右のプロパティから一括変更できる

副次的な効果として、コンポーネントの要素を直接編集せずに UI を調整できるためうっかり動かしてしまったなどのミスも防げます。

3. Instance swap プロパティの設定

Instance プロパティはコンポーネント内で使われているインスタンスを切り替えることができるプロパティです。コンポーネント内で使われているアイコンを切り替えるときが一番利用シーンとしてイメージしやすいかと思います。

今回はこの Instance プロパティを使って、サンプルで作った入力フォームをアイコンを切り替えることでプルダウンの選択フォームや、パスワードの入力フォームに見えるように変更してみたいと思います。
前準備として、簡単なアイコンをコンポーネントに登録して3つほど用意しました。このときコンポーネント名を Icon/[icon名] のようにスラッシュで区切っています。

プルダウン用の下向き矢印、目、目に斜線のアイコンをコンポーネントで用意

次に、入力フォームの中にアイコンを貼り付けます。今回は入力フォームを横のオートレイアウトで組んでいたので、下の動画では Spacing mode を Space between に変える手間が発生しています。

入力フォームの中にアイコンを追加

これで Instance swap を設定できるように、コンポーネント内にインスタンスを追加できました。
次に Boolean, Text プロパティと同様に、コンポーネントを選択した状態で Properties 右のプラスボタンから Instance swap を選択します。

画面右のパネルの Properties の右の + から Instance swap を選択

プロパティの登録として、 Name に Icon 、 Value に先程追加したアイコンを選択します。

先程作ったアイコンを選択

これで、Instance swap プロパティがフォーム内のアイコンに割当られました。実際にコンポーネントをクリックすると、Properties の欄の Icon に Instance swap が表示されていると思います。

コンポーネントに Instance swap が追加されました

Instance swap プロパティを使う

実際に Instance swap プロパティを使うときは、インスタンス(アイコンではなく入力フォーム全体)をクリックして画面右のパネルのアイコンから他のアイコンを選択することができます。

Instance swap でアイコンを右のパネルから変更

Instance swap プロパティはアイコン以外で使うシーンが今のところ思いつかないので、こういう使い方便利だよーとかあればぜひ教えていただけますと🙏

Component properties を組み合わせて使う

Component properties を複数登録しておくと、色んなバリエーションの UI を一つのコンポーネントで実現できるようになります。エラーメッセージがある場合、そのエラーメッセージの値、のように

複数のプロパティでの入力フォームをカスタマイズする例

Variants との使い分け

Component Properties と Variants の使い分けとしては、色やサイズ、状態の違いなど見た目が異なるコンポーネントが必要な場合は Variants 、コンポーネントが持つ値によって表示を変えたい場合は Component Properties を使うのがよいと思います。
例えばボタンのサイズ、Disabled や Hover の状態などは Variants で管理してボタン内のテキストやアイコンは Component Properties で登録する、みたいなイメージです。

Variants の下の + からコンポーネントを複製

このとき Variants の下にあるプラスボタンを押すと Component Properties の設定を引き継いだままコンポーネントを複製することができて便利です。

さいごに

Component properties は設定がちょっと複雑で手間がかかるかもしれませんが、定義されているコンポーネントの数が減って管理が楽になるのと、Text プロパティなど後からテキストを変更するときに毎回クリックしてコピペする動作がなくなるのでだいぶ便利に感じました。

全ての要素を Component Properties で管理するのは難しいと思うので、まずはよく値を変えて使っているコンポーネントからプロパティを設定して、使いながら少しずつ調整していくのがよいかと思います。

Figma Config 2022 から少し時間が経ってしまいましたが、より効率的に UI デザインできるようになればと思い Component properties についてまとめてみました。

ではでは👋

うちのごまお(ブリティッシュショートヘア)のおもちゃとチュールになります🐈