Microsoft SharePoint Onlineは、多くの企業でドキュメント管理やチーム間の情報共有に活用されています。しかし、蓄積されるファイルやページが増えるにつれて、必要な情報を素早く見つけ出すことが難しくなることがあります。Fessを利用すれば、SharePoint Online内のサイトページ、リスト、ドキュメントライブラリを横断的に全文検索でき、さらにSharePointで設定された権限に基づいてユーザーごとに適切な検索結果を表示できます。

今回は、SharePoint Onlineをクロールする方法について説明します。解説に使用するバージョンは、Fess 15.3.2です。

ユーザー認証の設定

SharePoint Onlineの利用者が検索できるようにするには、Microsoft Entra IDで管理されているユーザー情報を利用します。Entra IDを使った認証については第69回 Microsoft Entra ID での認証方法を参照してください。

クロール用アプリの登録

次に、FessがSharePoint Onlineにアクセスするためのクロール用アプリを作成します。

Azure Portalにログインして「Microsoft Entra ID」をクリックします。左メニュー「管理」→「アプリの登録」をクリックし、上部に表示されている「新規登録」をクリックします。

  • アプリの新規登録

「名前」を入力し、サポートされているアカウントの種類で「この組織ディレクトリのみに含まれるアカウント」を選択して「登録」をクリックします。

  • アプリの名前

左側に表示されている「証明書とシークレット」→「新しいクライアントシークレット」をクリックします。

  • アプリの証明書

「説明」への入力は任意ですが、ここではアプリと同じ名前を入れておきます。「有効期限」を選択して「追加」をクリックします。

  • アプリの有効期限

追加された行の値をコピーしておきます。このキーの値は再度表示されないため、別画面に遷移する前に必ず控えておいてください。この値はFessでのクロール設定で使用します。

  • クライアントシークレットの値

次に左側に表示されている「APIのアクセス許可」をクリックし、「アクセス許可の追加」をクリックします。

  • APIのアクセス許可

APIは「Microsoft Graph」を選択します。

  • APIの選択

「APIアクセス許可の要求」で「アプリケーションの許可」をクリックし、必要なアクセス許可を検索して、チェックボックスにチェックを入れます。クロール対象によって必要な権限は異なるので、fess-ds-microsoft365のREADMEを参考にしてください。

  • Files.Read.All
  • Group.Read.All
  • Sites.Read.All

チェックを入れ終わったら「アクセス許可の追加」をクリックします。

  • APIのアクセス許可

APIのアクセス許可画面に戻ったら「[テナント名]に管理者の同意を与えます」をクリックします。確認ダイアログが表示されるので、「はい」をクリックしてください。

  • 管理者の承認

左側に表示されている「概要」をクリックし、「アプリケーション(クライアント)ID」を確認してください。このIDはFessでのクロール設定で使用しますので、控えておいてください。

  • クライアントIDの確認

クロール設定に必要なID情報

アプリのクライアントID以外にも必要になる情報がありますので、ここで解説します。

テナントID

Azure Portalの「Microsoft Entra ID」をクリックします。ここで表示されている「テナントID」を確認します。

  • テナントID

GUID

Azure Portalの「Microsoft Entra ID」→左メニューの「管理」→「グループ」をクリックします。「すべてのグループ」をクリックして、サイト名と同じグループ名を探してクリックしてください。

  • GUID

ここで表示されたオブジェクトID(GUID)をコピーしておきます。Fessのパーミッションとして指定する場合は、GUIDの先頭に「{group}」を付与して設定することで、Fess上でグループの権限として扱われます。

サイトID

Graph Explorerを使用します。 右上の「Sign in」ボタンをクリックし、対象テナントの管理者アカウントでサインインしたら、リクエスト入力欄に以下を入力します。

