Select URL を使用すると、基盤となる保存済みデータを公開することなく、共有ストレージのデータに基づいてユーザーに表示するコンテンツを選択できます。
プライバシーに配慮した方法でクロスサイト データに基づいてコンテンツを表示したい場合は、Select URL API を使用できます。Select URL API は、次のようなユースケースに適しています。
- 複数のサイトで一貫したユーザー エクスペリエンスを提供するためのコンテンツの A/B テスト。
- アカウントを持っているユーザーと持っていないユーザーで異なるログイン ボタンを表示します。
- 広告クリエイティブをローテーションして、複数のサイトで同じ広告がユーザーに表示される頻度を制限します。
Select URL API とは何ですか?
Select URL API を使用すると、クロスサイト データに基づいて一連の URL から選択できます。この API は Shared Storage の上に構築されており、SharedStorageWorklet を使用して利用可能なクロスサイト データを読み取り、提供された URL のいずれかを選択します。選択された URL は、フェンス付きフレーム内でのみ読み取れるように、呼び出し元に返されます。URL は、少なくとも 2026 年までは iframe でレンダリングすることもできます。

上の図では、shoes.example サイトを news.example などの他のパブリッシャー サイトに埋め込むことができます。また、共有ストレージで Select URL を使用して埋め込む適切なコンテンツを選択することで、同じデータにアクセスできます。
URL 選択の仕組み
Select URL API を使用すると、クロスサイト データを使用して、フェンス付きフレームまたは iframe にレンダリングする URL を選択できます。JavaScript を使用して共有ストレージのクロスサイト データを読み書きし、保存されたデータに基づいて提供されたリストから URL を選択します。

レンダリングされた URL には、広告、記事、画像、HTML、行動を促すフレーズ(ボタンなど)など、あらゆる種類のコンテンツを含めることができます。
この例では、旅行サイトを運営しており、3 つの異なる広告クリエイティブで広告キャンペーンを実施しています。ユーザーの操作(視聴またはクリック)に基づいてこれらのクリエイティブをシーケンス化します。
サイトが最初に落札した広告スペースを検出したときに、そのクリエイティブの ID とクリック ステータスを共有ストレージに保存できます。
次に例を示します。
await sharedStorage.set('last-creative', 'globe');
await sharedStorage.set('click', 'true');
つまり、このユーザーがアクセスした他のサイトで広告オークションに落札した場合、そのデータに基づいて別の広告を表示できます。

