共有ストレージ ワークレットを実行して URL を選択し、フェンス付きフレームでレンダリングします。
Shared Storage API はプライバシー さまざまな用途をサポートする汎用のクロスサイト ストレージ向けのサンドボックス案 見ていきましょう。その一例がフリークエンシー制御で、 Chrome ベータ版 104.0.5086.0 以降でテストできます。
ワークレット スクリプトを実行して、保存されている URL のリストに基づいて、 その URL をフェンス付きフレームでレンダリングします。これを使用して フリークエンシーの上限に達したとき。
フリークエンシー別のクリエイティブの選択をテスト
共有ストレージとフェンス付きフレームでフリークエンシーによるクリエイティブの選択をテストするには、次の要件を満たしていることを確認してください。
Chrome 104.0.5086.0 以降を使用する。chrome://settings/adPrivacy
で、すべての広告プライバシー API を有効にします。
コマンドラインで --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
フラグを使用して共有ストレージを有効にすることもできます。
コードサンプルでテストする
不透明な URL を選択して作成するには、ワークレット モジュールを登録して、 使用されますワークレット クラスは、最大 8 つの URL のリストを受け取り、 選択された URL のインデックスを返します。
クライアントが sharedStorage.selectURL()
を呼び出すと、ワークレットは
が実行され、フェンス付きフレームにレンダリングされる不透明な URL が返されます。
たとえば、ユーザーがこれまでに見た頻度に応じて、別の広告やコンテンツを選択してレンダリングするとします。ユーザーがコンテンツを閲覧した回数をカウントし、その値を共有ストレージに保存できます。一度保存すると、共有ストレージの値はさまざまなオリジンで利用できるようになります。
次に、共有ストレージ ワークレットが共有ストレージ内の値を読み取り、ビューを追加するたびにカウンタをインクリメントします。カウントが事前定義された上限に達していない場合は、レンダリングするコンテンツが返されます(インデックス 1
)。そうでない場合は、デフォルトの URL が返されます(インデックス 0
)。
この例では、次のようになります。
creative-selection-by-frequencyjs
は、コンテンツ プロデューサーまたは広告主の iframe を介して読み込まれ、 共有ストレージ ワークレットを読み込み、返された opaque をレンダリングする フェンス付きフレームに変換できます。creative-selection-by-frequency-worklet.js
は、以下を読み取る共有ストレージ ワークレットです。 コンテンツまたは広告クリエイティブにどの URL が返されるかを判断します。
creative-selection-by-frequency.js
// The first URL is the default content or ad to be rendered when the frequency limits reached.
const CONTENT_URLS = [
{ url: `https://${contentProducerUrl}/default-content.html` },
{ url: `https://${contentProducerUrl}/example-content.html` },
];
async function injectAd() {
// Load the worklet module.
await window.sharedStorage.worklet.addModule('creative-selection-by-frequency-worklet.js');
// Set the initial frequency count
window.sharedStorage.set('frequency-count', 0, {
ignoreIfPresent: true,
});
// Run the URL selection operation to choose an ad based on the frequency count in shared storage.
const fencedFrameConfig = await window.sharedStorage.selectURL('creative-selection-by-frequency', CONTENT_URLS, {
resolveToConfig: true
});
// Render the opaque URL into a fenced frame
document.getElementById('content-slot').config = fencedFrameConfig;
}
injectAd();
creative-selection-by-frequency-worklet.js
const FREQUENCY_LIMIT = 5;
class CreativeSelectionByFrequencyOperation {
async run(urls, data) {
// Read the current frequency limit in shared storage
const count = parseInt(await sharedStorage.get('frequency-count'));
// Check if the frequency limit has been reached.
if (count === FREQUENCY_LIMIT) {
console.log('Frequency limit has been reached, and the default content will be rendered.');
return 0;
}
// Set the new frequency count in shared storage
await sharedStorage.set('frequency-count', count + 1);
return 1;
}
}
// Register the operation as 'creative-selection-by-frequency'.
register('creative-selection-by-frequency', CreativeSelectionByFrequencyOperation);
ユースケース
このセクションでは、Select URL API で利用可能なすべてのユースケースについて説明します。フィードバックや新しいテストケースの検出に応じて、例を追加していきます。
- 広告クリエイティブをローテーションする: クリエイティブ ID やユーザー インタラクションなどのデータを保存して、ユーザーに表示するクリエイティブをさまざまなサイト間で決定します。
- フリークエンシーで広告クリエイティブを選択する: 視聴回数データを使用して、ユーザーがさまざまなサイトで目にするクリエイティブを特定します。
- A/B テストを実施する: ユーザーをテストグループに割り当て、そのグループを共有ストレージに保存して、クロスサイトからアクセスできるようにします。
- 既知のユーザー向けにエクスペリエンスをカスタマイズする: ユーザーの登録ステータスやその他のユーザー状態に基づいて、カスタム コンテンツや行動を促すフレーズを共有します。
意見交換とフィードバックの提供
Select URL API プロポーザルは現在議論と開発中であり、変更される可能性があります。
Select URL API について、ぜひご意見をお聞かせください。
- 提案書: 詳細な提案書を確認します。
- ディスカッション: 進行中のディスカッションに参加して、質問したり、分析情報を共有したりできます。
最新情報を入手する
- メーリング リスト: メーリング リストに登録すると、Select URL API と Shared Storage API に関する最新情報やお知らせを受け取ることができます。
ご不明な点がある場合
- デベロッパー サポート: プライバシー サンドボックス デベロッパー サポート リポジトリで他のデベロッパーと交流し、質問に答えてもらうことができます。