拡張機能マニフェスト

拡張機能の基本ディレクトリには、extension.json という名前のファイルを作成する必要があります。 このファイルには、Adobe Experience Platform Launch が拡張機能を適切に使用できるようにするための重要な詳細が含まれています。 内容の一部は、npm のpackage.json の形式に従って構成されます。

extension.json の例は、Hello World 拡張機能 の GitHub リポジトリにあります。

拡張機能マニフェストは、次のプロパティで構成する必要があります。

プロパティ 説明
name 拡張機能の名前。他のすべての Reactor 拡張機能とは異なる名前を使用し、命名規則に従う必要があります。 このプロパティは、Platform Launch で識別子として使用され、拡張機能の公開後に変更することはできません。
platform 拡張機能のプラットフォーム。 現時点で使用できる値は web のみです。
version 拡張機能のバージョン。 semver のバージョニング形式に従う必要があります。 これは、npm バージョンフィールドと一致します。
displayName 人間が判読できる、拡張機能の名前。この名前は、Platform Launch のユーザーに表示されます。 「Launch」や「Extension」に言及する必要はありません。ユーザーは、Launch 拡張機能が表示されることを既に知っています。
description 拡張機能の説明。この名前は、Platform Launch のユーザーに表示されます。 拡張機能によってユーザーが Web サイトに製品を実装できるようになる場合は、製品の動作を説明します。 「Launch」や「Extension」に言及する必要はありません。ユーザーは、Platform Launch 拡張機能が表示されることを既に知っています。
iconPath (オプション) Platform Launch 内の拡張機能用に表示されるアイコンの相対パス。 スラッシュで始めることはできません。拡張子 .svg が付いた SVG ファイルを参照する必要があります。 SVG は正方形にする必要があり、Platform Launch で拡大縮小できます。
author 「author」は、次の構造を持つオブジェクトです。
  • name:拡張機能の作成者の名前。または、会社名を使用することもできます。
  • url (オプション):拡張機能の作成者の詳細を参照できる URL。
  • email (オプション):拡張機能の作成者のメールアドレス。
この構造は、npm 作成者フィールドのルールと一致します。
exchangeUrl (公開拡張機能に必要) Adobe Exchange での拡張機能のリストへの URL。パターン https://www.adobeexchange.com/experiencecloud.details.######.html と一致する必要があります。
viewBasePath すべてのビューおよびビュー関連のリソース(HTML、JavaScript、CSS、画像)を含むサブディレクトリの相対パス。 Platform Launch は、このディレクトリを Web サーバー上でホストし、このディレクトリから iframe コンテンツを読み込みます。 これは必須フィールドで、先頭にスラッシュを使用することはできません。例えば、すべてのビューが src/view/ 内に含まれている場合、viewBasePath の値は src/view/ になります。
hostedLibFiles (オプション) ユーザーの多くは、Platform Launch 関連のすべてのファイルを自社サーバーでホストすることを好みます。 これにより、ユーザーは実行時のファイルの可用性に関する確実性を高めることができ、コードを簡単にスキャンしてセキュリティの脆弱性を調べることができます。 実行時に拡張機能のライブラリ部分で JavaScript ファイルを読み込む必要がある場合は、このプロパティを使用して、これらのファイルをリストすることをお勧めします。 リストされるファイルは、Platform Launch ランタイムライブラリと一緒にホストされます。 その後、拡張機能では、getHostedLibFileUrl メソッドで取得した URL 経由でファイルを読み込むことができます。

このオプションには、ホストする必要があるサードパーティのライブラリファイルの相対パスを使用した配列が含まれます。
main (オプション) 実行時に実行する必要があるライブラリモジュールの相対パス。

このモジュールは常にランタイムライブラリに含まれ、実行されます。このモジュールは常にランタイムライブラリに含まれるため、モジュールが必須の場合は「メイン」モジュールのみを使用し、コードサイズを最小限に抑えることをお勧めします。

