SketchからFigmaへ移行してみた話

現在関わっている業務ではデザインツールとしてをSketchが使われていましたが、諸事情によりFigmaに移行する必要が出てきたので、SketchデータをFigmaにインポートする方法とFigmaを使ってみて良いと思った機能の一部をご紹介したいと思います。

尚、本記事は、すでにSketchを使ったことがある人で今後Figmaへ移行する予定のある人、もしくはFigmaをこれから使ってみようと思っている人向けの記事となります。

# Sketchで作成したファイルをFigmaに取り込む方法
SketchファイルをFigmaにインポートすること自体はとても簡単です。
手順は以下の通り。

1 . Figmaを起動
2 . 「ファイルをインポート」をクリック
![01_ファイルをインポート.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/acf97969-0111-cb61-4788-6643625e115f.png)

3 . インポート対象のSketchファイルを選択
![02_ファイルを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/de5fcb4a-47ea-a4e7-d1f4-c398aa3da577.png)

以上でSketchで作成したファイルをFigmaに取り込むことができます。
![03_インポート中.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/3c78865c-caa1-871a-168b-65ac3e93654e.png)

取り込み自体は簡単ですが、Sketchファイルの作り方によってはインポート後に調整が必要になってくるケースがありますので、実際に遭遇した問題と解決方法について解説したいと思います。


# 取り込み後の問題点
## サムネイルが正常に表示されない
インポートしたファイルを見てください。なにやら状況が思わしくありません。。。
今回のケースでは文字が表示されていないのが問題となります。
![04_インポート完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/e40a6f19-9f20-0a5c-b348-02d002064db5.png)

早速、クリックして取り込んだデータを確認してみましょう。
![05_インポートデータの表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/d2a8932a-3883-9e1d-934d-8a4f8edeca4f.png)

ホーム画面のサムネイルが正常に表示されないのは指定フォントが存在しないことが原因でした。

### 代替フォントの適用
こちらはSketchで作成していた際に指定フォントがインポート先のPCに存在しない、または名称が違うため発生する物なので、代わりのフォントを指定しましょう。
![06_代替フォント適用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/18f1ff41-f617-544e-c0bc-47e62e6de6f2.png)

これでテキスト部分が表示される様になったかと思います。
![07_代替フォント適用後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/08fd5e66-2584-03de-7afa-e11c83f0bc5f.png)

サムネイルも問題なく表示されました。
![08_サムネイル表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/0a074b53-ad83-a48b-016e-e584c61c18c7.png)


# 取り込み後に気がついたこと
## スライスの表示について
画像の書き出し設定を行う「スライス」機能について、Figmaではスライス設定の表示がデフォルトで「有効」になっているため、スライス設定がされているSketchファイルをFigmaにインポートすると以下の様に表示されます。赤線で囲った部分にグレーの点線が描画されているのがスライス設定している領域になります。
![09_スライス表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/04665300-63e4-8cf0-5202-0648dcabae81.png)

Sketchではこの様な描画がされていないので一瞬戸惑ってしまいましたが、レイアウトによっては見難いことがあるのでその場合はメニュー「`表示 > スライスの表示`」のチェックを外しましょう。
![10_スライス表示の無効.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/f406aada-6103-31c0-9c12-62e12e698de6.png)

これですっきりしました！
![11_スライス表示の無効.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/30ad6f0b-6188-b879-391c-aab594d1c026.png)


## コンポーネントについて
再利用できるデザイン要素を効率的に管理する機能としてコンポーネントがあります。
Sketchでは「シンボル」として設定していたコンポーネントですが、インポート後のFigmaでもしっかりとコンポーネントとして引き継がれています。またSketchにはシンボル名に「半角スラッシュ（`/`）」を入れることで階層表現することができるのですが、Figmaにインポート後も問題なく引き継がれています。

以下はボタンのコンポーネントの定義になります。
![12_コンポーネントの階層.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/f1da19ff-d3fd-c804-c0fd-0bc89a3e5b16.png)

**ボタンの階層化例**
```
btn/                         ボタン
 └ large/                    ラージサイズ
    ├ primary                プライマリーボタン
    └ secondary              セカンダリーボタン
```

例えばサインアップボタンで使用しているコンポーネント`primary`を`secondary`に変更してみましょう。
![13_コンポーネントの階層部分.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/2ccd7978-0aa2-1e48-022c-580c0f4a3a23.png)

すると以下の様にテキストは「サインアップ」と保持されたまま外観だけ変更されました。
![14_コンポーネントの変更例.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/926a2c31-9f24-c1a6-59ea-c08095dd73b2.png)

# Figmaの便利な機能 Variants（バリアント）について
Figmaにはさらにコンポーネントを効率よく管理する **Variants（バリアント）** という機能があります。
Variantsを使用しない場合では、上記でも説明した様に複数のコンポーネントを階層表現で管理しているため、コンポーネントの外観の切り替えは上位階層から順に下位階層まで選択することになりますが、Variantsを使用すると複数のコンポーネントを一つにまとめることでき、属性（プロパティ）を定義することでダイレクトに外観を切り替えることができます。

例えば以下の種類があったとします。

**ボタンの階層化例**
```
btn/                         ボタン
 ├ type/                     種類
 │  ├ primary               プライマリーボタン
 │  └ secondary             セカンダリーボタン
 └ state/                    状態
    ├ basic                  通常
    ├ push                   押下
    └ disable                非活性
```

全てのボタンパターンを作成して、全てを選択、右側の「`バリアントとして結合`」をクリックします。
![15_バリアントの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/045f6a9d-cab2-71cf-a951-b20fd4a59aaf.png)

するとプロパティパネルが表示されます。ボタンの階層の深さに応じてプロパティが設定されますので、ダブルクリックするとプロパティ名を変更することができます。
![16_バリアントの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/ecf6dd62-2ed2-3ebc-ab2b-214d3178738c.png)

ボタンの階層化例に従い、プロパティ1を「`種類`」、プロパティ2を「`状態`」にしてみます。
![17_バリアントの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/6b869a9a-60ac-2c71-cd65-88a315407920.png)

それでは作成したコンポーネントを画面に配置してみましょう。
「`アセット`」の「`ローカルコンポーネント`」に作成したコンポーネントがありますので、画面領域にドラッグ・アンド・ドロップします。
![18_コンポーネントの使用例.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/30e0c78e-aab6-7236-dfed-d255262cf845.png)

配置したコンポーネントはデフォルトでは種類は「`プライマリーボタン（primary）`」、状態は「`通常（basic）`」となっていますが、ボタンのデザインを変更する場合はプロパティパネルの種類、状態を変更するだけでボタンのデザインを変えることができます。
![19_コンポーネントの使用例.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73748/e197d889-ef5d-7361-ec53-92722dbb732d.png)


# まとめ
今回SketchからFigmaへの移行を通して、SketchデータをFigmaに取り込むこと自体はデータの作りにもよりますが比較的容易でした。
また、他の方の事例を見るとデザイン崩れが起きるケースも多く見られたので覚悟していましたが意外とすんなり取り込めたので安心しました。
FigmaにはVariantsなどの便利な機能があるので、これらの機能を利用して効率の良いUIデザインを作成していければと思います。