Android の検索機能をアプリに統合する

検索は Android の主要なユーザー機能です。コンテンツがデバイス上にあるかインターネット上にあるかにかかわらず、ユーザーは利用可能なデータを検索できる必要があります。Android では、ユーザーに一貫した検索エクスペリエンスを提供するために、アプリの検索の実装に役立つ検索フレームワークを提供しています。

図 1. カスタム検索候補が表示された検索ダイアログ

検索フレームワークには、検索入力の 2 つのモードが用意されています。画面の上部にある検索ダイアログと、アクティビティ レイアウトに埋め込むことができる検索ウィジェット(SearchView)です。いずれの場合も、Android システムは、検索を行う特定のアクティビティに検索クエリを配信することで、検索の実装をサポートします。検索ダイアログまたは検索ウィジェットを有効にして、ユーザーの入力に応じて検索候補を表示することもできます。図 1 は、オプションの検索候補が表示された検索ダイアログの例を示しています。

検索ダイアログまたは検索ウィジェットを設定すると、次のことが可能になります。

  • 音声検索を有効にします。
  • ユーザーの最近のクエリに基づいて検索候補を表示する。
  • アプリデータの実際の結果と一致するカスタム検索候補が表示されます。
  • アプリの検索候補をシステム全体のクイック検索ボックスに表示します。

: 検索フレームワークには、データを検索する API は用意されていません。検索を実行するには、データに適した API を使用する必要があります。たとえば、データが SQLite データベースに保存されている場合は、android.database.sqlite API を使用して検索を行います。

また、アプリの検索インターフェースを呼び出す専用の [SEARCH] ボタンがデバイスにある保証はありません。検索ダイアログまたはカスタム インターフェースを使用する場合は、検索インターフェースを有効にする検索ボタンを UI に配置する必要があります。詳細については、検索ダイアログを呼び出すをご覧ください。

以下のページでは、Android のフレームワークを使用して検索を実装する方法を説明しています。

検索インターフェースを作成する
検索ダイアログまたは検索ウィジェットを使用するようにアプリを設定する方法が説明されています。
最近のクエリの候補を追加する
以前に使用したクエリに基づいて候補を表示する方法が説明されています。
カスタム候補を追加する
アプリのカスタムデータに基づいて候補を表示し、システム全体のクイック検索ボックスに表示する方法。
検索可能な構成
検索可能な構成ファイルのリファレンス ドキュメント。他のドキュメントでも、特定の動作に関して構成ファイルについて説明しています。

ユーザーのプライバシーを保護する

アプリに検索を実装する際は、ユーザーのプライバシーを保護するための措置を講じてください。多くのユーザーは、検索などのスマートフォンでのアクティビティを個人情報と見なしています。ユーザーのプライバシーを保護するため、次の原則を遵守してください。

  • 個人情報をサーバーに送信しないでください。また、送信する必要がある場合はログに記録しないでください。

    個人情報とは、名前、メールアドレス、お支払い情報など、ユーザーを個人を特定できる情報のほか、そうした情報に合理的に関連付けることができるその他のデータを指します。アプリがサーバーのサポートを利用して検索を実装する場合は、検索クエリとともに個人情報を送信しないでください。たとえば、郵便番号の近くにある企業を検索する場合は、ユーザー ID も送信する必要はありません。サーバーには郵便番号だけを送信してください。個人情報を送信する必要がある場合は、ロギングしないでください。ログに記録する必要がある場合は、データを慎重に保護し、できるだけ早く消去してください。

  • 検索履歴を削除する方法をユーザーに提供します。

    検索フレームワークを使用すると、ユーザーの入力中にアプリがコンテキストに応じた候補を提供できます。候補は、以前の検索など、以前のセッションでユーザーが行った操作に基づいて表示されることがあります。ユーザーは過去の検索内容を他のデバイス ユーザーに知られたくない場合があります。過去の検索アクティビティを明らかにできる候補をアプリが提供する場合は、ユーザーが検索履歴を消去する方法を実装します。SearchRecentSuggestions を使用している場合は、clearHistory() メソッドを呼び出すことができます。カスタム候補を実装する場合は、ユーザーが実行できる同様の「履歴の消去」メソッドをコンテンツ プロバイダで提供する必要があります。