Topics API for Mobile の概要

フィードバックを送信

Topics API について

モバイル広告では、広告主はユーザーの興味との関連性が高い広告を配信したいと考えます。たとえば、料理関連の情報に興味を持っているユーザーであれば、自分の興味と関係のない広告よりも、料理に関連する広告のほうに関心を示すでしょう。

コンテンツ ターゲット広告は、 視聴(および宣伝)されている現在のコンテンツ。Vertex AI Feature Store の利点の 1 つは Topics API により、ユーザーの役に立つが、 関連性の高い広告を表示するため、コンテンツ ターゲット広告による収益化が難しい 安全なアプリをユーザーに提供できます。 分析できます。

Topics API は、デバイス上でのユーザーのアプリ使用状況に基づいて、興味に関する大まかなシグナルを推定します。トピックと呼ばれるこれらのシグナルは コンテキストなどのファースト パーティ シグナルを、 アプリ間で 個々のユーザーを把握できます

Topics API は、次のようなサードパーティの広告 SDK をサポートするように設計されています。 複数のアプリで運用されますこのサポートは これらの SDK が通常使用するような、アプリ間の関心事項を明らかにする あります。個々のアプリ デベロッパーは、 ユーザーに関する情報を収集します。

主なコンセプト

  • トピックは、ユーザーの興味を示すもので、人が読める形式になっています。Topics 分類に含まれます。
  • トピックは、呼び出し元(アプリ、またはアプリで使用されているサードパーティ SDK)によって参照されます。呼び出し元が、3 エポックの間に、トピックに関連付けられたアプリから Topics API リクエストを行った場合に参照されます。
  • エポックは、トピックの算出を行う期間です(例: 1 週間)。

仕組み

今回の提案では、Topics API を使用して、ユーザーのアプリ使用状況に基づいた興味に関する大まかな広告トピックを、呼び出し元に提供することを目的としています。これらのトピックを使用すると、広告を表示するアプリに関連するコンテキスト情報を補完でき、組み合わせることでユーザーに適した広告を見つけられます。

インタレスト ベース広告のためのトピック取得機能をセットアップする方法を示すコード例については、Topics API デベロッパー ガイドをご覧ください。注: API はまだ最終版ではありません。

トピックは事前に定義されたオープンソースの分類から選択されます。

プラットフォームは分類器モデルを使用してトピックを推定します。Topics API の実装と分類器の使用方法は Android オープンソース プロジェクトの一部となり、今後改善される予定です。

説明のため、インタレスト ベース広告を取得するためのトピックの使用方法を次のコード例に示します。ここで使用されている API は最終版ではありません。

// Initialize the Topics API.
…
topicsFuture = AdvertisingTopicsClient.getTopics();

// Retrieve Topics and use them in Ad request.
Futures.addCallback(
    topicsFuture,
    new FutureCallback<AdvertisingTopicsInfo>() {
        @Override
        public void onSuccess(@Nullable AdvertisingTopicsInfo topicsInfo) {
            // Sanitize Topics result.
            ...
            // Initialize ad request with Topics obtained.
            AdRequest adRequest = AdRequest.initialize(topicsInfo);
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle error.
            ...
        }
});

分類器モデルの仕組みをより深く理解するために、Android Topics Classifier Colab を使用して、システム内での各種アプリデータに対する反応をテストしてみてください。

Topics API へのアクセス権を取得する

Topics API にアクセスするには、広告テクノロジー プラットフォームの登録が必要です。詳しくは、プライバシー サンドボックス アカウントの登録をご覧ください。

