Figmaプラグイン"Artboard Creator"をリリースするまでの流れ

![cover.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641888/0ed4bc77-f977-1af5-158b-67540a61372d.png)


Figmaプラグインを自作して公開したのでメモ。
開発のチュートリアルはいくつか出ているので、実際に世の中でダウンロードできるようになるまでやってみた流れをご紹介します。

# TL;DR
1. Figma Community Betaに登録
2. Pluginを作成する
3. FigmaのデスクトップアプリからPublish

作成したプラグイン： [Artboard Creator](https://www.figma.com/community/plugin/840818139970405254/Artboard-Creator)

# 流れ
まだプラグインを公開していない状態をもとに説明します。

## Figma Community Betaに登録
自前のプラグインをローカル環境で動かすのみであれば必要ありませんが、Figma Community(Beta)に登録する必要があります。Communityとは、Figmaのファイルやプラグインを配布できるようになるためのメンバーシップです。（[公式ヘルプはこちら](https://help.figma.com/hc/en-us/articles/360041423614--Who-can-publish-Files-and-Plugins-to-the-Community-)）。
Plugin画面を開くと、右側に[Google Formへのリンク](https://forms.gle/5zC8iaAHrH2Erf5q9)があり、承認されると投稿できるようになります。実質的な審査があるのかわかりませんが、軽くこういうプラグイン公開したいんだということを記載しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641888/10fb6369-d5b7-b63b-789d-7175c04d3980.png)

Communityに入るとマイページからプラグインを公開申請できるようになります。
（メールとかはこなかったような…）

## Pluginを作成する

### 構成
エンジニアではないのでコード面の解説は他の記事に委ねますが、今回は簡易なUIを含むプラグインをつくりました。
CSSをモジュールで読み込みたかったのでTypeScript+WebPackの構成。下記のような3つのファイルです。

- ui.html: UIを提供するHTML
- ui.ts: ui.htmlでのエラーメッセージなどフロントで動かすJS
- code.ts: UIから値をmessageとして受け取って処理をするJS

※ [Webpackに関する公式ガイド](https://www.figma.com/plugin-docs/bundling-webpack/)（これといってハマりどころはありませんのでコピってカスタマイズでいいとおもいます）

### Figmaのデザインシステムを借用しましょう

[Plugin Review Guidelines](https://help.figma.com/hc/en-us/articles/360039958914-Plugin-Review-Guidelines#h_3bd8fbd1-832a-4635-95a6-be9009698d7d)では、FigmaプラグインはFigmaのUIとシームレスなUXを提供するよう推奨されています。幸い、Figma自体のデザインシステムをすぐに実現できるCSSが配布されており、クラス名指定でこれを活用することが可能です。Figmaネイティブな感じのボタンやアイコンはすぐに再現することができます。
https://github.com/thomas-lowry/figma-plugin-ds

また、Figma形式のデザインデータも別途存在し、こちらはプラグインではFigma全体のグローバルなコンポーネントが含まれています。ざっとデザインする分には十分でしょう。
https://www.figma.com/file/Gj9iMcTbFbHrFq1ZWbDBuyc9/UI2%3A-Figma's-Design-System?node-id=0%3A11724

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641888/d31c6f95-63b2-bb8c-32bd-f84bf35d4b74.png)

### デバッグ
[公式に書いてありますが](https://www.figma.com/plugin-docs/debugging/)、Figma上ではローカルプラグインを動かす際、Plugins > Development > Open Consoleでみなれたコンソールを出すことができます。Chromeのそれと同じです。
`console.log()`も使用可。

## Publishする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641888/e4bbe0c3-c57c-4cf7-49d1-a39f9593bc1f.png)
Figmaのデスクトップアプリではローカルで登録しているプラグインをそのまま公開申請することができます。

が、私は直近でアカウント情報を変更したため公開ブロックされており、サポートにメールするよう表示がありました。いくつかアカウントの所有者であることを確認する問答をメールでおこない、有効化してもらいました。

申請画面ではアイコン（128x128）とカバー画像（1920x960）と、説明文を登録します。説明文はマークダウンやリンクなど使えないのでやや読みにくい。
申請後はIn Reviewというステータスに移され審査期間にはいります。
比較的単純なプラグインだったので、平日3日程度でした。


### プラグインの審査基準について
[Plugin Review Guidelines](https://help.figma.com/hc/en-us/articles/360039958914-Plugin-Review-Guidelines#h_3bd8fbd1-832a-4635-95a6-be9009698d7d)ではSafety（安全性）、Business（商業利用に関するポリシー）、Usability（利便性）、Legal（適合性）という審査基準が示されています。
なかでも、Usabilityの項目では
> Please do not use developer error messages to communicate with end users.

とあり、開発者向けのエラーメッセージはユーザーに見せるなよと。暗にエラーメッセージは網羅的にきちんとやれということかと思いましたが、そこまで気にしなくても大丈夫そうでした。
イレギュラー操作に対して何も言わずに動かないプラグインもちょいちょい見かけますし、少し不安な部分あっても審査はとおりました。


# 公開したプラグイン

### 説明とgif
アートボードをSpreadsheetをもとに一括生成できるシンプルなものです。
80画面の枠をIDを含む名前付きで一括でだしたいとか、開発で使ってるディレクトリ構成をもとにアートボードわけたいといったときにつかってます。アートボードとかレイヤーの整理を手でやると辛い。

使い方解説
https://note.com/yasuhiroyokota/n/n785d74bc7077

**Artboard Creator**
https://www.figma.com/community/plugin/840818139970405254/Artboard-Creator

![20200715193925239.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641888/c9efada0-467e-63e3-e217-053e829a098c.gif)

Spreadsheetにアートボード名,width, heightを入力しておいて、SheetIdを入力すると一発でアートボードが生成されます。
ちなみにSpreadsheet APIは使っておらず、Web用に公開→URLベースでjsonを受け取るという安直な方法で取得しています。


### 通知が来る

プラグインが公開されるとインストールしてくれたとか、フォローされたとかで通知が届くのでちょっとうれしいです。
（デザインのコメント多用してるので埋もれるかも）
<img width="400" alt="mojikyo45_640-2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641888/d1bd95cd-77a5-57e9-fbde-c1f1d30d0d1d.png">