Windows 上のアプリ アクションは、ユーザー ワークフローにシームレスに統合して、他のアプリやエクスペリエンスからアクセスできるように、Windows アプリが実装および登録できる個々の動作の単位です。
アプリ アクションとは
アプリ アクションは、機能のアトミックな単位です。 アプリはアクションをビルドして登録します。その後、Windows やその他のアプリは、ユーザー ワークフロー内のコンテキストに応じて関連する時刻と場所で、登録されたアクションをユーザーに推奨できます。
アプリ アクションの実装
アクションは、URI 起動のアクティブ化を処理するか、 IActionProvider インターフェイスを実装して COM アクティブ化を使用して実装できます。 URI のアクティブ化を使用して単純なアプリ アクション プロバイダーを実装するチュートリアルについては、「 Windows でのアプリ アクションの概要」を参照してください。
アプリアクションを登録するには、アプリにパッケージ ID が必要です。 MSIX パッケージ マニフェストは、プロバイダー アプリでサポートされているアクションに関するメタデータを提供します。 アプリ アクション登録のアプリ パッケージ マニフェスト構文の詳細については、「 actions-provider-manifest.md」を参照してください。
アクションは、1 つ以上のアクションに関するメタデータを提供する JSON 形式を使用して定義されます。これには、アクションの一意の識別子や説明などの情報、アクションが操作する入力と出力の一覧が含まれます。 JSON アクション定義ファイルは、プロバイダー アプリと共にコンテンツとしてパッケージ化されます。 パッケージ内のファイルへのパスは、システムがアクション定義を検索して取り込むことができるように、アプリ パッケージ マニフェストで指定されます。 アクションを宣言するための JSON 形式の詳細については、「 Windows アプリ アクション プロバイダーのアクション定義 JSON スキーマ」を参照してください。
エンティティは、アプリ アクションが動作するオブジェクトです。 アクションはエンティティを入力として受け取り、エンティティを出力として返すことができます。 エンティティはサブタイプに分割され、アクションが操作できるさまざまな種類のコンテンツ (Document、Photo、Text など) を表します。 各エンティティの種類には、ファイルのパスやファイル拡張子など、各コンテンツ タイプに関連する情報を提供する一連のプロパティがあります。 エンティティは、アプリ アクションの入力と出力を宣言するために、アクション定義 JSON ファイルで JSON として表されます。 エンティティを表す一連の WinRT API は、コード内のエンティティを操作するためにも使用できます。 詳細については、 Windows.AI.Actions 名前空間を参照してください。
責任ある AI ノート
AI を活用したアクションを構築する場合、ユーザーに返されるエンティティに関して、アクション作成者としてコンテンツ モデレーションと不正使用の監視を実行する責任があります。 Microsoft Responsible AI ポリシーの詳細については、「Microsoft Responsible AI: プリンシパルとアプローチ」を参照してください。
注
子がアクション定義 JSON で 'contentAgeRating' プロパティを使用してアクションにアクセスできるようにする必要があるかどうかを検討します。
アプリ アクションの推奨シナリオ
アプリ アクションは、プロバイダー アプリの外部のシナリオやワークフローに適用できるアトミックな機能ユニットを提供することを目的としています。 たとえば、アクションによってテキストの一部が翻訳されたり、画像が処理されたりすることがあります。 動作を実装する Windows アプリに完全に固有のシナリオでは、アプリ拡張機能を使用してカスタム拡張ポイントを実装することをお勧めします。 詳細については、「 アプリ拡張機能を作成してホストする」を参照してください。
次の一覧では、アクションとして実装するための適切な候補となる可能性のあるいくつかの種類の機能について説明します。
- この機能は、幅広く適用可能で再利用可能です。 この機能は、複数のアプリまたはコンテキスト (ファイル操作、印刷など) での検出と再利用を目的としています。
- その他のアプリは、機能を構成および拡張できます。
- この機能はコンテキストに依存し、実行時に動的に検出する必要があります (UI にコンテキスト固有のコマンドを表示するなど)。
- この機能は、既存のシステム ツールや他のアプリ エコシステムと統合されます。
- この機能は、複雑なタスクを単一のより高いレベルのアクション (ユーザー主導型の自動化など) にカプセル化することで、ユーザーの操作を簡素化します。
- この機能は、アプリの内部コントロールとは無関係に動作することができ、厳密なアプリ固有のプロトコルに従う必要はありません。
- この機能は、システムまたは他のアプリのさまざまな部分 (ファイルを操作したりコンテンツを共有する API など) で一様な方法で検出および呼び出されることが想定されています。