UI拡張性用のプロジェクトの作成
カスタム UI拡張機能を作成するには、それに対応するApp Builder プロジェクトを作成する必要があります。
ここでは、aio コマンドラインを使用して汎用App Builder プロジェクトを生成する方法について説明します。 「汎用」とは、プロジェクトが製品固有のテンプレートから not 開始することを意味します。 汎用アプリから始めることで、プロジェクトはシンプルになり、Workfront Fusionと接続できます。
Adobe Fusion AI拡張機能で使用するプロジェクトの作成に関する次の概念と用語を理解しておくと便利です。
-
Adobe Developer Console (https://developer.adobe.com/console)は、プロジェクトが存在するWeb ダッシュボードです。
-
用語:
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 用語 意味 組織 自社のAdobe組織。 Fusionで使用する組織と同じです。 プロジェクト 1つのアプリ/拡張機能のコンテナ。 拡張機能に1つのプロジェクトを作成します。 ワークスペース 作業段階におけるプロジェクト設定のコピー。 各プロジェクトには実稼動 ワークスペースがあり、通常はステージ ワークスペースを使用してテストを行います。 「環境」のようなワークスペースを考えてみましょう。 資格情報/ サービス アプリで使用できる権限。 作成されたデフォルトは、開始するのに十分です。 -
プロジェクトを作成するには、次の2つの方法があります。
- 自動(推奨): コマンド
aio app initは、コードの生成中にプロジェクトとワークスペースを作成します。 この記事では、このプロセスについて説明します。 - 手動:最初にDeveloper Consoleで自分でプロジェクトを作成し、次に
aioを指定します。 これは、組織でプロジェクトを一元的に作成する必要がある場合にのみ行うことをお勧めします。
- 自動(推奨): コマンド
-
使用するワークスペースを決定する際は、まず ステージ に開発してデプロイします。 Fusionは、ユーザーがFusion プロファイル(ユーザーアバターメニュー/製品設定/Fusion プロファイル/環境設定/ステージ拡張機能)でステージテストをオンにした場合にのみステージビルドを読み込みます。そうでない場合、公開された実稼動拡張機能のみが表示されます。
aio app runでローカルにプレビューしてから、後で 実稼動 に昇格することもできます。本番環境へのプロモーションについて詳しくは、拡張機能の公開を参照してください。
aio app initを実行
-
ターミナルを開きます。
-
ターミナルで、プロジェクトを保存するフォルダーに移動します。
-
実行:
code language-sh aio app init my-fusion-extension --standalone-appmy-fusion-extensionはフォルダー/アプリ名です。 この名前は選択できますが、小文字、ハイフン、スペースは使用できません。--standalone-appは、製品テンプレートを選択するように求める代わりに、プレーンアプリケーションスケルトンを作成するようにCLIに指示します。 これは、AEM(またはその他の)テンプレートを回避するための鍵です。
-
プロンプトが表示されたら、組織を選択します (複数に属している場合)。
-
プロンプトが表示されたら、「新しいプロジェクトを作成」を選択し、提案された名前を受け入れるか、既存の空のプロジェクトを選択します。
このコマンドは、ステージおよび実稼動 ワークスペースを自動的に設定します。
このコマンドは、ファイルを
my-fusion-extensionフォルダーに生成し、npm installを実行します。 -
プロジェクト作成の確認に進みます。
aio app init my-fusion-extension > (--standalone-appなし)。 「どのテンプレートを検索しますか?」という質問が表示された場合 AEMのような商品テンプレートを選択しないでください。 スタンドアロンアプリケーション / を作成するオプションを選択します「すべての拡張ポイント→なし」。プロジェクト作成の確認
-
ターミナルで、作成したフォルダーに移動します。
code language-sh cd my-fusion-extension次のような構造が表示されます(一部のファイルは省略されています)。
code language-none my-fusion-extension/ |--- app.config.yaml // main configuration (you will edit this) |--- package.json //dependencies and scripts |--- src/ // your source code |--- web-src/ or src/.../web-src/ // front-end files (HTML/JS)最も関心のある2つのファイルは次のとおりです。
app.config.yaml:中央設定。 このプロセスの後半で、アプリをFusion拡張機能ポイントに接続するextensions:セクションをここに追加します。package.json: アプリで使用するライブラリを一覧表示します。 Adobe UI拡張性ゲストライブラリは、ここに追加します。
-
続行して必要なライブラリを追加します。
必要なライブラリを追加
この拡張機能には2つのライブラリが必要です。
@adobe/uix-guest: アプリをFusion (ホスト)と通信できます。@adobe/react-spectrum: AdobeのReact UI コンポーネントで、画面がAdobeのルックアンドフィールと一致します。 (オプションですが、推奨。代わりにプレーンHTMLを使用できます)。
これらのライブラリをインストールするには:
-
ターミナルで、以下を実行します。
code language-sh npm install @adobe/uix-guest @adobe/react-spectrum -
(条件付き)生成されたプロジェクトにReactが含まれていない場合は、次もインストールします。
code language-sh npm install react react-dom react-router-dom -
続行 プロジェクトのビルドを確認します。
プロジェクトの構築を確認する
何かを変更する前に、空のプロジェクトのビルドを確認してください
-
ターミナルで、以下を実行します。
code language-sh aio app buildエラーなしで完了すると、ツールとプロジェクトは正しく設定されます。 プロジェクトをFusionに接続する準備が整いました。
note tip TIP ビルドが失敗した場合、最も一般的な原因は、サポートされていないNode.js バージョンです。 node --versionを実行し、18または20であることを確認します。- Node.jsのインストールについて詳しくは、 ツールの設定を参照してください。
- その他の考えられるエラーについては、 トラブルシューティング を参照してください。
-
引き続きFusion用にプロジェクトを設定します。
Fusion用にプロジェクトを設定する
カスタム拡張機能を設定する次のステップは、汎用プロジェクトをWorkfront Fusionに接続することです。
次のことをおこないます。
- 拡張機能のフォルダーを作成する
- App BuilderにFusion 拡張ポイント (
app.config.yaml内)について伝えます。 - 拡張機能の部分を記述してください(
ext.config.yaml)。 - ウィジェットを登録し、FusionがタイトルとUIの位置を把握できるようにします。
私たちは全体を通してfusion/nav-organization/1を使用しています。 代わりに、「チーム」セクションをターゲットにするには、どこでもfusion/nav-team/1を入れ替えます。 両方をサポートするには、それぞれのパターンを繰り返します。
拡張機能のフォルダーを作成する
-
プロジェクトが次のように見えるように、ファイルを作成します。
code language-none my-fusion-extension/ |-- app.config.yaml |-- src/ |-- fusion-nav-organization-1/ // one folder per extension point |-- ext.config.yaml |-- web-src/ |-- src/ |-- components/ |-- App.js |-- ExtensionRegistration.js |-- DashboardWidget.js |-- Constants.js拡張ポイント (
fusion-nav-organization-1)の後にフォルダーの名前を付けることをお勧めします。 正確な名前は自分で決めますが、app.config.yamlで参照する名前と一致する必要があります。 -
引き続き
app.config.yamlで拡張ポイントを宣言します。
app.config.yamlで拡張ポイントを宣言します
-
app.config.yamlを開き、その内容を次のように更新します。code language-yaml extensions: fusion/nav-organization/1: $include: src/fusion-nav-organization-1/ext.config.yaml次の内容について説明します。
extensions::このアプリは1つ以上の拡張ポイントを実装しています。fusion/nav-organization/1:接続中のFusion スロット。 名前は、バージョン1を含め、正確にと一致する必要があります。$include::この拡張機能の内容を説明する2番目の構成ファイル (次の手順で作成)を指します。 別のファイルに保存すると、app.config.yamlがクリーンになり、後で拡張ポイントを追加できます。
note NOTE 両方の拡張機能をターゲットにしている場合は、両方をリスト化し、それぞれに独自のフォルダーを持たせます。 code language-yaml extensions: fusion/nav-organization/1: $include: src/fusion-nav-organization-1/ext.config.yaml fusion/nav-team/1: $include: src/fusion-nav-team-1/ext.config.yaml- に進み、
ext.config.yamlで拡張機能を説明してください
ext.config.yamlの拡張機能を説明してください
-
src/fusion-nav-organization-1/ext.config.yamlの作成条件:code language-yaml operations: view: - type: web impl: index.html web: web-src hooks: pre-app-build: node node_modules/@adobe/uix-guest/scripts/generate-metadata.js pre-app-run: node node_modules/@adobe/uix-guest/scripts/generate-metadata.js次の内容について説明します。
operations.view:拡張機能がindex.htmlから提供されるビュー (表示されるUI)を提供することを宣言します。 これは、拡張機能がバックグラウンドでのみ実行するのではなく、画面を表示するようなものです。web: web-src: フロントエンドファイルを保持するフォルダー。 App Builderでは、これらのコンポーネントをすべてAdobe Content Delivery Network (CDN)上に構築し、ホストしています。hooks: ビルド/実行時に自動的に実行される小さなコマンド。generate-metadata.jsスクリプトは@adobe/uix-guestに付属しており、登録コードが必要とするapp-metadata.jsonファイルを生成します(手順4を参照)。 このスクリプトを書くのではなく、単に参照するだけです。
note NOTE サーバーサイド ロジックも必要な場合は、サーバーレス actions(小さなバックエンド関数)を追加することもできます。 アクションはオプションであり、UIのレンダリングには必要ないので、このガイドをフォーカスしておくためにアクションは省略します。 後で追加する場合は、ここでactions:フォルダーを宣言し、app.config.yamlにruntimeManifest:を宣言します。 これを追加する最も一般的な理由は、ブラウザーのCORSを押さずにWorkfront/Fusion APIを呼び出すことです。
APIの呼び出しについて詳しくは、WorkfrontおよびFusion APIの呼び出しを参照してください。 -
安定した拡張機能IDの設定に進みます。
安定した拡張機能IDの設定
拡張機能には、両方のフレームが共有する一意のIDが必要です。
カスタム拡張機能に関連するフレームについて詳しくは、UI拡張機能に含まれるフレーム を参照してください。
-
src/fusion-nav-organization-1/web-src/src/components/Constants.jsを作成:code language-js module.exports = { extensionId: 'my-fusion-extension' };コードが拡張機能IDを参照するあらゆる場所で同じ値を使用します。
-
ウィジェットの登録に進みます。
ウィジェットを登録
「登録」は、非表示の背景フレームがFusionに対して拡張機能が提供するものを伝える方法です。 ウィジェットのタイトルと表示されるUIのURLを返すdashboard.getWidget() メソッドを宣言します。
-
src/fusion-nav-organization-1/web-src/src/components/ExtensionRegistration.jsを作成します。
重要な部分はregister(...)呼び出しです。code language-js import { register } from "@adobe/uix-guest"; import metadata from "../../../../app-metadata.json"; import { extensionId } from "./Constants"; async function init() { await register({ id: extensionId, metadata, methods: { dashboard: { getWidget() { return { id: extensionId, title: "My Fusion tool", // shown on the Fusion nav button description: "What this tool does", url: "/index.html#/my-widget", // route to your visible UI hideWidgetHeader: false // false = Fusion shows the title }; } } } }); } init().catch(console.error);重要なポイント:
titleは、Fusionがナビゲーションボタンに付けるラベルです。hideWidgetHeaderがfalseの場合、タイトルはUIの上のヘッダーとしても表示されます。urlは、同じアプリ内のvisible UIへのルートです。 これは、フロントエンドルーターが処理するハッシュルート(#/my-widget)です(次のページで設定します)。 画面をレンダリングするコンポーネントに解決する必要があります。metadataはapp-metadata.jsonから取得され、generate-metadataフックがビルド時に作成します。 図のように読み込みます。dashboard.getWidgetメソッド名は、ウィジェットを検出するためにFusionが呼び出す契約に同意した名前です。dashboardの名前空間とgetWidgetの名前を保持します。
拡張機能のバックエンドが完了しました。 次のステップは、拡張機能のUIを構築することです。
UIの構築手順については、 カスタム拡張機能UIの構築を参照してください。