FigmaでMixed Reality ToolkitのUIコンテンツをラフスケッチ

# figmaでMixed Reality ToolkitのUI設計とラフスケッチが作られる

FigmaというUIデザインツールしっていますか？画面(フレーム)毎にレイアウトデザインして、ボタンgなどにアクションを付けることで紙芝居が作れるツールで、それを共有してエビデンス残したり、場合によっては複数人で編集してUIプロトタイピングして行けるというサービスです。ブラウザだけで利用できます。
公式ドキュメントに先日Mixed Reality ToolkitのUX Building Blocksのコンポーネントがセットになった「Figma Toolkit」というものが公開されていました。
2D版ではあるのですが、UIの流れなどをサクサク作っていけるので、以下の用途ではかなり使いやすい印象があります。

* Mixed Reality Toolkit 使う予定ある。
* UIレイアウトをある程度実態に近い形で作りたい
* 紙芝居的に動きのイメージなどのUI周りのプロトタイピングをやりたい
* 解説用に画面のレイアウトを入れたスクショをきれいに作りたい
* 複数人でアイデアだししながらUI作っていきたい

基本的には公式サイトの情報を参考にしていますので、そちらを見るだけでもできると思いますが、少しだけ手間取ったところ含めて使ってみた感じを紹介します。
【公式ドキュメント】
https://docs.microsoft.com/en-us/windows/mixed-reality/design/figma-toolkit?WT.mc_id=MR-MVP-5003104

どういうのが作れるかですが例えば以下のようなものになります。
ハンドメニューを使ってオブジェクトを作ったり、そのオブジェクトを操作できるアプリを作るとして捜査をFigmaで作ってみた例です。

適当に作ったUIデザインは以下の通りです。参照用のリンクは[こちら](https://www.figma.com/file/TuobHaOojgiwF31k90UMqJ/Figma-Toolkit-Demo?node-id=2440%3A805)。右上の再生ボタンを押すとスライドショーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/6157ea61-6ed7-0c70-3e01-8da8c99326bb.png)


## とりあえず何か作ってましょう

ということで早速Fgima Toolkitで何か1つUIを書いてみましょう。なお、今回はFigmaの詳細な使い方には触れません。あくまでFigma Toolkitでいくつかデザインイメージを描くというところをメインに解説します。
FigmaはWebサイトのような画面遷移単位をフレームとして定義する形です。HoloLensでは状態が変わる単位＝フレームが変わる単位で考えるとしっくりきます。

UIデザインをFigma Toolkitでするための手順は以下の通りです。

1. Figmaのアカウントを作る
1. ローカルフォントをFigmaで使えるようにする
1. オリジナルのFigma Toolkitを自分のところにコピーする
1. UIデザインやる！

### 1. Figmaのアカウントを作る

まずは、[Figma](https://www.figma.com/)のサイトにアクセスしてアカウントを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/b06368f8-ba6d-460e-36ad-844c39fef3f2.png)

### 2. ローカルフォントをFigmaで使えるようにする

Figma Toolkitで使えるMRTKのコンポーネントはUX Building Blocksと全く同じように構成されています。ちゃんとフォントもMRTKで使われているものが入っているのですが、オンラインのFigmaでは当然そのフォントが入っていないです。Figmaにはローカルにあるフォントを連携するためのヘルパーがあるのでそれもセットしておきましょう。
これをセットすることでPressableButtonなどのテキストも変更できるようになります。
まずは、作ったアカウントでログインします。右上のアカウントのプルダウンメニューを開き「settings」を選びメニューを出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/466ac585-c13b-ed5f-5338-149fe33079ed.png)

[Account]タブの中ほどに[Fonts]という項目があります。ここにある[Download Installer]を押してダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/a0314939-81c6-6365-3a9a-0bc81b68637f.png)

ダウンロードしたらインストールしておきます。念のためブラウザは再起動して再度ログインしておいてください。

