次の方法で共有


アプリ マニフェストで Microsoft 365 ホスト ランタイム要件を指定する

Microsoft Teams個人用タブまたはメッセージ拡張アプリをアプリ マニフェスト バージョン 1.13 以降を使用するようにアップグレードすると、既定で他の Microsoft 365 アプリケーション ホストで使用できます。 ただし、アプリに特定のホストでまだサポートされていない機能も含まれている場合は、アプリが部分的にしか読み込まれず、予期しないユーザー エクスペリエンスが発生する可能性があります。

たとえば、アプリ マニフェスト スキーマ バージョン 1.17 で定義され、ボットの設定を表すボットと構成タブが含まれているアプリを考えてみましょう。 アプリは Outlook と Microsoft 365 (Office) アプリに読み込まれますが、ボット自体を持たないユーザーにのみボット構成タブを表示します。

高品質のアプリ エクスペリエンスが目的のユーザー ベースに到達するようにするには、アプリ マニフェストでアプリのランタイム要件を指定します。 これにより、該当する Microsoft 365 ホストでの動作を調整したり、サポートする準備ができていないコンテキストでの表示から除外したりできます。

アプリのランタイム要件の指定は、次のようなシナリオで役立ちます。

  • 一方向の依存関係: 1 つのアプリ機能の唯一の目的がアプリで別の機能をサポートする場合は、プライマリ アプリの機能が読み込まれている場合にのみ表示されるようにすることができます。 たとえば、アプリにタブ拡張機能とメッセージ拡張機能の両方が含まれており、ユーザーがメッセージ拡張機能を構成するための設定ページとしてタブ機能が含まれている場合は、メッセージ拡張機能をサポートしていないホストに設定タブが読み込まれないことを指定できます。

  • 相互依存関係: アプリに、正常に機能するために一緒に読み込む必要がある特定のアプリ機能がある場合は、すべての機能をサポートする Microsoft 365 ホストでのみアプリを 使用 できることを確認できます。 たとえば、タブ、ボット、およびメッセージ拡張機能がすべて連携してアプリのコア ユーザー シナリオをサポートする場合は、それらの機能を常に一緒に読み込むか、まったく読み込まないように指定できます。

  • 機能の要件: アプリに、特定の Microsoft 365 ホストでサポートされていないランタイム要件を持つ機能がある場合は、それらのホストで実行されているアプリ エクスペリエンスから 、それらの機能が (読み込まれたが機能しないではなく) シームレスに省略 されるようにすることができます。 たとえば、各ダイアログとして開くことができる項目のタブベースのダッシュボード ビューがアプリに含まれており、各ダイアログにボットに送信される情報が含まれている場合は、アプリが特定のホストに読み込むのに必要な主要な機能としてボットベースのダイアログを指定できます。

Microsoft 365 ホストのサポート

次の Microsoft 365 ホスト アプリケーションでは、アプリ マニフェストでランタイム要件を指定する機能がサポートされています。

Microsoft 365 ホスト アプリケーション Web Desktop Mobile
Teams ✔️ ✔️ ✔️
Outlook ✔️ ✔️ (新しい Outlook のみ) ✔️
Microsoft 365 (Office)
Microsoft 365 Copilot

注:

Microsoft 365 (Office) アプリの名前がアプリMicrosoft 365 Copilotに変更されています。 アプリ アイコンも、Microsoft 365 (Office) アプリのアイコンから Microsoft 365 Copilot のアプリ アイコンに変更されています。 アプリの UI とアイコンへのUpdatesは、ロールアウト中です。

アプリ機能間のリレーションシップを指定する (elementRelationshipSet)

アプリ マニフェストに elementRelationshipSet を含めることで、アプリの個々の機能間でリレーションシップを指定できます。 このオブジェクトを使用して、 一方向の依存関係 とアプリの機能間の 相互依存関係 の両方を指定します。

次のアプリ マニフェスト機能は、一方向または相互の依存関係を持つと指定できます。

  • タブ: 個人用 (staticTabs) と構成可能 (configurableTabs)
  • 個々のコマンドを含むメッセージ拡張機能 (composeExtensions)
  • ボット (bots)

各アプリ機能は、ボットのbotId、静的タブのentityId、構成可能なタブとメッセージ拡張機能のidにマップする、新しく導入されたプロパティ idによって定義されます。 Teams とその他の Microsoft 365 ホストは、1 つの構成可能なタブ、1 つのメッセージ拡張機能、またはその両方を含むアプリをサポートします。 id プロパティは、ホストのサポートがこれらの機能の複数のインスタンスに対応するように拡張されている場合、アプリの将来性を証明します。

