Figmaで制作効率をUPするために意識してやっていること

## これは何

Figmaで制作効率をUPするために意識してやっていることをまとめてみました

## 基本は`Auto layout`で組む

Auto layoutとは、要素にpaddingとgapを指定して、子要素に応じて自動でレイアウトを調整してくれる機能です。

例えばpaddingを上下8px 左右16px、gapを4pxに指定した要素を用意します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/35f532f1-f4fe-f2d3-2efd-43cfc9560c72.png)

ここに中身を増やすと、伸びた中身に応じて親要素が伸びてくれます。
もちろんこの時に指定した指定したpaddingと子要素間のgapも保ってくれます。

これにより、CSSでFlexboxを使っている時のような挙動が実現できます。


![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/204e7f66-d57c-3e81-e4a5-bc84084eb5fb.png)

例のようにボタンに使うのはもちろん便利ですが、自分はボタン以外にもリストやテーブル、ギャラリー、さらにはページ全体にもAuto layoutを使っています。

なんならAuto layoutにしていないFrameはほぼありません。

その理由はなんと言っても、「子要素に応じて親要素のサイズを調整してくれる」ことです。

UIを作っているときに、一度作ったものをアップデートしないことはほぼないと思います。

例えばテキストを変えたり画像のサイズを変えたりコンテンツを増やしたり...

こうした変更をしていくたびに全体のレイアウトを調整していると、塵も積もればでどんどんと時間を取られてしまいます。

しかし、あらゆる要素にAuto layoutを指定しておけば、要素に増減があっても勝手にいい感じにレイアウトを調整してくれるので、この時間が大幅短縮できます！

### 一部だけ、`Auto layout`の対象外にしたい時

とはいえ、全部をAuto layoutにしようとすると困ることも出てきます。

それは、CSSでいう「postion: absolute」を当てたい要素がある時です。

そういう時には「Absolute position」という機能を使えば大丈夫です！（神機能...）

例えばこんな感じの「ずらし」要素のデザインを実現したいとき🔽

![左上にラベルがあるカードのUI。左上のラベルはカードの外側にずらして配置されている。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/b2ed2a13-9e78-c26e-044c-8d7f84c069fb.png)

そのままAuto layoutを指定すると子要素が整列してしまうので、タイトル部分がカードの中に収まってしまいます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/16e7ee9d-e20b-24ee-5fc3-80292755e22d.png)

こうした時は、position: absoluteにしたい要素を選択して右サイドバーの+アイコン（Absolute position）をクリックします。

これにより、Auto layout内でも自由な位置で配置することができるようになります！

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/cb745b67-20af-d8f0-1706-fa1d8b42e7d6.png)

戻したい時は同じアイコンをクリックすればOKです。

## よく使う要素は`Component`にする

- ボタンや検索フォームのような頻出するUIパーツ
- ヘッダーやフッターなどさまざまなページで使う要素
- リストやギャラリー内のカードなど繰り返し使う要素

こうした頻出するパーツを普通のFrameで作ってしまうと、いちいち作る手間や使われている場所から探してきてコピーする手間、何か変更が加わった時に全部の箇所に反映する手間がかかってしまいます。

こうした「繰り返し使う要素」は`Command + K`でComponent化しておくと

- Componentsから検索して簡単に呼び出せる
- 親（Master component）を変更すれば、一括で子（Instance）に変更が反映される

と便利かつ手早くデザインを作成することができます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/376365ab-010c-7369-e7ac-6bfc2c7c9cb5.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/16d04290-15c4-88d6-6499-41e8cc98713f.png)
-|-

（親であるMaster componentのスタイルを変更すると、子であるInstanceにも変更が反映される）

Componentは分かりやすいようにPageやFileでまとめる箇所を作っておくのがおすすめです。

Professional、Education、OrganizationプランではComponentをPublishすることができ、
任意のファイルで作成したComponentを呼び出して使うこともできます。

Ref [Figmaのコンポーネントについてのガイド](https://help.figma.com/hc/ja/articles/360038662654-Figma%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%89)

### `Component`をオーバーライドする

Componentのコピー（以下Instanceと呼びます）はテキストや色、Effectsなどを一定オーバーライドできます。

![グレーの角丸の横長なボタンと赤くて丸いボタン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/c33d89ec-3dd5-18a0-6784-9162447171cf.png)


例えば画像ようなグレーのボタンをComponentで作成しました。

そのInstanceでら色を変えて赤いボタンにしたりWidthやPadding、Border radiusの値を変えて違った見た目にすることもできます。

（ここまで変えるなら別のComponentとして定義した方が良いとは思いますが）

:::note warn
オーバーライドした箇所は、Master component(元のComponent)を変更しても変更が反映されないので注意が必要です。
:::

### `Instance`を`Swap`する


また、Component内には別のComponentのInstanseを入れることができます。

こうしたComponent内のInstanceは、別のInstanceに入れ替え（Swap）することができます。

![3つのアイコンが定義されたIconというComponentと、IconのInstanceを内包したButtonというComponent](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/5c49908a-79cd-bd90-43d8-d5c0c66cfd30.png)

例えば、このボタンのComponentはIconという別のComponentのInstanceを内包しています。
（ちょっと日本語がややこしいですが…）


この部分を、違うComponentのInstanseに置き換えることができます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/36d52aaf-ccbd-5b36-a792-bd9a17330583.png)