https://graph.microsoft.com/v1.0/sites/{hostname}:/sites/{site-name}
  • {hostname}:SharePointのドメイン名(例:contoso.sharepoint.com
  • {site-name}:サイトのURLの最後の部分(例:sales

「Run Query」をクリックして、下部に表示された結果を確認します。"id"に出力される値がサイトIDです。

  • サイトID

リストID

リストIDの取得もGraph Explorerを使用します。 リクエスト入力欄には以下を入力します。

https://graph.microsoft.com/v1.0/sites/{hostname}:/sites/{site-name}:/lists
  • {hostname}:SharePointのドメイン名(例:contoso.sharepoint.com
  • {site-name}:サイトのURLの最後の部分(例:sales

「Run Query」をクリックして、下部に表示された結果を確認します。"id"に出力される値がリストIDです。

  • リストID

プラグインのインストール

Fessの管理画面にログインし、管理画面の左メニューで「システム」→「プラグイン」をクリックします。画面左上の「インストール」をクリックして、インストールするプラグインを選択します。ここでは、プルダウンメニューから「fess-ds-microsoft365-15.3.0」を選択し、「インストール」ボタンをクリックしてプラグインをインストールしてください。

  • プラグインのインストール

インストール後、プラグインの一覧画面を表示して「fess-ds-microsoft365」が表示されていることを確認します。

  • プラグインの一覧画面

クロール設定

クロールはデータストアクロールで行います。以下のデータストアタイプを使ってSharePoint Onlineをクロールできます。

項目 説明
sharePointPageDataStore サイトページ、ニュース記事などをクロールする
sharePointListDataStore リストをクロールする
sharePointDocLibDataStore ドキュメントライブラリ情報(メタデータ)をクロールする
oneDriveDataStore ドキュメントライブラリ内のファイルをクロールする

サイト内にあるページをクロールする

以下は指定したサイト内にあるページ、ニュース記事などをクロールする場合の設定例です。

Fessの管理画面にログインし、「クローラ」→「データストア」→「新規作成」をクリックします。設定が必要な項目は以下の5つです。

  • 名前
  • ハンドラ
  • パラメータ
  • スクリプト
  • パーミッション

「名前」にはこのクロール設定名として任意の文字列を入力し、「ハンドラ」は「sharePointPageDataStore」を選択してください。「パラメータ」は、以下を入力してください。

tenant=テナントID
client_id=クロール用アプリのクライアントID
client_secret=クロール用アプリのシークレットの値
site_id=サイトID
default_permissions={group}GUIDの値

「スクリプト」は、以下を入力してください。

title=page.title
content=page.content
mimetype=page.mimetype
created=page.created
last_modified=page.last_modified
url=page.url
role=page.roles

「パーミッション」は、デフォルトで「{role}guest」が入っています。このままだと、権限を持たないユーザーも検索できてしまうので、「{role}guest」を削除して、空欄にします。

入力後は「作成」ボタンをクリックして、設定を保存してください。

管理画面の左メニュー「システム」→「スケジューラ」で「Default Crawler」のジョブを開きます。「今すぐ開始」をクリックしてクローラを開始し、ジョブの状態が「実行中」から完了状態に戻るまで待ちます。

クロール完了後、管理画面からログアウトして、Entra IDユーザーでFessにログインします。ログイン後、検索画面から検索語を入力して検索してください。Entra IDユーザーでログインしているので、権限が一致する結果のみ表示されます。

  • サイトページの検索

リストをクロールする

リストをクロールする場合は、以下を設定します。

Fessの管理画面にログインし、「クローラ」→「データストア」→「新規作成」をクリックします。

「名前」にはこのクロール設定名として任意の文字列を入力し、「ハンドラ」は「sharePointListDataStore」を選択してください。

「パラメータ」は、以下を入力してください。

tenant=テナントID
client_id=クロール用アプリのクライアントID
client_secret=クロール用アプリのシークレットの値
site_id=サイトID
list_id=リストID
default_permissions={group}GUIDの値

「スクリプト」は、以下を入力してください。

title=item.title
content=item.content
created=item.created
last_modified=item.modified
url=item.url
role=item.roles

「パーミッション」は「{role}guest」を削除して、空欄にします。

入力後は「作成」ボタンをクリックして、設定を保存してください。

ページクロールと同様にクロールジョブを実行し、クロール完了後にEntra IDユーザーで検索してみてください。サイト内に作成されたリストのアイテムが検索できます。

  • リストアイテムの検索

ドキュメントライブラリ情報をクロールする

ドキュメントライブラリ情報をクロールする場合は、以下を設定します。

「名前」は任意の文字列を入力し、「ハンドラ」は「sharePointDocLibDataStore」を選択してください。

「パラメータ」は、以下を入力してください。

tenant=テナントID
client_id=クロール用アプリのクライアントID
client_secret=クロール用アプリのシークレットの値

「スクリプト」は、以下を入力してください。

title=doclib.name
content=doclib.content
mimetype=doclib.mimetype
created=doclib.created
last_modified=doclib.last_modified
url=doclib.web_url
role=doclib.roles

「パーミッション」は「{role}guest」を削除して、空欄にします。

入力後は「作成」ボタンをクリックして、設定を保存してください。

先ほどと同様に、クロールジョブを実行してインデックスを作成してください。

  • ドキュメントライブラリ情報の検索

ドキュメントライブラリ内のファイルをクロールする

ドキュメントライブラリ内のファイルをクロールする場合は、以下を設定します。

「名前」は任意の文字列を入力し、「ハンドラ」は「oneDriveDataStore」を選択してください。

「パラメータ」は、以下を入力してください。

tenant=テナントID
client_id=クロール用アプリのクライアントID
client_secret=クロール用アプリのシークレットの値
exclude_pattern=.*PersonalCacheLibrary.*
shared_documents_drive_crawler=true
user_drive_crawler=false
group_drive_crawler=false

以下はパラメーターに関する補足です。その他のパラメーターについては、fess-ds-microsoft365のREADMEを参照してください。

パラメーター 説明
exclude_pattern 除外するライブラリ名の正規表現パターンを指定
shared_documents_drive_crawler 共有ドキュメントをクロール対象とするか
user_drive_crawler ユーザードライブをクロール対象とするか
group_drive_crawler グループドライブをクロール対象とするか

「スクリプト」は、以下を入力してください。

title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created
last_modified=file.last_modified
url=file.web_url
role=file.roles

「パーミッション」は「{role}guest」を削除して、空欄にします。

入力後は「作成」ボタンをクリックして、設定を保存してください。

設定保存後、クロールジョブを実行してインデックスを作成してください。

  • ドキュメントライブラリの検索

* * *

今回は、FessでSharePoint Onlineのサイトページ、リスト、ドキュメントライブラリをクロールする方法を紹介しました。FessとSharePoint Onlineを連携させることで、散在する情報を一元的に検索できるようになり、業務効率の向上が期待できます。SharePoint Onlineを活用している環境で検索性に課題を感じている場合は、ぜひFessによる全文検索をお試しください。