このモジュールが最初に実行される保証はありません。その前に他のモジュールが実行される場合があります。
configuration (オプション) 拡張機能の拡張機能設定の部分について説明します。ユーザーが拡張機能のグローバル設定を指定する必要がある場合に必要です。 このフィールドの構造化方法の詳細については、「付録」を参照してください。
events (オプション) イベントタイプの定義の配列。 配列内の各オブジェクトの構造については、タイプの定義に関する「付録」セクションを参照してください。
conditions (オプション) 条件タイプの定義の配列。 配列内の各オブジェクトの構造については、タイプの定義に関する「付録」セクションを参照してください。
actions (オプション) アクションタイプの定義の配列。 配列内の各オブジェクトの構造については、タイプの定義に関する「付録」セクションを参照してください。
dataElements (オプション) データ要素タイプの定義の配列。 配列内の各オブジェクトの構造については、タイプの定義に関する「付録」セクションを参照してください。
sharedModules (オプション) 共有モジュール定義オブジェクトの配列。 配列内の共有モジュールオブジェクトは、それぞれ次のように構造化する必要があります。
  • name:共有モジュールの名前。「共有モジュール」で説明されているように、この名前は、他の拡張機能から共有モジュールを参照する際に使用されることに注意してください。この名前は、どのユーザーインターフェイスにも表示されません。 拡張機能内の他の共有モジュールの名前とは重複しない一意の名前を使用し、命名規則に従う必要があります。 これは、Platform Launch で識別子として使用されます。拡張機能を公開した後は変更しないでください。
  • libPath:共有モジュールの相対パス。スラッシュで始めることはできません。拡張子 .js が付いた JavaScript ファイルを参照する必要があります。

付録

命名規則

extension.json 内の name フィールドの値は、次のルールに従う必要があります。

  • 214 文字以下にする必要があります。
  • ドットまたはアンダースコアを先頭に使用することはできません。
  • 大文字を含めることはできません。
  • URL に使用できる文字のみを含める必要があります。

これらのルールは、npm パッケージ名ルールと一致します。

設定オブジェクトのプロパティ

設定オブジェクトは、次のように構造化する必要があります。

プロパティ 説明
viewPath 拡張機能の設定表示の相対 URL。viewBasePath に対する相対位置であり、スラッシュで始まらないようにします。 拡張子 .html を持つ HTML ファイルを参照する必要があります。 クエリ文字列およびフラグメント識別子(ハッシュ)のサフィックスを使用できます。
schema 拡張機能の設定表示から保存される有効なオブジェクトの形式を記述する JSON スキーマ のオブジェクト。 設定表示の開発者は、保存した settings オブジェクトがこのスキーマと一致することを確認する必要があります。このスキーマは、ユーザーが Platform Launch サービスを使用してデータを保存しようとした場合の検証にも使用されます。

スキーマオブジェクトの例を次に示します。
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "delay": {
      "type": "number",
      "minimum": 1
    }
  },
  "required": [
    "delay"
  ],
  "additionalProperties": false
}
手動でスキーマをテストするには、JSON Schema validator などのツールを使用することをお勧めします。
transforms (オプション) オブジェクトの配列。各オブジェクトは、ランタイムライブラリに発行されるときに、対応するすべての settings オブジェクトで実行する必要がある変換を表します。 このプロパティが必要となる理由とその使い方の詳細ついては、変換の節を参照してください。

タイプの定義

タイプの定義とは、イベント、条件、アクションまたはデータ要素の各タイプを記述するために使用されるオブジェクトです。 このオブジェクトは、次の内容で構成されます。

プロパティ 説明
name タイプの名前。拡張機能の中で一意の名前を指定する必要があります。名前は名前付けルールに従う必要があります。 このプロパティは、Platform Launch で識別子として使用されるため、拡張機能を公開した後は変更しないでください。
displayName Platform Launch ユーザーインターフェイス内のタイプを表すために使用されるテキストです。 人間が判読できる必要があります。
categoryName (オプション) 指定された場合、displayName が Platform Launch UI 内の categoryName の下に一覧表示されます。 同じ categoryName を持つすべてのタイプが同じカテゴリに一覧表示されます。例えば、拡張機能で keyUp イベントタイプと keyDown イベントタイプが指定され、どちらのタイプも KeyboardcategoryName を持つ場合、ユーザーがルールを作成する際に使用可能なイベントタイプのリストから選択するときに、両方のイベントタイプが Keyboard カテゴリに表示されます。 categoryName の値は人間が判読できる必要があります。
libPath タイプのライブラリモジュールの相対パスです。スラッシュで始めることはできません。拡張子 .js を持つ JavaScript ファイルを参照する必要があります。
viewPath (オプション) タイプの表示の相対 URL。viewBasePath に対する相対 URL であり、スラッシュで始まらないようにする必要があります。 拡張子 .html を持つ HTML ファイルを参照する必要があります。 クエリ文字列とフラグメント識別子(ハッシュ)を使用できます。タイプのライブラリモジュールがユーザーの設定を使用しない場合、このプロパティを除外すると、Platform Launch では、代わりに、設定が不要であることを示すプレースホルダーが表示されます。
schema ユーザーが保存できる有効な settings オブジェクトの形式を記述する JSON スキーマ のオブジェクト。 通常、設定は、ユーザーが Platform Launch ユーザーインターフェイスを使用して設定および保存します。 このような場合、拡張機能の表示では、ユーザーが指定した設定を検証するために必要な手順を実行できます。 一方、一部のユーザーは、ユーザーインターフェイスを使用せずに、Platform Launch API を直接使用します。このスキーマの目的は、ユーザーインターフェイスが使用されているかどうかに関係なく、ユーザーが保存する settings オブジェクトが、実行時に settings オブジェクト対して実行されるライブラリモジュールと互換性のある形式であることを、Platform Launch が適切に検証できるようにすることです。