JavaScript は SharedStorageWorklet で実行されてこの情報を取得しますが、コードは親ページの iframe またはフェンス付きフレームの外側でやり取りしたり通信したりすることはできません。
別の例として、埋め込みコンテキストでどちらの記事のパフォーマンスが優れているかをテストすることもできます。これをテストするには、サイトでユーザーを確認したときにユーザーをテストグループに割り当て、そのグループ ID を共有ストレージに保存して、クロスサイト コンテキストでアクセスできるようにします。別のサイトでは、Select URL API を使用して、共有ストレージに保存されているユーザーのテストグループに基づいて、フェンス付きフレームでレンダリングするのに最も適切な URL を選択できます。
Select URL を使用すると、ユーザー情報(ブラウザの履歴やその他の個人情報など)を埋め込みサイトと共有したり、データを独自のサーバーに漏洩させたりすることなく、クロスサイト データに基づいて十分な情報に基づいた意思決定を行うことができます。
予算
クロスサイト データ漏洩のリスクを軽減するため、Select URL API では長期予算と短期予算を組み合わせた予算システムを使用します。
- 長期予算:
selectURL()を使用する場合、長期予算は呼び出し元サイトごとに 1 日あたり 12 ビットです。この予算は、選択した URL をホストするフレームがトップレベルのナビゲーションを実行した場合にのみ請求されます。費用はlog2(number of URLs)として計算されます。たとえば、選択肢として 8 個の URL を指定した場合、費用は 3 ビットになります。その日の残りの予算は12 - (sum of bits deducted in the last 24 hours)として計算されます。予算が不足している場合は、デフォルトの URL(リストの最初の URL)が返され、デフォルトの URL に移動すると 1 ビットが記録されます。 短期予算: 短期予算は、フェンス付きフレームが完全に適用され、イベントレベル レポートが利用可能になるまでの間、ページ読み込みごとに設定される追加の制限です。
selectURL()を使用して 1 つの呼び出しサイトがリークできる量を制限する、呼び出しサイト 1 つあたり、ページ読み込み 1 回あたり 6 ビットの予算があります。また、ページ読み込みあたりの合計 12 ビットの予算もあります。これは、ページ上のすべての呼び出しサイトの合計上限です。保存したクエリを使用すると、同じページで以前の
selectURL()の結果を再利用できるため、短期的な予算の使用量を削減できます。保存されたクエリ名でselectURL()が初めて呼び出されると、結果のインデックスがページの存続期間にわたって保存されます。後続の呼び出しで同じ保存済みクエリ名を使用してselectURL()が呼び出されると、保存されたインデックスが返され、登録されたオペレーションは実行されません。この場合、予算は初回使用時にのみ課金され、同じページ読み込み内の再利用では課金されません。これは、新しい情報が明らかにされないためです。保存済みクエリを実装するには、次の例に示すように、選択したクエリ名を含む savedQuery プロパティをオプション オブジェクトに追加します。
const topProductUrls = [ { url: 'https://ad.example/default-top-product.html' }, { url: 'https://ad.example/experiment-top-product.html' }]; const relatedProductUrls = [ { url: 'https://ad.example/default-related-product.html' }, { url: 'https://ad.example/experiment-related-product.html' }]; // This is the first call to `selectURL()` with `savedQuery: 'control_or_experiment'` // on this page, so it will be charged to both per-page budgets. const topProductsConfig = await sharedStorage.selectURL( 'productExperiment', topProductUrls, { savedQuery: 'control_or_experiment', keepAlive: true, resolveToConfig: true }); document.getElementById('topProductsFencedFrame').config = topProductsConfig; // This next call with this savedQuery won't charge either of the per-page budgets. const relatedProductConfig = await sharedStorage.selectURL( 'productExperiment', relatedProductUrls, { savedQuery: 'control_or_experiment', resolveToConfig: true }); document.getElementById("relatedProductFencedFrame").config = relatedProductConfig;
URL API のユースケースを選択する
異なるドメイン間で機能する必要があるウェブサイトを構築している場合は、次のいずれかのユースケースが考えられます。
- 広告クリエイティブをローテーションする: クリエイティブ ID、ビュー数、ユーザーの操作などのデータを保存して、ユーザーが複数のサイトで同じ広告を見る頻度を制限し、ユーザーがさまざまなサイトで見るクリエイティブを決定します。これにより、視聴回数のバランスを取り、特定のコンテンツの過剰な飽和を回避して、ユーザー エクスペリエンスの低下を抑えることができます。このユースケースの詳細については、広告クリエイティブをローテーションするをご覧ください。
- フリークエンシーで広告クリエイティブを選択: 共有ストレージにブラウザのビュー数を保存して、複数のサイトで同じ広告がユーザーに表示される頻度を制限します。このユースケースの詳細については、フリークエンシーで広告クリエイティブを選択するをご覧ください。
- 既知の顧客向けにユーザー エクスペリエンスをカスタマイズする: 複数のドメインで一貫性のあるエクスペリエンスを提供します。ユーザーの登録ステータスやその他のユーザーの状態に基づいてカスタム コンテンツや行動を促すフレーズを共有し、さまざまなドメインで一貫したエクスペリエンスを提供します。このユースケースの詳細については、既知のお客様のユーザー エクスペリエンスをカスタマイズするをご覧ください。
- A/B テストを実行する: A/B テストでは、構成の 2 つ以上のバージョンを比較して、どれが最も効果的かを判断します。ユーザーをテストグループに割り当て、そのグループをクロスサイト アクセス用に共有ストレージに保存できます。これにより、個々のユーザーをトラッキングすることなく、サイトのネットワーク全体でユーザーの行動に関する分析情報を収集できます。このユースケースの詳細については、A/B テストを実行するをご覧ください。
Shared Storage を使用した Select URL API を使用すると、さまざまなトップレベル サイトで同じストレージにアクセスできるため、これらのユースケースを開発できます。
デモを試す
共有ストレージのデモを使用して、URL の選択を試すことができます。
このデモは、さまざまなパブリッシャーのサイトで情報を保存したい広告主、広告テクノロジー、コンテンツ配信業者、その他のサードパーティ サービスの視点から構築されています。デモでは、各ユースケースでパブリッシャー A とパブリッシャー B の両方のサイトで同じサードパーティ コードが実行されます。各パブリッシャーのページにアクセスして、クロスサイト コンテキストでデータがどのように共有されるかを確認してください。
デモのコードは GitHub で確認することもできます。
API のステータス
Select URL API は一般提供されています。Select URL API を使用するか、ローカル開発で有効にするには、プライバシー サンドボックスに登録する手順に沿って操作します。
| 提案 | ステータス |
|---|---|
コンテンツ選択のイベントレベルのレポート(selectURL()) |
2026 年まで利用可能 |
| サイトごとの予算編成 説明 |
M119 で利用可能 |
| DevTools を使用した共有ストレージ ワークレットのデバッグ セクション |
M120 で利用可能 |
意見交換とフィードバックの提供
Select URL API の提案は現在、活発な議論と開発が進められており、今後変更される可能性があります。
Select URL API に関する皆様のご意見をぜひお聞かせください。
- 提案: 詳細な提案内容を確認のうえ、ご検討ください。
- ディスカッション: 進行中のディスカッションに参加して、質問したり、インサイトを共有したりしてください。