ボタンのアイコンだけ変えたい時などに便利な機能です。

Ref [インスタンスにオーバーライドを適用する](https://help.figma.com/hc/en-us/articles/360039150733#Supported_properties)

### `Variants`で`Component`を管理する

先ほどComponentのオーバーライドについて説明しました。

オーバーライドでは基本的に、Componentの中身の構成要素を増減できません。

なので、「画像があるカードと画像がないカード」のような要素が増減するstateの違いをそのまま1つのComponentで実現するのは難しくなります。

単純に色が違うだけでも「Mainはブルー」で「Secondaryはグレー」のように明確に定義している場合、いちいちInstanseで色を変えるよりもComponentとして定義しておいた方が管理が楽です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/90f697bc-4437-b213-4763-8d4bcfdbbaa9.png)

こうしたバージョン違いをいちいちComponentを分けて作成すると、Componentが膨大に増えて検索性や保守性が悪くなってしまいます。

こんな時に便利なのが、「Variants」という機能です。

Variantsを使うと、複数のComponentをグループとしてまとめることができます。

作成方法は簡単です。
Variantsにしたい複数のComponentを選択した状態で、「Combine as Variants」を選択します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/8c84fe5b-e51d-67d9-e53c-64f9fe24bda1.png)

もし既にVariantsを作成していてさらに追加したい場合は、Variantsを選択した時に出てくる＋ボタンをクリックするか、追加したいComponentをVariants内にドラッグ&ドロップします。

:::note warn
Componentでない通常のFrameやInstanseは追加できないので注意
:::

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/ae7d6f6c-fe7a-181e-c51a-67456950ef6e.png)

ComponentがVariantsになっている場合は、右サイドバーのComponentのメニューから簡単に切り替えることができます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/bb5a640a-d40c-b4a1-d002-f2dd2c7f2781.png)

https://help.figma.com/hc/en-us/articles/360056440594

## `Styles`を使ってTypographyやColorを管理する

Figmaにはよく使う色やタイポグラフィ（`font-family`,`font-size`,`font-weight`,`text-decoration`など）を登録しておくことができます。

いちいちスポイトを使ったり入力する手間が省けますし、同じファイル内で「似ているけど微妙に違う色やテキスト」が乱立することを防げます。

また、`Styles`に登録した内容はいつでも編集できて全体に反映されるので、途中で仕様が変わった時などの対応も楽ちんです。

### `Styles`に登録する

:::note
色の登録方法で紹介しますが、タイポグラフィの時は「Text」で同じことをすればOKです
:::

Stylesに登録したい色を選択した状態で、「Design」タブの「Fill」または「Stroke」のメニューボタンをクリックします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/19aec85f-e933-efdc-bd8f-3558baa09a40.png)

表示される「Color styles」というドロップダウンで「＋」ボタンをクリックします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/fb127808-169b-43be-0728-a4f38ec2338c.png)

「Create new color style」というドロップダウンが表示されるので、「Name」にお好みの名前をつけて「Create style」で作成します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/b71217d0-63de-a153-1b1f-a204b1b0e29d.png)

### `Styles`に登録した色やタイポグラフィを使用する

登録されたStylesは、「Fill」または「Stroke」のメニューボタンをクリックすると表示されるドロップダウンから選択できます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/1c55ddf0-609e-9e91-5163-196cd80c4932.png)

また、Nameを「/」で区切るとグルーピングすることができます。

例えばこんな感じでStylesを登録すると🔽

```
Gray/10
Gray/20
Gray/30
Green/10
Green/20
Green/30
```

表示されるときはこんな感じで表示されます🔽

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/575b6a7d-5484-be6e-1de3-fe6893c9dd68.png)


## プラグインを活用する

Figmaにはさまざまな便利なプラグインがあります。
こちらの記事でまとめているので、ぜひご覧ください。

https://qiita.com/kabechiyo13/items/259dd4844c4eac9f1a4f

## ショートカットコマンドを活用する

Figmaには便利なコマンドもたくさん用意されています。
個人的によく使うコマンドやおすすめのコマンドをまとめているのでこちらをご覧ください

https://qiita.com/kabechiyo13/items/467adc107bde2c07195c