### 3. オリジナルのFigma Toolkitを自分のところにコピーする

次にUX Building Blocksのコンポーネント設定済みFigma Toolkitを取得します。
[公式ドキュメント](https://docs.microsoft.com/en-us/windows/mixed-reality/design/figma-toolkit?WT.mc_id=MR-MVP-5003104)にアクセスし[View Figma Toolkit]を押してFigma Toolkitのページを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/4d43eeb6-c08c-27ff-7391-213e7c7c9645.png)

すると以下のような画面に遷移します。このドキュメントは中央上の方に記載の通り「View only」という参照のみできるものとなっています。
このドキュメントを先ほど作った自分のFigmaに取込んで作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/069f3112-a6e3-bc0a-701d-34729f438897.png)

中央上あたりにある[Mixed Reality Toolkit for Figma]の横にあるプルダウンメニューを開いて[Duplicate to your drafts]を選択します。
これで自分の環境にコピーすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/66f4fb15-443c-9b11-171d-f716de38aa38.png)

### 4. UIデザインやる！

あとはUnityでUIを作っていく要領でデザインを作っていけます。
まずは空のレイヤを追加します。左側のメニューの[Layers]タブを選択し[Pages]横の[+]を押してページを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/ebbcd93b-86af-967e-5d6d-85e1476a9a22.png)

これで空のページができるのでここからUIデザインが可能になります。
HoloLensの描画域については[viewports]ページにサンプルがあります。例えば[HoloLens 2 Viewport (1440x936)]を選ぶとHoloLensの視野角範囲内の解像度になるので、この黒枠を自分のページにコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/d6b23d5b-d39b-5beb-b65c-425cde98c16d.png)

MRTKのコンポーネントを貼り付ける場合は[Asset]タブを選択するとUX Building Blocksでおなじみにコンポーネントが一覧で出てくるので
必要なものをドラッグ＆ドロップで貼り付けていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/ab8e8ca9-e28f-f41d-cd2b-5c79e62a8540.png)


貼り付けたコンポーネントは今開いているページに追加されます。
ちゃんとUnityのPrefabと同じ構造をとっているので扱いは簡単ですね。あとはボタンの文字を変えたりします。アイコンについてはデフォルトのものしかないので必要に応じて画像をFigmaに取込んで修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/4c9f9a07-b681-3b32-de77-8865547436d1.png)

メニューコレクション等デフォルトで提供されているコンポーネントをカスタマイズするときはそのままやるとコンポーネント全体に影響を与えるので、
元のコンポーネントと関連を切り離す必要があります。これはUnityのPrefabsをUnpackで切離すイメージと同じです。
やり方は変えたいオブジェクトを先ほど同様にドラッグ＆ドロップした後にコンポーネントを選択した状態で右クリックでポップアップメニューを表示して[Detach Instance]を選択します。
これでコンポーネントの関係が切離されるので個別にサイズ変更などが可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/2c2b022d-3120-3595-ce84-05e025575f6a.png)

アクションによってUIデザインが変わるときはその都度Viewportsのフレームをコピーしてきてその子要素にコンポーネントを組み込みながら作っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/01ed2e37-5042-5163-e0cd-17cf64a628b5.png)

## まとめ
今回はUIデザインを2Dながら紙芝居的に作成できるFigma Toolkitを紹介しました。2DとはいえレイアウトをWebブラウザだけで構築できるのはなかなか便利です。何かの説明資料などを作るときのネタ帳としても利用できますし、実際にUIのプロトタイピングもできます。またFigma自体はコラボレーションツールの要素もあるためUIデザインのアイデアをチームで検討するといった用途でも利用可能です。
これまでUnityでUIデザインのアイデアを考えていた人にはUnity使わなくてもいい分軽量ですし、手軽に作って情報残していけるので色々と活用できると思います。
ハンズオンなんかもこの辺りうまく使うと色々できそうな気がするのでぜひぜひ活用してみてください。