Android 8.0 では、Android 設定アプリによって候補のリストが提供されます。 通常、これらの候補はスマートフォンの機能を活かすもので、カスタマイズ可能です(「サイレント モード スケジュールの設定」や「Wi-Fi 通話の有効化」など)。この機能では、任意のコンテキスト シグナル、または候補に対するユーザーの過去の操作に基づいて候補のランク付けが行われます。
現在のデフォルトの Android オープンソース プロジェクト(AOSP)ランキング モデルは、候補に対するユーザーの以前の操作に基づいています。これは、インタラクション シグナルに適切に重み付けするロジスティック回帰を使用してトレーニングされる、単純な線形モデルです。デフォルトの実装では、候補をランク付けして、候補に対するユーザーの操作の予測性を高めるために、表示された候補、クリックされた候補、拒否された候補をそれらのイベントの最新性とともに指標として使用します。このモデルは、ログに記録されたユーザーデータの一部で構築されています。デバイス メーカー(OEM)は、収集したデータに基づいて独自のランキング モデルを開発することができ、場合によってはコンテキスト シグナルを追加してランキングを調整できます。
実装
AOSP でデフォルトの packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionRanker.java
の実装を確認できます。
この機能はフラグ isSmartSuggestionEnabled
(デフォルトで false に設定されている)によって保護されています。有効にする(true に設定する)と、デフォルトの AOSP 実装を使用して追加の変更を行わなくても動作します。OEM は、デフォルトの実装を使用するか、独自の実装を導入してこの機能を有効にできます。
OEM が機能をカスタマイズするには、platform/packages/apps/Settings/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
機能を実装してファイルの rankSuggestions
メソッドをオーバーライドします。
このメソッドは、候補タイルおよび対応する suggestionId を含む 2 つのリストを取得します。このメソッドでは、目的のランキング スコアのみに従ってリスト内のタイルが並べ替えられます。suggestionId を使用して候補を一意に識別し、ランキングの実施(特定の候補に対する操作の最新性など)に応じて、候補に関する必要な過去の情報を抽出できます。
検証
実装者は、packages/apps/Settings/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionRankerTest.java
に似た単体テストを作成してランキングを検証し、機能バージョンが意図したとおりに動作することを確認できます。