アプリのローカル データにインデックスを付ける方法

ローカルに格納されたアプリのデータに、Windows Search サービス (WSS) を使ってインデックスを付けることができます。

ドキュメント、メール、メディア (写真、音楽、ビデオなど) といったファイルをアプリで管理する場合、主要な要件として、ユーザーがデータの管理や取得をすばやく効率的に行うことができるように、ファイルのコンテンツまたはプロパティに構造的にインデックスを付ける必要があります。アプリ内にインデクサーを作成する必要はありません。アプリの開発者向けに便利で安全な方法が用意されており、WSS を有効にするだけでアプリ データにインデックスを付けることができます。

WSS を使ってアプリ データにインデックスを付ける主な利点を次に示します。

  • WSS では、一般的なほとんどの種類のドキュメントについて、コンテンツ テキスト全体にインデックスを付けることができます。また、WSS でファイルのプロパティにインデックスを付けることもできます。
  • 組み込みの検索コントラクトや File API を使って、インデックス付きデータを簡単に取得して再利用できます。
  • Windows Search には、ファイル システムのセキュリティ設定が適用されます。これにより、インデックス付きアプリ データが Windows インデクサーに安全に格納されます。

Windows Search は、JavaScript、C#、C++、VB.Net を使って記述されたすべての Windows ストア アプリで利用できます。

アプリで Windows Search を有効にする

アプリ データにインデックスを付けるように Windows Search に要求するのは簡単です。アプリ データ フォルダーの下に indexed という名前のフォルダーを作り、インデックスを付ける必要があるコンテンツを格納します。Windows Search では、ハード ドライブの他のインデックス化された場所と同様に indexed フォルダーが扱われます。 このフォルダーとそのすべてのサブフォルダーに含まれるファイル コンテンツまたはファイル メタデータ (プロパティ) にインデックスが付けられます。重要な考慮事項を以下に示します。

  1. indexed フォルダーは、次のガイドラインに従う必要があります。
    • indexed フォルダーは、localFolder ルートの下に作る必要があります。Windows Search では、このフォルダー内のすべてのコンテンツにインデックスを付けます。このフォルダーまたはそのサブフォルダー (すべてのレベルのサブフォルダー) に格納されたすべてのローカル ファイルにインデックスが付けられます。 indexed フォルダーはアプリごとに 1 つだけ作ることができます。
    • フォルダー名の indexed では、大文字と小文字は区別されません。
    • アプリ データ フォルダーの名前は、Windows ランタイム API では localFolder ですが、物理ハード ドライブでは LocalState です。テストのためにこのフォルダーにアクセスする場合は、フォルダー パスとして %user%\ AppData\Local\Packages\%packageName%\LocalState を使います。
    • indexed の下のフォルダー構造は深くしてもかまいませんが、Windows API では、ファイルまたはフォルダーのパスの長さが MAX_PATH の値 (260 文字) までに制限されます。そのため、indexed フォルダーの下にあるファイルやフォルダーがこの制限を超えないようにする必要があります。MAX_PATH について詳しくは、「パスの最大文字数制限」をご覧ください。
  2. Windows Search でインデックスが付けられるのはローカルに格納されたデータだけです。つまり、indexed フォルダーまたはそのサブフォルダーに格納されたローカル ファイルにのみインデックスが付けられます。
  3. indexed フォルダーをインストール時に作ることはできません。 このフォルダーは、アプリの実行時にのみ作ることができます。コンテンツのサイズによっては、Windows Search が完了するまでに時間がかかるため、indexed フォルダーはアプリの最初の実行時に作ることをお勧めします。indexed フォルダーを作ると、Windows Search によって、アプリのコンテンツに自動的にインデックスが付けられます。ファイルやサブフォルダーを変更 (追加、削除、更新) すると、インデックス化処理のスケジュールも自動的に変更され、インデクサーに変更が反映されます。Windows Search では、CPU 使用率を監視して、独自のスケジュールに従ってインデックス化処理を最適化します。

セキュリティ

WSS には、Windows ファイル システムのセキュリティ設定が適用されます。これにより、インデックス付きアプリ データがインデクサーに安全に格納されます。具体的には、次のようになります。

  • 同じ PC に複数のユーザー アカウントがある場合: Windows ストア アプリは、ユーザー アカウントごとにインストールされます。同じ PC で複数のユーザーが同じアプリを使う場合、アプリのインスタンスごとに、異なる物理パスに専用の indexed フォルダーが作成されます。そのため、その物理パスへのアクセスが許可されている場合を除き、他のアカウントのインデックス付きデータにアクセスすることはできません。
  • 複数のアプリのアプリ データにインデックスを付ける場合: Windows ファイル システムでは、アプリから別のアプリのデータに直接アクセスすることは許可されません。そのため、他のアプリのインデックス付きデータにアクセスすることはできません。

インデックス付きコンテンツの取得

アプリ データにインデックスを付けると、ファイル API を使ってデータを取得できます。

関連トピック

Windows Search サービス

Windows Search サービスで IFilters を使ってコンテンツにインデックスを付ける方法

Windows ストア アプリへの検索の追加