重要

作成するリレーションシップが、次の検証規則に準拠していることを確認します。

  1. elementRelationshipSetで指定する要素には、アプリ マニフェストに定義が必要です。 たとえば、アプリ マニフェスト内の対応する定義 (一致するid値) を持たないoneWayDependencies オブジェクトのdependsOn セクションに一覧表示されているelementまたはcommandIdは、マニフェスト検証エラーになります。 elementRelationshipSetで認識するには、configurableTabまたはcomposeExtensionid プロパティを指定する必要があります。
  2. 特定の機能のセットは、 mutualDependency または oneWayDependencyによってのみグループ化できますが、両方でグループ化することはできません。 たとえば、一方向の依存関係 (A はB に依存) と相互依存関係 (AB は相互に依存) の両方を指定すると、 A は B リレーションシップに依存するが 2 回表されるため、マニフェスト検証エラーが発生します。
  3. 循環的な一方向の依存関係は許可されません。 たとえば、A の指定は B リレーションシップに依存 し、B は A リレーションシップに依存 すると、マニフェスト検証エラーが発生します。

一方向の依存関係

oneWayDependencies配列を使用して、アプリの 1 つのコンポーネントが別のコンポーネントに依存するケースを記述します。 配列内のオブジェクトごとに、依存コンポーネント (element) と依存するコンポーネント (dependsOn) を指定します。 また、特定のアプリ機能のサポートを必要とする個々のコマンドを指定することもできます。 これらの機能がランタイム ホストでサポートされていない場合、ユーザーは使用できません (ただし、他のすべてのコマンドが実行されます)。

次の JSON スニペットは、ボットに対する一方向の依存関係を持つ特定のメッセージ拡張コマンドを示しています。

    "elementRelationshipSet": {
      "oneWayDependencies" : [
        {
          "element" : {
            "name" : "composeExtensions",
            "id" : "composeExtension-id",
            "commandIds": ["exampleCmd1", "exampleCmd2"]
          },
          "dependsOn" : [
              {"name" : "bots", "id" : "bot-id"}
            ]
        }
      ]
    }

相互依存関係

mutualDependencies配列を使用して、目的の関数をサポートするために一緒に読み込む必要があるアプリ機能をグループ化します。 配列内の各オブジェクトは、相互に依存するアプリ機能のセットを表します。 次の JSON スニペットは、相互に依存するボット、静的タブ、メッセージ拡張機能、および構成可能なタブを示しています。

    "elementRelationshipSet": {
      "mutualDependencies" : [
        [
                {"name" : "bots", "id" : "bot-id"}, 
                {"name" : "staticTabs", "id" : "staticTab-id"},
                {"name" : "composeExtensions", "id" : "composeExtension-id"},
                {"name" : "configurableTabs", "id": "configurableTab-id"}
        ]
      ]
    },

特定のアプリ機能のランタイム要件を指定する (requirementSet)

個々のアプリ機能定義内で、 requirementSetを使用して特定の TeamsJS ランタイム要件を指定できます。 これにより、アプリ機能は、重要な TeamsJS 機能をサポートする Microsoft 365 ホストでのみ読み込まれます。

次の TeamsJS 機能は、 staticTabscomposeExtensions、および botsのランタイム要件として指定できます。

次の JSON スニペットは、ホストがタブとボットから呼び出される HTML ダイアログ (TeamsJS v1.x ではタスク モジュールと呼ばれます) をサポートする必要がある静的タブを示しています。

    "staticTabs": [
        {
            "entityId": "idForPage",
            "name": "Display name of tab",
            "contentUrl": "https://contoso.com/content?host=msteams",
            "contentBotId": "Specifies to the app that tab is an Adaptive Card Tab. You can either provide the contentBotId or contentUrl.",
            "websiteUrl": "https://contoso.com/content",
            "scopes": [
                "personal"
            ],
            "requirementSet": {
                "hostMustSupportFunctionalities": [
                  {"name": "dialogUrl"},
                  {"name": "dialogUrlBot"}
                ]
            }
        }
    ],

コード サンプル

サンプルの名前 説明 JavaScript
要件のターゲット: 一方向の依存関係 アプリ機能間の一方向の依存関係を指定する方法を示すサンプル アプリ。 表示
要件のターゲット: 相互依存関係 アプリ機能間の相互依存関係を指定する方法を示すサンプル アプリ。 表示

関連項目