Windows Search では現在、web コンテンツと検索結果を返すために、Microsoft Bing アプリからの Web 検索を使用します。 欧州経済地域 (EEA) では、Web 検索プロバイダーを実装するアプリをインストールして、Windows Search で Web コンテンツと検索結果を返すことができます。
検索プロバイダーは、検索プロバイダーを登録するために OS に必要な情報を提供するパッケージ マニフェスト ファイルを使用して MSIX パッケージ を作成することで、Search エクスペリエンスと統合されます。 インストール後、Windows Search エクスペリエンスでは、検索プロバイダーが既定で有効になります。 Windows設定では、ユーザーはインストールされている検索プロバイダーを有効または無効にし、検索結果のプロバイダーの順序を管理できます。 ユーザーは、Windows設定の Settings > Apps > Installed apps ページから検索プロバイダーを削除できます。
開発とテストの場合、開発者モードが有効になっていて、検索プロバイダー アプリがデバイスにサイドロードされている場合は、使用可能な検索プロバイダーの一覧に表示されます。 詳細については、「 開発者向けの設定」を参照してください。
検索プロバイダーが OS に登録されると、標準化されたクエリ文字列を使用して、パッケージ マニフェストでプロバイダーによって指定された HTTP エンドポイントにユーザー クエリが渡されます。 エンドポイントは、提案された結果を JSON ドキュメントで返します。 検索プロバイダーには、応答ドキュメントに推奨される各 URL と共に、プレビュー エンドポイント URL が含まれています。この URL は、検索結果 UI のプレビュー ウィンドウに表示される HTML ドキュメントを返します。
この記事では、検索プロバイダー アプリ パッケージを作成するためのガイダンスと、検索プロバイダーの HTTP エンドポイントを実装するためのプロトコルの詳細について説明します。
検索機能拡張アプリ パッケージを作成する
検索プロバイダーは、検索プロバイダーの名前や、検索候補とプレビューの HTTP エンドポイントなど、プロバイダーに関する必要な情報を含む MSIX パッケージを提供することで、OS に登録します。
検索プロバイダー アプリ拡張機能
アプリ パッケージ マニフェスト ファイルは、Windows アプリのさまざまな拡張機能と機能をサポートしています。 アプリ パッケージ マニフェストの形式は、 パッケージ マニフェスト スキーマ リファレンスに記載されているスキーマのセットによって定義されます。 検索プロバイダーは、 uap3:AppExtension 内で登録情報を宣言します。 拡張機能の Name 属性は、"com.microsoft.windows.websearchprovider" に設定する必要があります。
検索プロバイダーには、uap3:AppExtension の子として uap3:Properties を含める必要があります。 パッケージ マニフェスト スキーマでは、整形式の XML を必要とする以外に 、uap3:Properties 要素の構造は適用されません。 このセクションの残りの部分では、検索プロバイダーを正常に登録するために OS で想定される XML 形式について説明します。
<uap3:Extension Category="windows.appExtension">
<uap3:AppExtension Name="com.microsoft.windows.websearchprovider" DisplayName="SearchExampleApp" Id="ContosoSearchApp" PublicFolder="Public">
<uap3:Properties>
<!-- Search provider registration content goes here -->
</uap3:Properties>
</uap3:AppExtension>
</uap3:Extension>
要素階層
uap3:プロパティ
エンドポイント
プロトコル
エンドポイント
OS が検索クエリ要求を送信する HTTPS エンドポイントの URL。
プロトコル
指定された Web 検索結果を起動するときに使用されるプロトコル スキーマ。 指定したプロトコルが OS 上のアプリによって登録されていない場合は、既定のブラウザーが起動して検索結果が表示されます。 プロトコル スキーマの登録の詳細については、「 uap:Protocol」を参照してください。
パッケージ マニフェスト ファイルの例
次に、Windows Search プロバイダーを登録するための appmanifest.xml パッケージ マニフェスト ファイルの例を示します。
<!-- appxmanifest.xml -->
<uap3:Extension Category="windows.appExtension">
<uap3:AppExtension Name="com.microsoft.windows.websearchprovider" DisplayName="CustomSearch" Id="CustomSearchApp" PublicFolder="Public">
<uap3:Properties>
<Endpoint>https://customsearchendpoint</Endpoint>
<Protocol>customsearch</Protocol>
</uap3:Properties>
</uap3:AppExtension>
</uap3:Extension>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="customsearch"/>
</uap:Extension>
Windows検索プロバイダーの検索候補エンドポイントを実装する
検索プロバイダーは、ユーザーが [Windows検索] ボックスに入力したときに OS によって呼び出される HTTPS エンドポイントを公開して登録する必要があります。 このエンドポイントは、指定されたユーザー クエリの検索候補を含む JSON 形式の文字列を返す必要があります。 コンテンツは HTTPS 経由で配信する必要があります。 検索統合では、HTTP 経由で配信されるコンテンツはサポートされていません。
提案 HTTPS 要求の形式
提案エンドポイントへの HTTPS 要求では、次の形式が使用されます。
https://contoso.com?setlang=en-US&cc=US&qry=
検索候補エンドポイントに渡されるクエリ文字列パラメーターは次のとおりです。
| パラメーター | 説明 |
|---|---|
| setlang | クエリに関連付けられているロケール。 |
| CC | クエリに関連付けられている国コード。 |
| qry | ユーザーによって提供されるクエリ。 パラメーターに値がない場合(つまり、クエリ文字列に qry=として表示される)、ユーザークエリは空です。 検索プロバイダーは、空のクエリに応答して提案とプレビュー ページを引き続き提供できます。
手記 OS はクエリ文字列のサニタイズを実行しません。 検索プロバイダーは、クエリの受信時に独自のサニタイズを実装できます。 |
提案する HTTPS 応答ヘッダー
検索プロバイダーは、提案 HTTPS エンドポイントからの応答に次のヘッダーを含める必要があります。
- Access-Control-Allow-Origin: https://www.bing.com
- アクセスコントロール許可認証情報: true (Access-Control-Allow-Credentials: true)
- アクセス制御許可メソッド: GET
- Content-Type: application/json;charset=utf-8
- Content-Length: [正確な応答長にする必要があります]
提案応答の JSON 形式
検索プロバイダーの検索候補の HTTPS エンドポイントは、次の形式の JSON ドキュメントを返す必要があります。 キー名は、正確に形式と一致する必要があります。
| 鍵 | 説明 |
|---|---|
| 推奨事項 | ユーザー クエリに関連付けられている提案を表すキー Attributes を持つ JSON オブジェクトの一覧が含まれています。 |
| 属性 | 提案の属性を格納します。 |
| URL | プロバイダー Web サイトの検索候補の URL。 |
| クエリ | 検索候補に関連付けられているユーザー クエリ。 |
| プレビューウィンドウURL | 提案の HTML プレビューを取得できるプレビュー エンドポイントの URL。 |
| テキスト | 提案のテキストの説明。 |
{"Suggestions":
[{"Attributes":
{"url":"https://www.contoso.com/search?q=projection+matrix","query":"projection matrix","previewPaneUrl":"http://www.contoso.com/preview"} ,"Text":"projection matrix"},
{"Attributes":
{"url":"https://www.contoso.com/search?q=rotation+matrix","query":"rotation matrix","previewPaneUrl":"http://www.contoso.com/preview"} ,"Text":"rotation matrix"}
]
}
Windows Search プロバイダーのプレビュー エンドポイントを実装する
検索プロバイダーは、検索結果の各候補に関連付けられたページの HTML プレビューを提供する HTTPS エンドポイントの URL を返します。 プレビュー エンドポイント応答は、機能しているページの HTML コードを返す必要があります。
HTTPS 要求形式のプレビュー
プレビュー エンドポイントへの HTTPS 要求では、次の形式が使用されます。
https://contoso.com?Darkschemeovr=1
検索候補エンドポイントに渡されるクエリ文字列パラメーターは次のとおりです。
| パラメーター | 説明 |
|---|---|
| Darkschemeovr | 呼び出し元のWindowsシステムでダーク テーマが有効になっているかどうかを指定します。 ダーク テーマが有効な場合は値 1、ダーク テーマが無効な場合は 0 です。 |
HTTPS 応答ヘッダーのプレビュー
- Access-Control-Allow-Origin: https://www.bing.com
- アクセスコントロール許可認証情報: true (Access-Control-Allow-Credentials: true)
- アクセス制御許可メソッド: GET
- Content-Type: text/html;charset=utf-8
- Content-Length: [プレビュー html の正確な長さにする必要があります]
OPTIONSリクエストとクロスオリジンリソースシェアリング (CORS)
Windows Search クライアントは、各 GET 要求の前に HTTP OPTIONS (CORS プレフライト) 要求を送信します。 検索プロバイダーは OPTIONS 要求メソッドをサポートし、HTTP 200 OK で応答する必要があります。
関連資料
Windows developer