フリークエンシー キャップは、一定期間内にユーザーに表示される特定カテゴリの広告数を制限する広告手法です。フリークエンシー キャップにより、広告の印象が新鮮で興味をひくものとなり、エンドユーザー エクスペリエンスが向上します。また、広告主が広告費を管理しやすくなります。
このプロポーザルでは、Android 版 Protected Audience を使用して、正確かつプライバシーを保護した方法でフリークエンシー キャップ機能を実装する方法を紹介します。
Protected Audience は、広告固有のイベント用のカウンタのオンデバイス ストレージと、事前定義された一連のフィルタ方針に沿って広告をフィルタする機能の 2 つを組み合わせることで、フリークエンシー キャップを実装しています。フリークエンシー キャップにより、広告主は所定の期間におけるヒストグラム値の合計に対するカウンタしきい値を指定できます。
カウンタはデバイス プロファイル、広告テクノロジー、カウンタキーの組み合わせごとに一意です。各広告には、広告のビューまたはインプレッションが登録された場合に使用する一連のカウンタキーが含まれている必要があります。Protected Audience はキーごとに一連のカウンタを保存し、各カウンタは特定の時間間隔内に発生した広告固有のイベントを集計します。オンデバイス カウンタはインプレッションまたはビューが発生すると加算され、カウンタデータはデバイス上に保持されます。正確な保持時間は後ほど定義します。
Protected Audience の広告選択ワークフローの広告フィルタリング ロジックは、カウンタ、リマーケティング広告、コンテキスト広告にアクセスできるため、Protected Audience のフリークエンシー キャップは、こうした広告リクエストすべてに対応できます。
注: 広告フィルタリングは、Android 版プライバシー サンドボックスでのみ利用可能です。Chrome の Protected Audience の実装には現在、コンテンツ ターゲットの Protected Audience 以外の広告をフィルタするメカニズムは実装されていません。このプロポーザルはバイサイド サポートのみを対象としています。需要があれば、セルサイド サポートを後日追加する予定です。
Protected Audience のフリークエンシー キャップは、次のような幅広い要件に対応しています。
- オンデバイス カウンタの更新時にサーバーサイドの遅延が最小限に抑えられる、リアルタイム フィルタリング。
- 個々の広告、キャンペーン、その他のグループを含む、キーの柔軟な階層構造。
- 広告 ID に依存しない、他のフリークエンシー キャップ手法との整合性。
- 特定のデバイス ユーザー プロファイルで、複数のアプリにわたって機能する。
- 正確かつ完全なカウンタ。
- ビューやインプレッションなど、広告イベントのカスタム定義のサポート。
- リマーケティング広告とコンテキスト広告の両方に 1 つの機能で対応する。
フリークエンシー キャップをセットアップする手順は次のとおりです。
ステップ 1: 広告にフリークエンシー キャップの情報を追加する
コンテキスト広告とリマーケティング広告では、更新する関連ヒストグラム カウンタが示されます。
ビューまたはインプレッションの 2 つの識別子(ad_counter_keys
フィールド)を使用して、
には任意の整数のリストが含まれます。このフィールドは、Protected Audience で解析されない metadata
フィールドには含まれません。
次の例は、AdSelectionConfig
の adsData
フィールドのデータ形式を示しています。リマーケティングの場合、所定のカスタム オーディエンスに対する広告リストの形式は、以下の例に示す ads
フィールドの内容と一致します。
'adsData': [
{
"buyer": "ads.example.com",
"ads": [
{
'render_url': 'exampleUrl',
'metadata': {...}, /* metadata are opaque to Protected Audience are
required to be in valid JSON format */
'ad_counter_keys': [1234, 5678]
}]
}]
}
ステップ 2: ビューまたはインプレッションを登録する
広告テクノロジーは updateAdCounterHistogram
メソッドを呼び出して登録できます
イベントの発生数。メソッドには
落札した広告のキーで指定されたキーに対して、同じイベントで繰り返し呼び出される
eventType
。
void updateAdCounterHistogram(@EventType eventType, long adSelectionId)
入力:
eventType
: イベントが視聴としてカウントされるのか、それとも 広告選択プロセスにおいてadSelectionId
:selectAds
呼び出しによって返されるAdSelectionOutcome
オブジェクト内の ID 値。
updateAdCounterHistogram
を呼び出すと、キーセットのヒストグラムが更新されます。
CustomAudience
で取得されたリマーケティング広告の一部として定義されるか、
AdSelectionConfig
パラメータに含まれるコンテキスト広告
selectAds
。
ステップ 1 の広告が、AdSelection
9999
の id
の値、
updateAdCounterHistogram(FrequencyCapFilters.AD_EVENT_TYPE_VIEW,
adSelectionId: 999)
は、次の 3 つのプライマリのカウンタをインクリメントします。
keys:
{'ads.example.com', 1234, VIEW}
{'ads.example.com', 5678, VIEW}
広告テクノロジー名は、落札広告がどこからのものかに応じて、コンテキスト広告またはカスタム オーディエンスの購入者フィールドから取得されます。
Protected Audience for Android では、すべてのカウンタが自動的にインクリメントされる
イベントタイプ FrequencyCapFilters.AD_EVENT_TYPE_WIN
については、
selectAds
API 呼び出しによって返される広告です。これは機能的には、
generateBid
の browser_signals
に prev_wins
引数が追加されました。
Chrome の Protected Audience の実装。
ステップ 3: フィルタによるフリークエンシー キャップ フィルタリングを実装する
最適なパフォーマンスを実現するために、フリークエンシー キャップ フィルタリング機能は AdServices
内で実行されます。Protected Audience は、AdsData
オブジェクトの filters フィールドを読み取ることで、メッセージをフィルタする必要があるかどうかを判断します。フィルタのリストは frequency_cap
で指定します。キー event_type
の値と
interval_in_seconds
は、使用されるイベントのヒストグラムを取得するために使用されます。
フィルタと Protected Audience を使用する方法について説明します。
フィルタリング情報は、カスタム オーディエンスが提供するリマーケティング広告や、AdSelectionConfig
オブジェクトの一部としてコンテキスト広告に対して指定できます。
フリークエンシー キャップ フィルタを使用したコンテキスト広告の場合、広告は AdSelectionConfig
オブジェクトの ads フィールドを使用して渡されます。広告はフィルタされ、selectAds
呼び出しの結果として入札単価の最も高い広告が返されます。
フリークエンシー キャップ フィルタを使用したリマーケティング広告の場合、広告は購入者提供の JavaScript 関数 generateBid()
が呼び出される前にフィルタされます。
次の例は、フリークエンシー キャップ フィルタリングを使用したメッセージを示しています。
{
'render_url': 'url',
'metadata': {...}, /* metadata are opaque to Protected Audience and assumed
to be in valid JSON format */
'ad_counter_keys': [1234, 5678],
"filters": {
"frequency_cap": {
"view": [
{
"ad_counter_key": 1234
"max_count": 10,
"interval_in_seconds": 86400
},
{
"ad_counter_key": 5678
"max_count": 10,
"interval_in_seconds": 86400
},
],
"win": [
{
"ad_counter_key": 1234
"max_count": 5,
"interval_in_seconds": 604800
},
{
"ad_counter_key": 5678
"max_count": 5,
"interval_in_seconds": 345600
},
]
},
// This field is only required in contextual ads and is used in
// reportImpression calls to fetch the reportWin function.
'reportingJS': "https://ads.example.com?reportWin.js"
}
ステップ 4: 落札広告についてレポートする
広告選択プロセスが完了すると、renderUri
と adSelectionId
(selectAds
呼び出しの数値 ID)を含む AdSelectionOutcome
オブジェクトが返されます。この ID を使用して、イベントレベル レポートを現在サポートしている reportImpression
API を呼び出すことができます。ベータ版 1 で、このメソッドはリマーケティング広告のレポートをサポートしています。今後のリリースでコンテキスト広告のレポートをサポートするように拡張される予定です。コンテキスト広告の場合、上記の例に示すように、購入者は広告構造内で reportingJS
という追加フィールドを使用して、reportImpression
呼び出し中に reportWin
関数を取得できる場所を示す必要があります。
広告候補の選択に関するおすすめの方法
Protected Audience は、フリークエンシー キャップの適用をサーバーからデバイスに移行します。落札単価はプライバシー サンドボックスでレポートされますが、広告が表示されない理由をデベロッパーが知ることはできません。広告が表示されないのは、落札できなかったことが原因の場合もあれば、フリークエンシー キャップが原因の場合もあります。特定の広告が落札されない理由を完全には把握できないため、入札システムで最適な広告が配信されるよう、追加の作業が必要になります。Protected Audience で最適な広告配信を実現するには、以下のことをおすすめします。
十分なリマーケティング広告を送信する
リマーケティング広告をユーザーごとに最適化することはできません。カスタム オーディエンスから多数の広告がユーザーに表示され、広告の制限が低い場合、すべての広告がフィルタされる可能性があります。リマーケティング広告は定期的に更新されるため、リマーケティング広告が継続して配信されるようにするには、十分な広告枠がフリークエンシー キャップを通過する必要があります。この点と、表示する広告のサイズ制限とのバランスを取る必要があります。
joinCustomAudience
呼び出しとカスタム イベントの際に指定できます。
オーディエンスの日次更新です購入者は、通常のショッピングキャンペーンを
レイテンシが短縮されますこれらの問題の影響を最小限に抑えるために
フリークエンシー キャップ フィルタリングは、generateBid
の呼び出しの前に実行されます。
コンテキスト カウンタをサーバーに保持する
サーバー側の推定により、デベロッパーはフリークエンシー キャップが有効になるタイミングを大まかに推定できます。この推定では、広告がフリークエンシー キャップのしきい値に達している可能性が高いことと、そのためより多くの広告候補とともに送信するか完全に排除する必要があることを示すことができます。
コンテキストに基づくレスポンスで複数の広告候補を送信する
Protected Audience オークションの前に、コンテキストに基づくレスポンスで複数の広告候補を送信する必要があります。これにより、複数の広告が除外されても、他の広告は引き続き表示されます。広告候補では、一部の広告がバックアップとして表示されるように優先度を設定できます。
実施には期限があるため、広告候補はオークションで落札できる可能性と、除外されない可能性に照らして選択する必要があります。
制限事項
Protected Audience のフリークエンシー キャップには、次のような制限事項があります。
- Protected Audience のフリークエンシー キャップは、デバイスのユーザー プロファイル レベルで動作します。他のデバイスや他のプロファイルで共有されるカウンタはありません。他のデバイスで表示される広告の追加は、必要に応じて手動で反映する必要があります。
- デバイス カウンタはデバイスに保存され、アクセスされます。サーバーサイドのカウンタは別途管理する必要があります。
- フリークエンシー キャップと関連する広告フィルタリングはデバイス上で処理されるため、広告テクノロジー プラットフォームはこうした操作を直接制御できません。バイパス デバイスのフリークエンシー キャップのしきい値。広告テクノロジー プラットフォームは フィルタの異なる複数の広告候補
- 記録頻度に基づく入札単価調整はサポートされていません。
generateBid
関数は頻度カウンタを表示できません。
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- Protected Audience: 統合ガイド
- Android 版 Protected Audience API デベロッパー ガイド
- Protected Audience API を使用してカスタム オーディエンス ターゲティングをサポートする