入札およびオークション サービスのオークション アーキテクチャについて学習する
概要
入札とオークション(B&A)サービスは、高信頼実行環境(TEE)で実行され、Protected Audience(PA)オークションを促進する広告の購入者と販売者向けのサービス セットです。このページでは、PA オークションで B&A を使用できるさまざまなオークション構成について説明します。
定義
用語 | 説明 |
---|---|
Protected Audience オークション | クロスサイト データを使用する広告オークション |
コンテキスト オークション | クロスサイト データが関与しない広告オークション。このオークションは、既存のリアルタイム ビッダー(RTB)オークション パスに沿って行われます。 |
統合オークション リクエスト | 販売者の JavaScript コードによってブラウザから送信されるリクエスト。Protected Audience オークションとコンテキスト オークションの両方のペイロードが含まれます。 |
販売者広告サービス(SAS) | ブラウザからの統合オークション リクエストを処理するサービス。これは、販売者の既存の RTB 広告サーバーである場合があります。SAS は、コンテキストに基づくオークションと Protected Audience オークションの両方をオーケストレートします。 |
購入者の広告サービス | コンテキストに基づくオークションの入札単価の送信を担当するサービス。購入者の既存の ORTB 広告サーバーを使用できます。 |
購入者と販売者向けのサービス
B&A サービスは、購入者と販売者向けの次の 4 つのサービスで構成されています。
- 購入者は、入札サービスと購入者フロントエンド(BFE)サービスを使用できます。
- 販売者は、オークション サービスと販売者フロントエンド(SFE)サービスを使用できます。
参加者 | サービス | 説明 |
---|---|---|
購入者 | 購入者フロントエンド(BFE)サービス | このサービスは、販売者の SFE からの GetBids リクエストを処理します。ペイロードの復号、K/V シグナルの取得、入札サービスの GenerateBids の呼び出しを行います。 |
入札サービス | サービスは、BFE からの GenerateBids リクエストを処理します。購入者の入札ロジックを実行し、入札単価を生成します。 |
|
販売者 | 販売者フロントエンド(SFE)サービス | このサービスは、販売者の広告サービスからの SelectAd リクエストを処理します。ペイロードの復号、BFE の GetBids オペレーションの呼び出し、K/V シグナルの取得、オークション サービスの ScoreAd オペレーションの呼び出し、暗号化された B&A オークション結果の SAS への返信を行います。サービスがサーバー オーケストレートされたマルチ販売者オークションのトップレベルの販売者のスタックに含まれている場合、サービスは SAS からの |
オークション サービス | このサービスは、SFE からの ScoreAd リクエストを処理します。販売者のスコアリング ロジックを実行し、入札単価の優先度スコアを提供する役割を担います。 |
ウェブ向けの PA B&A オークションのアーキテクチャ
次の図は、1 人の販売者と 1 人の購入者がいる B&A サービスによる基本的な Protected Audience オークションを示しています。赤い太い枠線のボックスは、TEE で実行されているサービスを表します。
(フルサイズの図)
- パブリッシャー ページの SSP の JavaScript コードは、
navigator.getInterestGroupAdAuctionData()
を呼び出して暗号化された B&A 広告オークション データを生成します。- この暗号化されたペイロードには購入者のデータが含まれており、TEE 内の SFE 内でのみ復号できます。
- SSP JavaScript コードが、統一オークション リクエストを販売者の広告サービスに送信します。
- 統合オークション リクエストには、ORTB コンテキスト オークションのプレーンテキスト ペイロードと、暗号化された B&A オークション ペイロードの両方が含まれます。
- 販売者の広告サービスは既存の広告サーバーであり、TEE で実行されません。
- 販売者の広告サービスは DSP の RTB サービスを呼び出して、コンテキスト オークションの入札単価と、その後の PA オークションに渡す購入者シグナルをリクエストします。
- これは、購入者が PA オークションへの参加の意向を示すステップです。
- コンテキスト オークションが完了すると、SAS は
SelectAd
リクエストを SFE サービスに送信します。- コンテキスト オークションの落札入札と購入者シグナルが
SelectAd
リクエスト ペイロードに追加されます。
- コンテキスト オークションの落札入札と購入者シグナルが
- SSP の SFE サービスは、
GetBids
リクエストを使用して DSP の BFE サービスを呼び出します。 - DSP の BFE は、
GenerateBids
リクエストを使用して入札サービスを呼び出します。 - 入札が SFE に受信されると、オークション サービスに
ScoreAd
呼び出しが実行されます。- 最も高い好ましさスコアを持つ入札単価が SAS に返され、ページ上の JavaScript コードに転送されます。
- 暗号化された B&A オークションの結果を
navigator.runAdAuction()
呼び出しに渡すことで、ブラウザでオークションが終了します。
オークションの設定
B&A サービスを使用する Protected Audience オークションは、次の方法で設定できます。
- B&A 購入者を含む単一販売者のオークション
- オンデバイス購入者と B&A 購入者による混合モード オークション
- デバイス オーケストレーションまたはサーバー オーケストレーションが可能なマルチ販売者オークション
参加者
このガイドでは、各オークション構成を説明するために、次の参加者を使用します。
参加者 | 説明 |
---|---|
DSP-A |
デバイス上の購入者 |
DSP-B |
デバイス上の購入者 |
DSP-X |
企業買収の購入者 |
DSP-Y |
買収・合併の購入者 |
SSP-TOP |
トップレベルの販売者 |
SSP-OD |
デバイス上の販売者のみ |
SSP-BA |
B&A のみの販売者 |
SSP-MIX |
混合モードの販売者 |
次の 4 つの DSP があります。
DSP-A
とDSP-B
はオンデバイス オークションにのみ参加DSP-X
とDSP-Y
は、オンデバイス オークションと B&A オークションの両方に参加します。
SSP は 4 つあり、各販売者は異なるオークション構成を実行します。
SSP-OD
はオンデバイス専用オークションを実行します。SSP-BA
は B&A のみのオークションを実施しますSSP-MIX
は混合モードのオークションを実行します。SSP-TOP
はマルチセラー オークションを実施します。SSP-OD/BA/MIX
は、SSP-TOP
の複数販売者オークションのコンポーネント販売者として参加します。
単一販売者の B&A オークション
単一販売者設定では、1 人の販売者がオークションを実施し、複数の購入者が参加します。販売者が B&A オークションを実施している場合、購入者がオークションに入札するには、B&A サービスの購入者スタックを実行している必要があります。購入者と販売者は同じクラウド プロバイダを使用する必要はありません。
(フルサイズの図)
上記の設定では、SSP-BA
が B&A オークションを実行し、DSP-X
と DSP-Y
が B&A サービスの購入者スタックを使用して参加します。販売者の広告サービスは、まず DSP-X
と DSP-Y
のコンテキスト オークションを実行し、次に SelectAd
リクエストを販売者の SFE サービスに送信して Protected Audience オークションを実行します。コンテキスト オークションの落札入札単価と各購入者のシグナルが SelectAd
呼び出しに渡されます。次に、SFE サービスは DSP-X
と DSP-Y
の BFE に GetBids
リクエストを送信します。BFE は入札サービスを呼び出して入札を生成します。
暗号化された B&A オークションの結果がクライアントに返され、runAdAuction()
呼び出しに渡されます。単一販売者オークションの構成は次のようになります。
await navigator.runAdAuction({
seller: 'https://ssp-ba.example',
requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [193, 120, 4, …] // Encrypted B&A auction result
})
requestId
値はクライアントの getInterestGroupAdAuctionData()
呼び出しから取得され、serverResponse
データはサーバーサイドの B&A オークションから取得されます。
混合モード オークション
混合モードの構成では、購入者はデバイス上または B&A から販売者のオークションに参加できます。青い矢印はオンデバイス オークション パス、赤い矢印は B&A オークション パスを表しています。
(フルサイズの図)
この設定では、DSP-A
と DSP-B
はデバイス上で入札を送信する購入者で、DSP-X
と DSP-Y
は B&A を使用して入札を送信する購入者です。オンデバイス購入者はブラウザでオンデバイス PA オークションに参加します。B&A 購入者は、単一販売者オークションのセクションで説明されている B&A オークション設定に参加します。
コンテキスト オークションの落札入札単価と購入者シグナルを収集するために、まずすべての購入者に対してコンテキスト オークションが実行されます。その後、B&A オークションが実行され、コンテキスト オークションからの購入者シグナルが SFE への SelectAd
リクエストに渡されます。SFE から返された暗号化された B&A オークションの結果がブラウザに転送されます。B&A オークションの後、その結果はオンデバイスの購入者が参加するオンデバイス オークションにフィードされます。
オークションのオンデバイス部分の混合モードの単一販売者オークションの構成は次のようになります。
await navigator.runAdAuction({
seller: 'https://ssp-mix.example',
decisionLogicURL: 'https://ssp-ba.example/score-ad.js',
componentAuctions: [
// B&A auction
{
seller: 'https://ssp-mix.example',
requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [133, 20, 14, …]
},
// On-device auction
{
seller: 'https://ssp-mix.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-mix.example/on-device-score-ad.js',
}
]
})
オンデバイス オークションと B&A オークションの並列化
並列化を行わない場合、オークションは順番に実行されます。まずコンテキスト オークションが実行され、次に B&A オークションが実行され、最後にデバイス上のオークションが実行されます。並列化を実装すると、コンテキスト オークションが最初に実行されますが、その結果とシグナルはクライアントにストリーミングされ、B&A オークションが終了する前にオンデバイス オークションを並行して開始します。
(フルサイズの図)
クライアントの JavaScript コードが統合オークション リクエストを SAS に送信し、SAS がコンテキスト オークションと PA B&A オークションを開始します。SAS が購入者の RTB サーバーからレスポンスを受信すると、購入者は、すべての入札が受信されたら、コンテキスト オークションの落札者とともに、オンデバイス オークションのシグナルをブラウザにストリーミングできます。ストリーミングされた購入者シグナルは、デバイス上で入札単価を生成するために使用され、コンテキスト オークションの落札者は、入札単価のスコアリング時に入札単価の下限として使用されます。
SAS では、販売者はコンテキスト オークション データをブラウザにストリーミングするときに、Ad-Auction-Result-Nonce
レスポンス ヘッダーに設定される UUID ノンスを生成します。同じノンスが B&A オークションの SFE への SelectAd
呼び出しで使用され、そのノンスは SFE から返された SelectAd
レスポンスに含まれます。クライアントサイド オークションのフェーズで、ブラウザは Ad-Auction-Result-Nonce
レスポンス ヘッダーのノンスが、暗号化されたオークション結果ペイロードのノンスと一致することを検証します。
混合モードの並列化の詳細については、説明をご覧ください。
マルチセラー オークション
B&A で PA マルチセラー オークションを実施するには、次の 2 つの方法があります。
- デバイスがオーケストレートするオークション。各コンポーネント販売者の広告サービスへの呼び出しはブラウザから行われます。
- サーバー オーケストレート型オークション: 各コンポーネント販売者の広告サービスへの呼び出しが、最上位販売者の広告サービスから発信されます。
デバイスがオーケストレートするマルチセラー オークション
デバイスでオーケストレートされた複数販売者のオークションでは、各コンポーネント販売者は任意の構成でオークションを自由に実施できます。オンデバイス販売者、B&A 販売者、混合モード販売者はすべて、トップレベル オークションに参加できます。
(フルサイズの図)
この設定では、トップレベル販売者のSSP-TOP
が、SSP-OD
、SSP-BA
、SSP-MIX
が参加する複数販売者オークションを実施します。
SSP-OD
は、デバイス上のみの PA オークションを実施し、デバイス上のコンポーネント オークション構成をトップレベルの販売者に送信します。- B&A オークションを実施する
SSP-BA
は、販売者の広告サービスに統合オークション リクエストを送信し、独自のコンテキスト オークションと B&A オークションを実施します。結果は最上位の販売者に送信されます。 - 混合モード オークションを実行する
SSP-MIX
は、まずサーバー上で B&A オークションを実行し、次に B&A オークションの結果とオンデバイス オークションの構成の両方を送信します。
最上位の販売者は、各販売者からコンポーネント オークション構成を収集し、次のようなオークション構成を構築します。
await navigator.runAdAuction({
seller: 'https://ssp-top.example',
decisionLogicURL: 'https://ssp-top.example/score-ad.js',
componentAuctions: [
// SSP-BA's B&A-only auction
{
seller: 'https://ssp-ba.example',
requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [193, 120, 4, …] // Encrypted B&A auction result
},
// SSP-MIX's B&A auction of mixed-mode
{
seller: 'https://ssp-mix.example',
requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [133, 20, 4, …] // Encrypted B&A auction result
}.
// SSP-MIX's on-device auction of mixed-mode
{
seller: 'https://ssp-mix.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
}
// SSP-OD's on-device auction
{
seller: 'https://ssp-od.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-od.example/score-ad.js',
}
]
})
サーバー オーケストレーションによるマルチセラー オークション
サーバー オーケストレート型の複数販売者オークションでは、コンポーネント販売者の広告サービスへの呼び出しは、最上位の販売者の広告サービスから行われます。この設定では、コンポーネント販売者はオンデバイス オークションや混合モード オークションを実施できません。すべての販売者は B&A を使用し、すべての購入者は B&A を使用して入札する必要があります。
(フルサイズの図)
この図では、SSP-TOP
がサーバー オーケストレート型の複数販売者オークションを実行し、SSP-BA-X
と SSP-BA-Y
が参加しています。
すべての参加者のコンテキスト オークションと PA オークションのペイロードを含む単一の統一オークション リクエストが、ブラウザから最上位の販売者の広告サービスに送信されます。その後、SAS はペイロードとともに SFE に GetComponentAuctionCiphertexts
を呼び出します。SFE はペイロードを復号し、各コンポーネント セラーごとにペイロードを分離し、再暗号化されたペイロードを最上位セラーの SAS に返します。
GetComponentAuctionCiphertexts
リクエストとレスポンスの proto 定義は次のとおりです。
// Request sent from the top-level seller's ad service to SFE
message GetComponentAuctionCiphertextsRequest {
bytes protected_auction_ciphertext = 1; // Generated in the browser
repeated string component_sellers = 2; // The list of all component sellers
}
// Response returned from SFE to the top-level seller's ad service
message GetComponentAuctionCiphertextsResponse {
// A map of component sellers and their re-encrypted payloads
map<string, bytes> seller_component_ciphertexts = 1;
}
各コンポーネント販売者のペイロードを使用して、最上位販売者の SAS がコンポーネント販売者の SAS を呼び出し、各コンポーネント SAS がコンポーネント B&A オークションを実行します。その後、コンポーネント オークションの結果が最上位の販売者の SFE に返され、コンポーネント オークションの入札単価が最上位の販売者のオークション サービスによってスコア付けされます。最も高い優先度スコアを持つ入札が SFE に返され、その暗号化されたペイロードが SAS に送信されてクライアントに返されます。ブラウザでは、最上位の販売者が navigator.runAdAuction()
を呼び出して暗号化されたサーバー オークション結果ペイロードを指定することで、オークションを終了します。
次のステップ
このガイドを読んだら、次のステップに進みます。
その他の情報
- Protected Audience の B&A の仕組みについて詳しくは、GitHub の次の説明をご覧ください。
- エンドツーエンドのローカル テスト Codelab に沿って、Protected Audience と B&A をテストします。
- 販売者の統合については、販売者として B&A と統合するをご覧ください。
ご不明な点がある場合
- 入札およびオークション サービスについて質問するには、B&A Services リポジトリで問題を報告してください。
- privacy-sandbox-dev-support リポジトリで問題を報告 して、プライバシー サンドボックス全般について質問してください。