Adobe Express アドオンの紹介と開発ガイド

# Adobe Express アドオンについて
Adobe Express アドオンは Adobe Express の機能拡張プラットフォームで動作するWebアプリケーションです。アドオンを介して Adobe Express とサードパーティ製の機能やサービスを連携できます。

### Adobe Express アドオンの利用
* [Adobe Express](https://new.express.adobe.com/new) を開き、新しいプロジェクトを作成するか、既存のものを開きます
* 左側のメニューにある「アドオン」ボタンをクリックします
* 利用できるアドオンが表示されるので選択するか、検索バーを使用して特定のアドオンを検索します
* アドオンを選択し、詳細情報を確認してから「追加」ボタンをクリックしてアドオンをインストールします

![adobe_express_addon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/dcd2425b-8540-cfe8-a315-6abac696c3e6.png)

インストール後、Adobe Expressのプロジェクトでアドオンが利用出来ます。様々なアドオンが公開されていますのでお試しください。

### Adobe Express Add-on SDK
アドオンの開発には Adobe が提供する Adobe Express Add-on SDK を使用します。以下は Add-on SDKが提供する機能の例です。

* 画像と動画のインポート
* 画像のエクスポート
* OAuth 2.0を介して外部ソースに接続
* Expressの編集画面のキャンバスへのコンテンツのドラッグアンドドロップサポート
* マニフェストデータの取得
* 言語の検出

詳細は公式サイトの「[Implementing Common Use Cases](https://developer.adobe.com/express/add-ons/docs/guides/develop/use_cases/)」と「[Code Samples](https://developer.adobe.com/express/add-ons/docs/samples/)」を参照してください。(※英語ドキュメント)

# アドオン開発ガイド
このセクションは[公式サイト](https://developer.adobe.com/express/add-ons/docs/guides/getting_started/quickstart/)で公開されている Adobe Express アドオン開発・クイックスタートの内容を日本語に訳したものです。アドオンプロジェクトの作成、アドオンのビルド、Adobe Expressへのアドオンのロード、アドオンの編集など、開発の一連の流れを説明しています。

### 開発環境のセットアップ

#### 前提条件
* NodeJS (メジャーバージョン16以上) および npm (メジャーバージョン8以上) がインストールされていること
* HTML、CSS、JavaScriptでのプログラミングに慣れていること
* Adobe Express アカウント（既存の Adobe ID を使用するか、無料で新たに作成する）

#### Add-on CLI
Add-on CLI (コマンドラインインターフェース) はアドオン開発に必要です。ローカルマシンから直接 Adobe Express アドオンをビルドおよびホストすることを可能にします。

### 1. アドオンプロジェクトの作成
ターミナルを開いて、次のコマンドを実行してください。

```
$ npx @adobe/create-ccweb-add-on hello-world --template javascript  
```

コマンドを実行して、基本的な JavaScript テンプレートに基づいた新しいアドオンを作成します。Adobe Express Add-on CLI で利用可能な組み込みテンプレートについては、[Templates](https://developer.adobe.com/express/add-ons/docs/guides/getting_started/dev_tooling/#templates) をご覧ください。

※Adobe アカウントへのログインと「Adobe Developer Terms of Use」への同意が必要となります。

### 2. アドオンのビルド
次に、以下のコマンドを実行して、作成されたhello-worldフォルダへ移動し、アドオンをビルドして、ローカルサーバーでアドオンをホストします。

```
$ cd hello-world;
$ npm start;
```

`npm start`スクリプトを実行すると下記のメッセージが表示されます。

```
Done. Your add-on 'hello-world' is hosted on: https://localhost:5241/

You can now sideload your add-on by enabling the Developer Mode in the Add-ons panel.
```

次のステップはローカルサーバーで起動しているアドオンをAdobe Expressへロードします。

### 3. 開発モードの有効化 （初回のみ）
* [Adobe Express](https://new.express.adobe.com/) へ移動します
* 右上のユーザーアバターをクリックして「設定」を選んでください
![adobe_express_setting.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/efccfcab-7077-0e47-9ed3-546164bc6c68.jpeg)

* 設定画面内にある「アドオンの開発」のトグルボタンをクリックして開発モードを有効化してください
![adobe_express_enable_add-on_development.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/baaf7854-2778-b396-9dd3-4cb58031689b.jpeg)

### 4. アドオンのテスト
* [Adobe Express](https://new.express.adobe.com/new) へ移動し新しいプロジェクトを作成します
* 左のメニューにある「アドオン」ボタンをクリックし、アドオンパネルを開きます
* アドオンタブへ移動して「アドオンのテスト」のトグルボタンをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/3ed51f8b-8d2d-60a4-280b-aead21555978.png)

* ローカルにホストされているアドオンのURLを入力するモーダルダイアログが表示されます
※意図的に違うポートを使用してなければ、デフォルトのURL `https://localhost:5241`を使用してください

* 「外部サーバーからアドオンを読み込むことのリスクについて了解しました。」にチェックを入れて「接続」ボタンをクリックしてください
![adobe_express_add_on_load2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/ee47d802-f295-1763-b189-f4a981e4a8a0.png)

* 「アドオンの開発」パネルにアドオンの名前、バージョンと共に「アドオンが開発サーバー接続されました」というメッセージがログに表示されます
*「開発中」パネルにあるアドオンのアイコンをクリックしてアドオンを起動します
* Adobe Express ウィンドウの右側のアドオンパネルにアドオンが表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/df507c04-d1fa-99e3-14ee-c9094fde8dfd.png)

### 5. アドオンの編集
アドオンのテスト中にソースファイルの編集をしてアドオンを修正することができます。
試しに`src/index.html`のボタンの文字列を"Click me"から"Say hello"へ変更してみます。

#### 変更前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/adab2ad0-da9e-f732-4c4c-ab604d69366c.png)
`src/index.html`

#### 変更後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/0279f351-bdd5-7d08-ee57-a06b36f51526.png)
`src/index.html`


ソースファイルを更新すると、アドオンがリビルドされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/4aece05d-d078-5c3e-3f74-bd02b6aa150a.png)

アドオンがテストされているブラウザーへ戻ると、変更した文字列が自動的にボタンへ反映されています。また、アドオンが自動で読み込まれたことを示すログが「アドオンの開発」パネルに表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/c50d6a06-6c51-990c-fbe7-61c52da0b91c.png)

このように、アドオンをテストしながら、ソースコードを更新した場合でも、アドオンを自動的にリビルドしExpress側でリロードさせることが出来ます。

#### マニフェストの更新
`manifest.json`を更新する場合はアドオンを手動でリロードする必要があります。「アドオン開発」パネルに手動で更新するようメッセージが表示されるので、「更新」ボタンをクリックしてアドオンを手動で更新してください。

試しに`src/manifest.json`の`name`フィールドの文字列を "Say Hello" へ変更してみます。`name`フィールドを"Say hello"へ変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/be95dc83-a54a-5bc1-8a99-a1e67292cb46.png)

Adobe Expressの「アドオン開発」パネルに戻ると`manifest.json`の変更が検出されたことを示すログを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/797a93de-f8a0-654d-7347-31cb5396bf05.png)