スキーマオブジェクトの例を次に示します。
{
  "$スキーマ":"http://json-schema.org/draft-04/schema#",
  "type":"object",
  "プロパティ":{
    "delay”:{
      "type":"number",
      "最小値":1
    }
  },
  "必須":[
    "delay"
  ],
  "additionalProperties":false
}
手動でスキーマをテストするには、JSON Schema validator などのツールを使用することをお勧めします。
transforms (オプション) オブジェクトの配列。各オブジェクトは、ランタイムライブラリに発行されるときに、対応するすべての settings オブジェクトで実行する必要がある変換を表します。 このプロパティが必要となる理由とその使い方の詳細については、変換の節を参照してください。

変換

特定のユースケースでは、拡張機能を使用するには、表示から保存された settings オブジェクトを Platform Launch で変換してから、Platform Launch ランタイムライブラリに発行する必要があります。 extension.json 内でタイプ定義を定義する際に、transforms プロパティを設定することで、これらの 1 つ以上の変換を実行するように要求できます。 transforms プロパティはオブジェクトの配列です。各オブジェクトは、実行する必要のある変換を表します。

すべての変換には typepropertyPath が必要です。 type は、functionremovefile のいずれかである必要があり、Platform Launch が settings オブジェクトに適用する必要がある変換を示します。propertyPath はピリオドで区切られた文字列で、設定オブジェクト内で変更が必要なプロパティをどこで見つけるかを Platform Launch に指示します。 次に、設定オブジェクトと propertyPath の例を示します。

{
  foo: {
    bar: "A string",
    baz: [
      "A",
      "B",
      "C"
    ]
  }
}
  • foo.barpropertyPath を設定すると、"A string" 値が変換されます。
  • foo.baz[]propertyPath を設定すると、baz 配列の各値が変換されます。
  • foo.bazpropertyPath を設定すると、baz 配列が変換されます。

プロパティパスは、配列とオブジェクト表記の組み合わせを使用して、 設定オブジェクトの任意のレベルで変換を適用できます。

警告

propertyPath 属性での配列表記の使用(例:foo.baz[])は、拡張機能サンドボックス*ツールではまだサポートされていません。

以下の節では、利用可能な変換とその使用方法について説明します。

関数変換

関数変換を使用すると、Platform Launch ユーザーが記述したコードを、発行された Platform Launch ランタイムライブラリ内のライブラリモジュールによって実行できます。

「カスタムスクリプト」アクションタイプを指定するとします。 「カスタムスクリプト」アクションビューには、ユーザーがコードを入力できるテキスト領域があります。ユーザーがテキスト領域に次のコードを入力したとします。

console.log('Welcome, ' + username +'. This is ZomboCom.');

ユーザーがルールを保存すると、表示で保存される設定オブジェクトは次のようになります。

{
  foo: {
    bar: "console.log('Welcome, ' + username +'. This is ZomboCom.');"
  }
}

Platform Launch ランタイムライブラリ内でアクションを使用するルールが起動した場合、ユーザーのコードを実行し、ユーザー名を渡します。

設定オブジェクトがアクションタイプのビューから保存された時点で、ユーザーのコードは単なる文字列になります。 この動作には、JSON との間でコードを適切にシリアル化できるため、利点もありますが、通常、コードが実行可能な関数ではなく、文字列として Platform Launch ランタイムライブラリに発行されるため、欠点がある場合もあります。eval または Function コンストラクターを使用して、アクションタイプのライブラリモジュール内のコードを実行しようとしても、コンテンツのセキュリティポリシーによって実行がブロックされる可能性があるので、この操作は推奨されません。

