FLEDGE API: 開発者ガイド
クロスサイトサードパーティトラッキングを使わずにリマーケティングとカスタムオーディエンスにサービスを提供するオンデバイス広告オークションの開発者ガイド
FLEDGE を初めて使用する場合は、この提案の概説について FLEDGE の概要をお読みください。
この記事は、実験的な FLEDGE API の最新のイテレーションに関するテクニカルリファレンスとして開発者向けに執筆されています。基本的な FLEDGE 導入のデモと、広告の購入者と販売者向けの API リファレンスが提供されています。
FLEDGE とは?
FLEDGE は、リマーケティングおよびカスタムオーディエンスのユースケースに対応するためのプライバシーサンドボックスの提案であり、サードパーティがサイトを跨いでユーザーのブラウジング行動を追跡できないように設計されています。この API は、ブラウザによるオンデバイスオークションを有効にし、ユーザーが以前にアクセスしたウェブサイトに関連する広告を選択します。
FLEDGE は、TURTLEDOVE ファミリの提案の中で Chromium に実装された最初の実験です。
FLEDGE を試す
利用可能な API リファレンス
このドキュメントは、FLEDGE API の概要として機能します。特定の API メソッドとパラメーターを探している場合は、以下をご覧ください。
- セラー向けの
joinAdInterestGroup()
とgenerateBid()
ガイド - セラー向けの FLEDGE
runAdAuction()
ガイド - バイヤー向けの
reportWin()
ガイドとセラー向けのreportResult()
ガイド - FLEDGE API のトラブルシューティング
また、FLEDGE 広告オークションの待ち時間に関するベストプラクティスもご覧ください。
FLEDGE デモ
広告主とサイト運営者のサイトにまたがる基本的な FLEDGE のデプロイに関するウォークスルーは、fledge-demo.glitch.me で入手できます。
オリジントライアルに参加する
プライバシーサンドボックスの広告関連のオリジントライアルは、FLEDGE、Topics、および Attribution Reporting API について、デスクトップの Chrome ベータ版 101.0.4951.26 以降で公開されています。
参加するには、オリジントライアルトークンに登録してください。
トライアルへの登録が完了すると、有効なトライアルトークンを提供するページで FLEDGE API を試すことができます。たとえば、ブラウザに 1 つ以上のインタレストグループに参加するように依頼してから、広告オークションを実行して広告を選択し、表示することができます。
FLEDGE API コードを実行するすべてのページにトライアルトークンを指定します。
<head>
のメタタグとして:
<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
- HTTP ヘッダーとして:
Origin-Trial: TOKEN_GOES_HERE
- プログラムでトークンを提供する:
const otMeta = document.createElement('meta');
otMeta.httpEquiv = 'origin-trial';
otMeta.content = 'TOKEN_GOES_HERE';
document.head.append(otMeta);
インタレストグループ オーナーによる navigator.joinAdInterestGroup()
呼び出しなどの FLEDGE コードを実行する iframe は、そのオリジンと一致するトークンを提供する必要があります。
Proposed First FLEDGE Origin Trial Details(提案された最初の FLEDGE オリジントライアルの詳細)には、最初のトライアルの目標に関する詳細と、どの機能がサポートされているかが説明されています。
有効なトライアルトークンを提供するページであっても、すべてのユーザーがプライバシーサンドボックスの広告関連のオリジントライアルの対象となるわけではありません。
広告関連の統一オリジントライアルの概要にはその理由が説明されており、オリジントライアル機能を使用する前に使用可能かどうかを検出する方法(検出する必要があります)が示されています。
chrome://flags
または機能フラグでテストする
デスクトップでは Chrome ベータ版 101.0.4951.26 以降を使って、1 人のユーザーに対して FLEDGE をテストできます。
chrome://flags/#privacy-sandbox-ads-apis
を有効にします。- コマンドラインでフラグを設定します。利用可能な FLEDGE フラグの全リストは、Chromium Code Search で検索できます。
iframe または Fenced Frame に広告を表示する
広告は、設定されているフラグに応じて、<iframe>
または <fencedframe>
にレンダリングできます。
<fencedframe>
を使用して広告をレンダリングするには:
--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,FencedFrames
<iframe>
を使用して広告をレンダリングするには:
--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,AllowURNsInIframes --disable-features=FencedFrames
BiddingAndScoringDebugReportingAPI
フラグを含めて、一時的なデバッグの落札/競り負けレポートメソッドを有効にします。
これは、初期テスト用の FLEDGE の進行中のバージョンです。これは、完全なもの、または最終的な実装を示すものと見なすべきではありません。FLEDGE の進捗状況とステータスは、定期的な WICG 会議で議論されます。
プライバシーサンドボックスのタイムラインには、FLEDGE およびその他のプライバシーサンドボックスの提案の実装タイミングが記載されています。
サポートされる機能
Chromium でのフラグ設定による FLEDGE は、FLEDGE 提案の以下の機能をテストするための最初の実験です。
- インタレストグループ: 広告の入札とレンダリングを構成するための関連付けられたメタデータとともに、ブラウザによって保存されます。
- バイヤー(DSP または広告主)によるオンデバイス入札: 保存されているインタレストグループとセラーからのシグナルに基づきます。
- セラー(SSP またはサイト運営者)によるオンデバイス広告の選択: バイヤーからのオークション入札とメタデータに基づきます。
- 一時的に緩和されたバージョンの Fenced Frames での広告レンダリング: 広告のレンダリングが許可されたネットワークアクセスとロギング。
機能のサポートと制約について詳しくは、FLEDGE API の Explainer をご覧ください。
インタレストグループの権限
FLEDGE の現在の実装のデフォルトでは、クロスドメイン iframe も含むページ内のどこからでも joinAdInterestGroup()
を呼び出すことができます。
将来的には、サイト所有者にクロスドメイン iframe の権限ポリシーを更新する時間ができたら、クロスドメイン iframe からの呼び出しを禁止する予定です。
Key/Value サービス
FLEDGE 広告オークションをサポートするために、ブラウザは Key/Value サービスにアクセスして、FLEDGE 広告オークションをサポートするリアルタイム情報を取得できます。この情報は、さまざまな方法で使用できます。
- バイヤーが、広告キャンペーンの残りの予算を計算する場合。
- セラーが、広告クリエイティブをサイト運営者のポリシーに照らして確認する必要がある場合。
FLEDGE Key/Value サービスコードが公開されました。ステータスの更新については、ブログの発表の記事をご覧ください。
初期テストでは、 「Bring Your Own Server」モデルが使用されました。長期的には、アドテックは、信頼できる実行環境で実行するオープンソースの FLEDGE Key/Value サービスを使用する必要があります。
タイムラインの更新については、FLEDGE サービスのブログ記事をご覧ください。この移行が行われる前に、開発者がテストと採用を開始できるように十分な通知を行います。
機能サポートを検出する
API を使用する前に、API がブラウザでサポートされており、ドキュメントで使用できるかどうかを確認してください。
'joinAdInterestGroup' in navigator &&
document.featurePolicy.allowsFeature('join-ad-interest-group') &&
document.featurePolicy.allowsFeature('run-ad-auction') ?
console.log('navigator.joinAdInterestGroup() is supported on this page') :
console.log('navigator.joinAdInterestGroup() is not supported on this page');
現在のページでの機能のサポートは、API が使用できることを保証するものではありません。ユーザーがブラウザの設定で API を無効にしたか、API を使用できないように他の設定をしている可能性があります。ユーザーのプライバシーを保護するために、これをプログラムで確認する方法はありません。
FLEDGE API の仕組み
この例では、ユーザーがカスタム バイク メーカーのウェブサイトを閲覧した後、ニュースサイトにアクセスすると、そのバイク メーカーの新しい自転車の広告が表示されます。
この記事で説明されているすべての機能が、現在 Chrome でテストされている FLEDGE API のバージョンに実装されている(または完全に実装されている)わけではありません。機能フラグを使用したテストでは、 コマンドラインから実行される Chrome で現在どの FLEDGE 機能をテストできるかについて説明されています。
FLEDGE の機能は、実装作業が進むにつれて徐々に追加されます。
1. ユーザーが広告主のサイトにアクセスする
ユーザーがカスタム バイク メーカー(この例では広告主)のウェブサイトにアクセスし、手作りのスチール バイクの製品ページにしばらくアクセスしたとします。これにより、バイク メーカーはリマーケティングの機会を得ることができます。
2. ユーザーのブラウザがインタレストグループを追加するよう求められる
広告主のデマンドサイド プラットフォーム(DSP)(または広告主自体)は、navigator.joinAdInterestGroup()
を呼び出して、ブラウザがメンバーであるグループのリストにインタレストグループを追加するようブラウザに要求します。
この例では、グループの名前は custom-bikes
で、オーナーは dsp.example
です。インタレストグループのオーナー(この場合は DSP)は、FLEDGE 広告オークションのバイヤーになります。インタレストグループのメンバーシップは、ブラウザによってユーザーのデバイスに保存され、ブラウザベンダーや他の誰とも共有されません。
- FLEDGE の Explainer を読む: ブラウザによるインタレストグループの記録
- API ガイド を読む : バイヤーと DSP 向け。
joinAdInterestGroup()
に参加して入札を生成する方法を学びます。
joinAdInterestGroup()
の呼び出しコンテキストのオリジンは、インタレストグループのオーナーのオリジンと一致する必要があります。
joinAdInterestGroup()
は、インタレスト グループのオーナーが所有する iframe から(たとえば、DSP から)呼び出す必要があります。現在のドキュメントのオリジンがインタレストグループのオーナーと同じ場合(独自のインタレストグループを持つウェブサイトなど)、iframe は必要ありません。
インタレストグループの広告を指定する
ads
および adComponents
オブジェクトには、広告クリエイティブの URL と、オプションで、入札時に使用できる任意のメタデータが含まれます。以下に例を示します。
{
renderUrl: 'https://cdn.example/.../bikeAd1.html',
metadata: bikeAd1metadata // optional
}
バイヤーの入札方法
generateBid()
は、インタレストグループのオーナーが入札に招待された場合に、ブラウザがメンバーであるインタレストグループごとに呼び出されます。
generatedBid()
開発者向けドキュメントをお読みください。
3. ユーザーが広告スペースを販売するサイトにアクセスする
後になって、ユーザーは広告スペースを販売するサイト(この例ではニュースサイト)にアクセスします。このサイトには広告枠があり、リアルタイム入札を使用してプログラムで販売しています。
4. ブラウザで広告オークションが実行される
広告オークションは、サイト運営者のサプライサイドプロバイダー(SSP)またはサイト運営者自身によって実行される可能性があります。オークションの目的は、現在のページで使用可能な単一の広告スロットに最も適した広告を選択することです。オークションでは、広告スペースのバイヤーと Key/Value サービスのセラーからのデータとともに、ブラウザがメンバーであるインタレストグループが考慮されます。
- FLEDGE の Explainer を読む: セラーによるオンデバイスオークションの実行
- API ガイドを読む: セラーは、
runAdAuction()
と 広告オークションの待ち時間のベストプラクティスについて詳しく知ることができます。
5. セラーと参加するバイヤーが、Key/Value サービスにリアルタイムデータをリクエストする
広告オークション中、セラーは Key/Value サービスにリクエストを送信して、特定の広告クリエイティブに関するリアルタイムデータを要求できます。セラーは、trustedScoringSignalsUrl
プロパティと、オークション内のすべてのインタレストグループの ads
と adComponents
フィールドにあるすべてのエントリの renderUrl
から得るキーを使って、runAdAuction()
を実行中にこの情報を要求できます。
バイヤーは、navigator.joinAdInterestGroup()
に渡されるインタレストグループ引数の trustedBiddingSignalsUrl
と trustedBiddingSignalsKeys
プロパティを使用して、Key/Value サービスからリアルタイムデータをリクエストできます。
runAdAuction()
が呼び出されると、ブラウザは各広告バイヤーの信頼できるサーバーにリクエストを送信します。リクエストの URL は以下のようになります。
https://kv-service.example/getvalues?hostname=publisher.example&keys=key1,key2
- ベース URL は
trustedBiddingSignalsUrl
から取得されます。 hostname
はブラウザによって提供されます。keys
の値はtrustedBiddingSignalsKeys
から取得されます。
このリクエストへのレスポンスは、各キーの値を提供する JSON オブジェクトです。
- FLEDGE の Explainer を読む: FLEDGE Key/Value サービスからリアルタイムデータを取得する。
- **FLEDGE Key/Value サービスのオープンソース化**をお読みください。
FLEDGE をテストするための初期実験段階では、trustedBiddingSignalsUrl
はインタレストグループのオーナーと同じオリジンを持つ必要があります。詳細は、Bring Your Own Server をご覧ください。
6. 落札した広告が表示される
runAdAuction()
によって返される promise は、URI(統一リソース識別子)に解決されます。この URN は、Fenced Frame 内のサイトに埋め込まれ、落札広告をレンダリングします。
- FLEDGE の Explainer を読む: ブラウザによる落札広告のレンダリング
7. オークション結果が報告される
長期的には、プライベート集計 API の API を使用して、ブラウザがセラーとバイヤーのオークション結果をレポートできるようにすることを計画しています。
一時的なイベントレベルのレポートの仕組みとして、セラー用に reportResult()
を実装し、落札者用に reportWin()
を実装するコードは、sendReportTo()
関数を呼び出すことができます。これはオークションの完了後に取得される URL を表す文字列を引数として取ります。これにより、レポートされるイベントレベルの情報が暗号化されます。
- API ガイドを読む: セラーとバイヤーのレポートについてお読みください。
8. 広告クリックがレポートされる
Fenced Frame にレンダリングされた広告のクリックが報告されます。これがどのように機能するかについて詳しくは、Fenced Frames 広告のレポートを参照してください。
FLEDGE と TURTLEDOVE の違い
FLEDGE と TURTLEDOVE の違い
FLEDGE は、TURTLEDOVE ファミリの提案の中で Chromium に実装された最初の実験です。
FLEDGE は、TURTLEDOVE の高レベルの原則に従います。一部のオンライン広告は、以前に広告主または広告ネットワークとやり取りしたことのある潜在的に関心のある人に広告を表示することに基づいています。これまで、これは広告主がウェブサイトをブラウジングする際に特定の人物を認識することで機能してきました。これが、今日のウェブのプライバシーに関する主な懸念事項です。
TURTLEDOVE の取り組みは、このユースケースに対処するための新しい API を提供すると同時に、プライバシーに関する以下のような重要な進化を提供することにあります。
- 広告主が考えるユーザーの興味についての情報を、広告主ではなくブラウザが保持する。
- 広告主は興味に基づいて広告を配信できますが、その興味を個人に関する他の情報(特に、そのユーザーやアクセスしているページなど)と組み合わせることはできません。
FLEDGE は、TURTLEDOVE と、API を使用する開発者により良いサービスを提供するための変更に関する関連提案のコレクションから生まれました。
- SPARROW: Criteo は、信頼できる実行環境(TEE)で実行される(「ゲートキーパー」)サービスモデルの追加を提案しました。 FLEDGE には、リアルタイムのデータ検索と集計レポートのための、より限定された TEE の使用が含まれます。
- NextRoll の TERN と Magnite の PARRROT の提案には、オンデバイス オークションにおけるバイヤーとセラーのさまざまな役割が説明されています。FLEDGE の広告入札・スコア付けフローは、この作業に基づいています。
- RTB House の結果ベースおよびプロダクトレベルの TURTLEDOVE の変更により、匿名モデルとオンデバイス オークションのパーソナライズ機能が改善されました。
- PARAKEET は、ブラウザとアドテック プロバイダーの間の TEE で実行されているプロキシサーバーに依存して広告要求を匿名化し、プライバシーのプロパティを強制する、TURTLEDOVE のような広告サービスに対する Microsoft の提案です。FLEDGE は、このプロキシモデルを採用していません。PARAKEET と FLEDGE の JavaScript API を連携させ、両方の提案の最良の機能をさらに組み合わせる将来の作業をサポートします。
FLEDGE はまだ、ユーザーがどの広告を見たかをウェブサイトの広告ネットワークが学習できないようにしていません。今後、よりプライベートになるように API を変更する予定です。
利用可能なブラウザ構成
利用可能なブラウザ構成
ユーザーは、chrome://settings/privacySandbox
のトップレベルの設定を有効または無効にすることで、Chrome のプライバシーサンドボックストライアルへの参加を調整できます。
初期のテストでは、ユーザーはこの高レベルのプライバシーサンドボックス設定を通じて FLEDGE をオプトアウトできます。Chrome では、ユーザーがアクセスしたウェブサイト全てで、自分が追加されたインタレストグループのリストを表示および管理できるようにする予定です。プライバシーサンドボックスのテクノロジー自体と同様に、ユーザー設定は、ユーザー、規制当局などからのフィードバックによって進化する可能性があります。
FLEDGE の提案が進むにつれて、テストとフィードバックに基づいて、Chrome で利用可能な設定を更新し続けます。将来的には、FLEDGE と関連データを管理するためのより詳細な設定を提供する予定です。
ユーザーがシークレットモードで閲覧している場合、API 呼び出し元はグループ メンバーシップにアクセスできません。また、ユーザーがサイトデータを消去すると、メンバーシップが削除されます。
貢献とフィードバックの共有
サポートを受ける
実装、デモ、またはドキュメントに関する質問とサポートについては、以下をご覧ください。
- GitHub: 提案を読み、質問を投稿したり、ディスカッションを閲覧したりできます。
- デモ: demo code リポジトリでイシューを提起してください。
- 開発者サポート: Privacy Sandbox Developer Support リポジトリでは、質問したり、ディスカッションに参加したりできます。FLEDGE のイシューテンプレートを選択してください。
- Chrome の実装: FLEDGE API の Chrome の実装に関するバグやイシューについて、既存のイシューを閲覧したり、新しいイシューを提起したりできます。
FLEDGE でのニーズへの対応に関する一般的な質問については、提案のリポジトリでイシューを報告してください。また、W3C の Improving Web Advertising Business Group で業界のユースケースについて話し合うこともできます。
プライバシーサンドボックスのフィードバックフォームを使用すると、公開フォーラムの外で Chrome チームと非公開でフィードバックを共有できます。
オプトアウト
FLEDGE からのオプトアウトをご希望ですか?サイトオーナーまたは個人ユーザーとして FLEDGE API へのアクセスをブロックする方法をご覧ください。
アップデートを入手する
- API ステータス変更の通知を受け取るには、開発者向けメーリングリストに参加してください。
- API に関する現在進行中のすべてのディスカッションを細かくフォローするには、GitHub の提案ページにある Watch ボタンをクリックしてください。これには、GitHub アカウントを持っているか作成する必要があります。
- プライバシーサンドボックスの包括的な最新情報を入手するには、RSS フィードで「プライバシーサンドボックスの進行状況」を購読してください。
- FLEDGE の定例会議にご参加ください(隔週)。どなたでも参加できますが、参加するにはまず WICG に参加してください。積極的に参加するのでも、聞くだけでも構いません!