詳細

  • ユーザーの上位 5 つのトピックが、週 1 回などのエポックごとに、デバイス上の情報を使用して計算されます。

    • プラットフォームでは、Topics API が呼び出された際に、API を呼び出しているアプリにトピックが割り当てられているか確認されます。割り当てられているトピックがない場合には、以下のルールに沿って選択が行われます。選択されたトピックが、エポックの残り期間中にアプリに割り当てられます。
      • 95% の確率で、エポック中に算出された上位 5 つのトピックリストから、ランダムにトピックが選択されます。
      • 5% の確率で、分類からランダムにトピックが選択されます。
      • 呼び出し元は、shouldRecordObservation = false パラメータを使用して getTopics を呼び出すことで、状態を変更せずにトピックを取得するよう指定できます。つまり、トピックは返されますが、呼び出しは週ごとのエポック計算に含まれず、呼び出し元に対して確認されたトピックのリストも更新されません。
    • アプリごとに複数のトピックからいずれかを取得する仕組みとなっているのは、アプリが異なればトピックも異なるようにするためです。同じユーザーに関する情報を複数のアプリで関連付けることが難しくなるようにしています。
      • たとえば、アプリ A ではユーザーのトピックとして T1 が示され、アプリ B では T2 が示されます。この場合、情報が同じユーザーに関連するものかどうかを判別するのは、双方のアプリにおいて難しくなります。
  • Topics API では、3 つまでのトピックのリストが返されます。トピックは、過去の 3 つのエポックのそれぞれから 1 つが選ばれます。

    • トピックが 3 つまで提供されると、使用頻度の低いアプリの場合は、関連性の高い広告を見つけるうえで十分なトピック数になります。一方で、使用頻度の高いアプリの場合は、最大で 1 週間に 1 つのトピックを新たに学習します。
    • 返されるトピック情報には、分類のエントリに対応するトピック ID(int)、分類のバージョン、分類器モデルのバージョンが含まれます。
    • 3 エポックの間に、該当するトピックに関連付けられたアプリをユーザーが使用したことが確認された場合にだけ、呼び出し元はトピックを受信できます。
    • 返されるトピックは、すべてユーザーの興味に該当するものであるため、広告リクエストではこれらのいずれか、またはすべてのトピックを広告のパーソナライズに使用できます。
  • トピックが Topics API を呼び出すアプリに割り当てられると、呼び出し元がこのトピックを受け取れるかどうかがプラットフォームで判断されます。

    • 3 エポックの間に、該当するトピックに関連付けられたアプリのユーザー エンゲージメントが確認された場合にだけ、呼び出し元はトピックを受信できます。
    • 呼び出し元がアプリ上のユーザーのトピックについて API を呼び出したことがない場合は、API の返すリストにそのトピックは含まれません。
    • 3 エポックの間に、呼び出し元がトピックを受け取っていない場合、Topics API は空のリストを返します。

    たとえば、ユーザーがデバイスに 7 つのアプリ(A、B、C、D、E、F、G)をインストールしているとします。アプリと広告のトピック分類が これらのアプリのテクノロジー SDK は次のとおりです。

    アプリ トピック分類 広告テクノロジー SDK
    A T1、T5 ad-sdk1、ad-sdk2
    B T2 ad-sdk2
    C T3、T6 ad-sdk3、ad-sdk4
    D T1、T4 ad-sdk1
    E T5 ad-sdk4、ad-sdk5
    F T6 ad-sdk2、ad-sdk3、ad-sdk4
    G T7 ad-sdk2
    • 第 1 週の終わりに、Topics API がこのエポックの上位 5 つのトピックを生成します。
    上位のトピック トピックの学習が可能な呼び出し元
    T1 ad-sdk1、ad-sdk2
    T2 ad-sdk2
    T3 ad-sdk3、ad-sdk4
    T4 ad-sdk1
    T5 ad-sdk1、ad-sdk2、ad-sdk4、ad-sdk5
    • 第 2 週にいずれかのアプリの呼び出し元が API を呼び出すと、該当するエポック、トピック、アプリについて、呼び出し元が「トピックの学習が可能な呼び出し元」の列にあるトピックのみを含んだリストが返されます。
    • トピックの算出に際し、各呼び出し元が利用できる履歴ウィンドウは、3 エポック(3 週間)です。
    • 広告から Topics API を呼び出すアプリに関連付けられたトピックのみ SDK が使用されています。アプリに広告 SDK が含まれていない場合は、 Topics API を呼び出すアプリでは、そのアプリに関連付けられたトピックは 広告 SDK がアクセスできるトピック群への貢献。
    • アプリで新しいマニフェストと XML 要素を介して Topics API のオプトアウトを宣言し、広告 SDK がそのアプリで API を使用できないようにすることもできます。オプトアウトしたアプリに関連付けられたトピックは、週ごとのトピックの算出には影響を及ぼしません。このドキュメントは、関連する実装の詳細を含むように更新される予定です。
  • プラットフォームで 5 つのトピックを推測できるほどアプリが使用されていない場合は、残りのトピックをランダムに生成するなどのオプションが検討される可能性があります。

分類

  • 現在の提案では、最初の分類には数百から数千のトピックが含まれます。このドキュメントの今後の更新で、最初の分類案が共有されます。
  • この分類は、プライベートなトピックが含まれないように、人の手を経てキュレートされます。
  • この分類は、Android のモバイルアプリでの表示が可能な広告のカテゴリに合わせてカスタマイズされます。
  • 分類は公開されており、変更される可能性があります。 ご提案は、このページの上部にあるフィードバック ボタンを使用してお送りください。