この状況の回避策として、Platform Launch ランタイムライブラリでユーザーのコードが発行されたときに、関数変換を使用して、そのコードを実行可能な関数に含めるよう Platform Launch に指示します。 この例の問題を解決するには、extension.json でタイプの定義の変換を次のように定義します。

{
  "transforms": [
    {
      "type": "function",
      "propertyPath": "foo.bar",
      "parameters": ["username"]
    }
  ]
}
  • type は、設定オブジェクトに適用する必要のある変換のタイプを定義します。
  • propertyPath は、設定オブジェクト内で変更する必要があるプロパティをどこで見つけるかを Platform Launch に指示する、ピリオドで区切られた文字列です。
  • parameters は、ラッピング関数のシグネチャに含める必要があるパラメーター名の配列です。

設定オブジェクトが Platform Launch ランタイムライブラリで発行されると、次のように変換されます。

{
  foo: {
    bar: function(username) {
      console.log('Welcome, ' + username +'. This is ZomboCom.');
    }
  }
}

その後、ライブラリモジュールは、ユーザーのコードを含む関数を呼び出し、username 引数に渡すことができます。

ファイル変換

ファイル変換を使用すると、Platform Launch ユーザーが記述したコードを、Platform Launch ランタイムライブラリとは別のファイルに発行できます。 このファイルは、Platform Launch ランタイムライブラリと共にホストされ、必要に応じて、実行時に拡張機能で読み込むことができます。

「カスタムスクリプト」アクションタイプを指定するとします。 アクションタイプのビューには、ユーザーがコードを入力できるテキスト領域が表示される場合があります。 ユーザーがテキスト領域に次のコードを入力したとします。

console.log('This is ZomboCom.');

ユーザーがルールを保存すると、表示で保存される設定オブジェクトは次のようになります。

{
  foo: {
    bar: "console.log('This is ZomboCom.');"
  }
}

ユーザーのコードを、Platform Launch ランタイムライブラリ内ではなく別のファイルに配置する必要があります。 Platform Launch ランタイムライブラリ内でアクションを使用するルールが起動する場合、ドキュメントの本文にスクリプト要素を追加して、ユーザーのコードを読み込みます。この例の問題を解決するには、extension.json のアクションタイプの定義の変換を次のように定義します。

{
  "transforms": [
    {
      "type": "file",
      "propertyPath": "foo.bar"
    }
  ]
}
  • type は、設定オブジェクトに適用する必要のある変換のタイプを定義します。
  • propertyPath は、設定オブジェクト内で変更する必要があるプロパティをどこで見つけるかを Platform Launch に指示する、ピリオドで区切られた文字列です。

設定オブジェクトが Platform Launch ランタイムライブラリで発行されると、次のように変換されます。

{
  foo: {
    bar: "//launch.cdn.com/path/abc.js"
  }
}

この場合、foo.bar の値は URL に変換されています。 正確な URL は、ライブラリの構築時に決定されます。 ファイルには常に拡張子 .js が付き、JavaScript 対応の MIME タイプを使用して配信されます。 将来、他の MIME タイプのサポートが追加される可能性があります。

変換の削除

デフォルトでは、設定オブジェクトのすべてのプロパティは、Platform Launch ランタイムライブラリに発行されます。 特定のプロパティが拡張機能の表示のみに使用される場合、特に機密情報( 例:シークレットトークン)が含まれる場合は、変換の削除を使用して、情報が Platform Launch ランタイムライブラリに発行されないようにする必要があります。

新しいアクションタイプを指定するとします。 アクションタイプのビューでは、特定の API への接続を許可する秘密キーをユーザーが入力できる場合があります。 ユーザーが次のテキストを入力したとします。

ABCDEFG

ユーザーがルールを保存すると、表示で保存される設定オブジェクトは次のようになります。

{
  foo: {
    bar: "ABCDEFG"
  }
}

Platform Launch ランタイムライブラリ内に bar プロパティを含めないようにします。 この例の問題を解決するには、extension.json のアクションタイプの定義の変換を次のように定義します。

{
  "transforms": [
    {
      "type": "remove",
      "propertyPath": "foo.bar"
    }
  ]
}
  • type は、設定オブジェクトに適用する必要のある変換のタイプを定義します。
  • propertyPath は、設定オブジェクト内で変更する必要があるプロパティをどこで見つけるかを Platform Launch に指示する、ピリオドで区切られた文字列です。

設定オブジェクトが Platform Launch ランタイムライブラリで発行されると、次のように変換されます。

{
  foo: {
  }
}

この場合、foo.bar の値は設定オブジェクトから削除されています。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now