既存のFigmaプラグインをDynamic Page Loadingに対応させる

#Figma#JavaScript#プログラミング
投稿日:

私は「Smart Chroma」というFigmaプラグインを開発しています。

先日、Figmaから「ファイルの読み込み時間を短縮するDynamic Page Loadingをロールアウト中だから、プラグインを新しいAPIに対応させてね」というメールが届きました。現時点で既存のプラグインを必ずしも修正する必要はありませんが、4月以降に新規公開する場合は必ず対応する必要があるようです。

ということで、今回は公式のガイドに従いながら、既存のFigmaプラグインをDynamic Page Loadingに対応させる方法を紹介します。

型定義を更新する

新しいAPIが追加されたり、既存のAPIが非推奨になっていたりするので、まずは型定義を更新します。GitHubのコミット履歴を見たところ、v1.88.0以降にアップデートすれば良さそうでした。

この作業は、TypeScriptを使用していない場合は不要です。

Terminal window
npm uninstall @figma/plugin-typings
npm install -D @figma/plugin-typings

ESLintを追加する

更新が必要な箇所を半自動的に修正してくれるESLintのプラグインが提供されています。まだESLintを導入していない場合は導入してから、プラグインをインストールします。

Terminal window
npm install -D @figma/eslint-plugin-figma-plugins
.eslintrc.json
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@figma/figma-plugins/recommended"
],
// ...
}

あとは、ESLintにしたがって修正すれば、対応が完了します。

私の場合は、とくに修正が必要な箇所はなさそうでした。Dynamic Page Loadingではプロジェクトを動的に読み込むようになるため、要素を検索して取得するようなコードがある場合は修正が必要です。

マニフェストの修正

manifest.json"documentAccess": "dynamic-page"を追加します。これによって、プラグインがDynamic Page Loadingに対応していることをFigmaに伝えられます。

manifest.json
{
// ...
"documentAccess": "dynamic-page"
}

アップデートの公開

ここまでの修正が完了したら、Figmaで正しくプラグインが動作することを確認して、アップデートを公開します。お疲れ様でした!

おまけ

プラグインを公開してから1年間アップデートしていなかったので、開発中のプラグインをFigmaに読み込む方法が変わっていて戸惑いました。

以前はプロフィールのアイコンをクリックして設定の中から読み込めたと思うのですが、現在は任意のファイルを開いて左上のFigmaロゴをクリックし、[プラグイン]>[開発]>[マニフェストからプラグインをインポート]から読み込めるようです。

また、依存関係をまとめてアップデートしたせいで、エラーが出て2時間半くらい悩みました。結局、HCT色空間を扱うために使っていた@material/material-color-utilitiesが原因でした。

material-color-utilitiesを使うコードをバックエンドからUIのコード(フロントエンド)に移動したら動きました。たぶん、Figmaのプラグインのバックエンドで実行できる処理には制限があり、その制限に引っかかってしまったのでしょう。

私が公開しているSmart Chromaの詳しい仕組みはこちらの記事で解説しているので、気になる方はぜひ読んでみてください。

参考

Xに共有する Blueskyに共有する Misskeyに共有する LINEに共有する Threadsに共有する
著者のアイコン画像

生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。

Webフロントエンドプログラマーで、テクノロジーに関する話題を追いかけています。動画編集やプログラミングが趣味で、たまにデザインなどもやっています。主にTypeScriptを使用したWebフロントエンド開発を専門とし、便利で実用的なブラウザー拡張機能を作成しています。また、個人ブログを通じて、IT関連のニュースやハウツー、技術的なプログラミング情報を発信しています。