「更新」ボタンをクリック後に、再度、アドオンのアイコンをクリックしてください。新しいアドオンの名前がタイトルに反映されます。
![rename manifest.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/95523bdd-6ea5-547c-0531-ff3350fa4c37.jpeg)

詳細な開発手法、UX、デバッグ、Add-on SDK リファレンス等の詳しいドキュメントは[公式ページ](https://developer.adobe.com/express/add-ons/docs/guides/)で公開しています。 (*英語ドキュメント)

# Image Gallery (オープンソースアドオン)
このセクションでは、Adobe が開発し、オープンソース化したアドオン Image Gallery を紹介します。

### Image Gallery について
Image Gallery は、Adobe Express アドオンの Code Sample の一つで、オープンソース化した画像アセット用のアドオンです。

例えば、Adobe Expressで個人・企業のオリジナルキャラクターやロゴを配布するアドオンを作成することができます。

Image Gallery のソースコードへは[こちら](https://github.com/adobe/express-add-on-image-gallery)からアクセスできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042954/d8ba8212-8e9a-9898-74ae-ae928b3c14bc.png)

独自のコンテンツを利用できるアドオンの開発にご興味のある方はお試しください。使用法はリポジトリをご参照ください。


# ソフトウェアエンジニア (Tokyo) の募集
2024年6月7日(本稿執筆時点)、アドビの日本オフィスの研究開発本部では、Adobe Creative Cloud、Adobe Document Cloud などの日本市場向けの機能を開発するソフトウェアエンジニアを募集しています。

日本の研究開発チームは、日本のユーザーに、より優れたユーザー体験を提供することを目指しています。クリエイティブなデジタル体験を一緒に創造しませんか。

ぜひ下記のページよりご応募ください。
[Software Development Engineer](https://adobe.wd5.myworkdayjobs.com/external_experienced/job/Tokyo/Software-Development-Engineer_R145765)

# リファレンス
* [Adobe Express アドオン公式](https://developer.adobe.com/express/add-ons/)
* [Image Gallery リポジトリ](https://github.com/adobe/express-add-on-image-gallery)