SharePoint の検索アドイン

検索 SharePoint アドインと、独自の検索アドインを作成する方法について説明します。作成したアドインは、オンプレミスの展開とOffice 365の両方で使用できるように、SharePoint アドイン カタログに追加できます。 検索アドインは、元のソース文書ではなく、検索インデックスに格納されたデータにのみ有効です。

SharePoint アドインは、SharePoint Web サイトの機能を拡張する自己完結型の機能です。 これらのアドインは、最高の Web と SharePoint を統合することで、特定のビジネスとエンド ユーザーのニーズを解決します。 アドインには、リスト、リモート イベント レシーバー、コンテンツ タイプ、ワークフロー、ワークフロー カスタム アクティビティ、サイト列、モジュール、メニュー項目のカスタム アクション、クライアント Web パーツ、検索構成などのさまざまな SharePoint 要素を含めることができます。 詳細については、「SharePoint アドイン」を参照してください。

検索アドインとは、検索機能を使用する SharePoint アドイン アドインです。 検索アドインでは、SharePoint 検索 API を使ってコンテンツを検索します。 アドイン マニフェストで設定されている権限のタイプに応じて、アドインのコンテンツの内側または外側のいずれかを検索できます。 また、1 つの SharePoint インストール環境から別のインストール環境に、検索アドインを使用して検索構成を配布することもできます。 検索アドインのコア設計は、選択した展開方法によって決まります。 次のセクションでは、使用可能な選択肢とそのメリットを要約します。 詳細については、「SharePoint アドインを開発およびホストするためのパターンを選択する」を参照してください。

検索アドインを展開する

検索アドインの展開には、次の 2 つの方法があります。

  1. SharePoint ホスト型 - オンプレミスの展開。 検索アドインは会社のサーバーの社内ネットワークの内側でホストされます。 会社の管理者がこのアドインを管理します。 このシナリオでは、ハードウェアとソフトウェアが管理者によってローカルに保守されるため、展開の柔軟性とサポートが実現します。

  2. プロバイダーホスト型 - ホストしている任意の Web サーバー。 検索アドインは、顧客の SharePoint サーバーの外部にある任意のプロバイダーによってホストされます。

検索のアドインの開発環境

検索アドインを作成するには、以下の環境を使用します。

  • Microsoft Visual Studio 2012、Microsoft Visual Studio 2013 または Visual Studio 2015

Visual Studio 2013 以降では、オンプレミスと Office 365 の両方で検索アドインを公開できます。 開発環境と、それらを使用して検索アドインを作成する方法の詳細については、「 SharePoint の一般的な開発環境を設定する」を参照してください。

検索アドイン用の API

検索アドイン用に SharePoint が提供する検索関連の広い範囲にわたる API を使用できます。次の表にこのような API とそのクラス ライブラリの場所を示します。

検索アドイン用の SharePoint API

API 名 クラス ライブラリ
.NET クライアント オブジェクト モデル (CSOM)
Microsoft.SharePoint.Client.Search.dll
Silverlight CSOM
Microsoft.SharePoint.Client.Search.Silverlight.dll
ECMAScript (JavaScript, JScript) オブジェクト モデル (JSOM)
SP.search.js
REST API の検索
http://server/_api/search/query

コード サンプル

ここではさまざまな API を使用したコード サンプルをいくつか示します。 各コード サンプルでは、キーワード "SharePoint" を含むシンプルな 検索 クエリが Search Service アプリケーション (SSA) に送信されます。

Client-side Object Model (CSOM)


using (ClientContext clientContext = new ClientContext("http://localhost"))
{
    KeywordQuery keywordQuery = new KeywordQuery(clientContext);
    keywordQuery.QueryText = "*";
    SearchExecutor searchExecutor = new SearchExecutor(clientContext);
    ClientResult<ResultTableCollection> results = 
        searchExecutor.ExecuteQuery(keywordQuery);
    clientContext.ExecuteQuery();
}

JavaScript Object Model (JSOM)


var keywordQuery = new
Microsoft.SharePoint.Client.Search.Query.KeywordQuery(context);
keywordQuery.set_queryText('SharePoint');
var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(context);
results = searchExecutor.executeQuery(keywordQuery);
context.executeQueryAsync(onQuerySuccess, onQueryFail);

REST

HTTP GET リクエスト


http://mylocalhost/_api/search/query?querytext='SharePoint'

HTTP POST リクエスト

{
'__metadata' : {'type' : 'Microsoft.Office.Server.Search.REST.SearchRequest'},
'Querytext' : 'SharePoint'
}

検索アドインの権限

検索アドインは、Search Service アプリケーション (SSA) にクエリ要求を送信します。アドインが正しく機能するには、さまざまな種類のアクセス許可が必要です。 これらのアクセス許可は、各 SharePoint アドインの一部であるアドイン マニフェスト ファイルを使用して構成できます。 次の図に示すように、アドイン マニフェスト ファイルをテキスト エディターで直接変更することも、Visual Studio または Napa で変更することもできます。

図 1: Visual Studio 2015 での検索アドインの権限の設定

VS による検索アプリのアクセス許可構成

図 2: "Napa" Office 365 開発ツールでの検索アドインの権限の設定

Napa による検索アプリのアクセス許可構成

SharePoint アドインは独自の ID を持ち、アドイン プリンシパルと呼ばれるセキュリティ プリンシパルに関連付けられています。 ユーザーやグループと同じように、アドイン プリンシパルには一定のアクセス許可と権限があります。 アドイン プリンシパルはアドイン Web に対するフル コントロール権限があるため、必要なのは、ホスト Web や、アドイン Web の外部の場所 (サイト コレクションなど) にある SharePoint リソースへのアクセス許可を要求することだけです。 他の SharePoint アドイン とは異なり、検索アドインには QueryAsUserIgnoreAppPrincipal と呼ばれるユーザーレベルの権限だけが必要となります。 この権限があれば、ユーザーの権限に基づいて検索アドインをクエリできます。 つまり、ユーザーの ACL に基づいて検索結果が返されます。

アドインのマニフェスト ファイルに対するアクセス許可の要求

アドインのマニフェスト ファイルは XML 形式であり、直接編集できます。 アクセス許可を取得するには、次の例のような要求を作成します。


<AppPermissionRequests>
  <AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal" />
</AppPermissionRequests>

関連項目