Adobe XD プラグイン制作 2019年の変化と資料集

このエントリーは [Adobe XD プラグイン制作 Advent Calnedar](https://qiita.com/advent-calendar/2019/xdplugin) 1日目の記事です。

まずはトップバッターとしてちょっとした今年の変化の概要と最新版の資料集をあげたいと思います。

# Adobe XD(以後XD）とプラグイン

[XD](https://www.adobe.com/jp/products/xd.html)はAdobeが出している、デザイン・プロトタイプ・共有の制作に重要な三つのアクションが1つのアプリで行えるコミュニケーションデザインツールです。
XDのプラグインは、2018年のMAXアップデートから一般向けに配布が開始され、同時にモダンなJavaScriptでかけるAPIが公開されました。

Adobe XDプラグインの世界へようこそ! Adobe MAX 2018セッションレポート #XDPlugin #AdobeXD
https://blogs.adobe.com/japan/web-world-of-xd-plugins/

この時できたのは、モーダルダイアログで設定して決定するという、インタラクティブな操作ができるものではなかったのですが、Google Sheetなどとても有益なプラグインが多数発表されました。

リピートグリッドの幅と高さをぴったり揃える＆指定アイテム数表示ができる拙作の[Repeat Grid Fitter](https://paper.dropbox.com/doc/Repeat-Grid-Fitter-Support--ApnPohjnrWX2s_G8HspW6G2lAQ-bG0aYLxvVgVpth0tJjkhC)もその一つです。

# 2019年はとりあえず拡張できますから大きく前進

さて、2019年今年は大きな変化がありました。

作る側には、新しいエントリーポイントであるパネルが解放されました。プロパティインスペクターのように、選択したオブジェクトに対してインタラクティブに操作ができるパネルタイプのものが登場しました！

[#Adobe XD のパネルに対応したプラグインの開発](https://blogs.adobe.com/japan/cc-web-xd-plugin-developent-with-panel-ui/)

パネルタイプのプラグイン例：Arranger for Adobe XD
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10363/4504ae3a-feb0-64d7-e726-d2d5139b5a8a.png)


使う側にもメリットがある、「**数あるプラグインの中から自分達に適したプラグインを選ぶ**」を支援するプラグインマネージャーの改良もポイントです。

[Adobe XD 2019年11月アップデートリリース！リアルタイム共同編集、ドキュメント履歴、コンポーネントのステートなどをAdobe MAXで発表 #AdobeMAX #AdobeXD](https://blogs.adobe.com/japan/cc-web-xd-november-2019-update-coediting-more/)の最後の方「**再設計されたプラグインマネージャー**」を見てみてください。


## パネルタイプのプラグインの実装
`manifest.json` での呼び出し方と、専用のイベントが必要であることが大きく違います。 
[Quick Start:Make your first XD panel plugin](https://adobexdplatform.com/plugin-docs/tutorials/quick-start-panel/)から抜き出すと次の部分にあたります

```json:manifest.json
//前略
  "uiEntryPoints": [
    {
      "type": "panel",//パネルタイプの指定
      "label": "Enlarge a Rectangle",
      "panelId": "enlargeRectangle"//パネルとして記述があるオブジェクト
    }
  ]
//後略
```

```javascript:main.js
function create() {} //パネルUIの記述を行う

function show(event) {} //プラグインパネルから指定されると呼ばれる

function update(selection) {} //選択中のオブジェクトが何らかの変化を起こすたびに呼ばれる

module.exports = {
  panels: {//パネルとしてexportする
    enlargeRectangle: { //manifest.jsonで指定した名前
      show,
      update
    }
  }
};
```

## 「数あるプラグインの中から自分達に適したプラグインを選ぶ」を支援する機能が続々追加

カテゴリーなどが先行して追加されていましたが、プラグインの詳細画面では次の機能がとても良いです！

* スクリーンショットの追加
* 評価の追加

![プラグイン詳細画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10363/44863b45-9c91-99c8-a0e0-d551fb1016a2.png)

モバイルのストアで見かける、エディターズチョイスや定番プラグインの紹介もされるようになりました。
![プラグインマネージャートップ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10363/6bf654f0-64af-7650-7aa2-eef0ef6c0827.png)

以前の画面もパワーアップして、参照タブに存在します。検索アイコンを押した場合もこちらの画面が開きます。

![以前のプラグインリスト相当の画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10363/b92fd9d8-f5fe-a844-fe0f-8d6f0c994870.png)


# ２０１９年保存版開発データソース

断りがない限り英語の情報となります。

* [Adobe XD プラグイン管理画面](https://console.adobe.io/plugins#)…XDプラグインを公式に配布したい場合プラグインID発行と登録申請のため必ず使用する。Adobe ID必須。削除は2019/12/01現在できない。
* [Adobe XD Platform](https://adobexdplatform.com/)…いわゆる開発者ポータル
* [Plugin APIs](https://adobexdplatform.com/plugin-docs/)…XD上での動きを記述でいるAPIドキュメント。各種初心者向けの簡単なスタートガイドもある
* [Cloud Content APIs](https://adobexdplatform.com/cloud-content-api-docs/)…自分たちの製品とXDのデザイン共有を接続するためのクラウドコンテンツAPIドキュメント。利用にはフォームからのAPI Key/Secret取得申し込みが必要
* [Adobe XDをプロジェクトチームとつなぐ「Cloud Content API」の公開](https://blogs.adobe.com/japan/cc-web-adobe-xd-cloud-content-apis-are-here/)…上記Cloud Content APIsの利用方法の日本語での紹介
* [Adobe XDプラグイン用のUIキットとUXガイドラインの公開](https://blogs.adobe.com/japan/cc-web-ui-kits-and-ux-guides-for-your-xd-plugin-867d5c999648/)…Plugin APIsからリンクされているプラグイン専用のUI KitとUXガイドの貴重な日本語での紹介記事
* [公式Githubリポジトリ](https://github.com/AdobeXD)
  * [xdpm](https://github.com/AdobeXD/xdpm)…開発時のプラグインインストールおよびアップデートを支援するコマンドラインツール
  * [generator-xd-plugin](https://github.com/AdobeXD/generator-xd-plugin)…Yeoman を利用したXDプラグインプロジェクト生成ツール
  * [plugin toolkit](https://github.com/AdobeXD/plugin-toolkit)…XDのプラグイン向けAPIでは存在しないalert/confirm/promptが使えるようになる。それ以外のヘルパー関数も準備されている。
  * [plugin toolkit react](https://github.com/AdobeXD/plugin-toolkit-react)…pure JavaScriptによる開発以外では一番ドキュメントが多いReactを使ったプラグイン開発を支援するUIツールコンポーネント
  * [XD awesome](https://github.com/AdobeXD/xd-awesome)…XDプラグイン制作のコミュニティ発のリソースリンク集。開発用ツールも紹介されています

# まとめ

XDプラグイン制作は2年目が始まりましたが、開発可能なプラグインの幅が増え、検索機能が充実したのはここ最近で始まったばかりです。実質の初年度は今年だと思います。
ヒアドキュメント対応で、jQueryを使った開発も簡単になりました。ぜひ、今からチャレンジしてみてください。