トピック分類器

興味に関するトピックは、一般公開されているアプリ情報(アプリ名、説明、パッケージ名など)でトレーニングされた分類器モデルから得られます。

  • 推論に分類器モデルを使用して所定のエポックのトピックを算出すると、使用されたシグナルのセットがデバイスに残ります。このシグナルのセットには、インストール済みのアプリまたは最近使用されたアプリを含めることができ、後で他のシグナルを含むように拡張される場合があります。
  • 初期モデルは Google がトレーニングします。トレーニング データには、一般公開されているアプリ情報について人の手を経てキュレートしたラベルが含まれます。このモデルは、アプリでのトピック分類のテストを行うために自由に利用することができます。
  • 初期モデルは、Google Play ストアなどの一部のアプリストアで公開されているアプリの情報を使用してトレーニングされます。
  • アプリが複数のトピックにマッピングされる、トピックにマッピングされない、またはユーザーのトピック履歴に追加されない可能性があります。分類の際にアプリが複数のトピックにマッピングされる場合、アプリに対して選択されるトピックの数が上位 3 つに制限されます。

ユーザー コントロール

  • 今回の設計では、アプリの使用状況に関連するトピックをユーザーが表示、削除できるようにしています。このユーザー コントロール機能の実装は現在進行中であり、今後のアップデートに反映される予定です。
  • 3 エポックの間に推定されたトピックの選択に関係するアプリを、ユーザーがアンインストールする場合、3 エポックの間に返されたトピックのリストからトピックが削除されることはありません。これは、アンインストールに関する情報が開示されることを避けるためです。

エンドユーザー エクスペリエンスがどのようになるかをテストするには、アプリ内インテントを起動して、エンドユーザーが目にする外観に近いトピックの設定 UI を表示します。以下に、この呼び出しの例を示します。

//Button that launches settings UI
private Button mSettingsAppButton;
private static final String RB_SETTING_APP_INTENT = "android.adservices.ui.SETTINGS";


//Does setup for button on screen that will launch settings UI to observe Topics
private void registerLaunchSettingsAppButton() {
    mSettingsAppButton.setOnClickListener(
        new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Context context = getApplicationContext();
                Intent activity2Intent = new Intent(RB_SETTING_APP_INTENT);
                activity2Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(activity2Intent);
            }
        });
}

広告テクノロジー プラットフォームを登録する

Topics API にアクセスするには、すべての広告テクノロジー プラットフォーム(Google のものを含む)で次のことを行う必要があります。 登録プロセスを完了する。

アプリ デベロッパーは、Topics API にアクセスできる広告テクノロジー デベロッパーが次の方法で管理できます。 (広告テクノロジー デベロッパーの登録 ID を含む)をアプリ マニフェスト内に含めます。

返されたトピックの暗号化

また、Topics API を呼び出す登録済みの広告テクノロジー プラットフォームに、 暗号鍵を保管し、Google Cloud でしか利用できない 呼び出します。

プライバシー サンドボックスは広告テクノロジーが提供するエンドポイントからこれらのキーを取得します。水 ベスト プラクティスとして、キーは頻繁に更新する必要があり、 6 か月に 1 回です

プライバシー サンドボックスが、広告テクノロジーにエンドポイントの空き状況を確認するよう求める 登録プロセス中に広告テクノロジーから提供されるこのモジュールの詳細については、 現在のアドテックと新規に登録したアドテックで必要な対応については、 デベロッパー ガイド

暗号化の詳細

暗号化の導入により、「GetTopics()」の呼び出しがクリックすると 「EncryptedTopic」のリストを含むレスポンス説明します。これらの結果を復号すると 前の Topic オブジェクトと同じ JSON 形式のオブジェクトになります。

Topics API で HPKE(ハイブリッド公開鍵)のワンショット実装をサポート 暗号化)。登録済みの呼び出し元は、鍵交換プロトコルで 32 ビットの公開鍵を パブリック暗号化 URL エンドポイントを指定します。これらのキーは、 Base64 でエンコードされているはずです

EncryptedTopic オブジェクトには 3 つのフィールドがあります。返されるトピックのリストには、 対応する秘密鍵を使って取得します。

開発目的のために、Topics API の暗号化をテストするには、 登録チェックを行いますこれにより、API は強制的にテスト用の公開鍵を レスポンスを暗号化します。暗号化されたトピックを復号するには、 秘密鍵で復号されます。