概要
FLoC は、プライバシーを保護しつつ、興味ベースで広告を選択するメカニズムです。
ユーザーがウェブを動き回ると、ブラウザは FLoC アルゴリズムを使って、直近の閲覧履歴が似ているたくさんのブラウザで共通する「興味コホート」を割り出します。コホートはユーザーのデバイスで定期的に再計算されますが、個々の閲覧データがブラウザ ベンダーなどの他者と共有されることはありません。
広告主(お金を払って広告を出稿するサイト)は、自分のウェブサイトにコードを含めてコホートデータを収集し、アドテック プラットフォーム(広告を配信するソフトウェアやツールを提供する企業)に提供できます。たとえば、アドテック プラットフォームは、オンラインの靴店から、コホート 1101 と 1354 のブラウザはこの店のハイキング グッズに興味があるかもしれないことを把握できます。その他の広告主から、アドテック プラットフォームは各コホートのその他の興味を知ることができます。
次に、広告プラットフォームはこのデータを使って、これらのコホートのいずれかに属するブラウザが広告掲載サイト(ニュースサイトなど)のページをリクエストしたときに、関連性が高い広告(先ほどの靴店のハイキング シューズなど)を選択できます。
Privacy Sandbox は、サードパーティ Cookie などのトラッキング メカニズムを使わずにサードパーティ ユースケースを満たすための一連の提案です。各提案の概要については、Privacy Sandbox の詳細をご覧ください。
この提案について、皆さんからのフィードバックが必要です。コメントがある方は、FLoC Explainerリポジトリで Issue を作成してください。この提案に関連する Chrome の試験運用についてフィードバックがある方は、試験運用の目的に返信する形で投稿してください。
FLoC が必要になる理由
多くの企業は、サイトのトラフィックを増加するために広告を利用しています。そして多くのパブリッシャーのウェブサイトは、広告のインベントリを販売することで、コンテンツの資金を得ています。ユーザーは通常、関連性が高く有用な広告を見ることを好みます。また、広告の関連性が高いほど、広告主に多くのビジネスを、広告をホストしているウェブサイトに多くの収益をもたらします。言い換えれば、関連性の高い広告を表示すれば、広告スペースの価値が上がります。したがって、関連性の高い広告を選ぶことで、広告がサポートするウェブサイトの収益が上がります。つまり、関連性の高い広告は、ユーザーにメリットをもたらすコンテンツを制作するための資金源になります。
しかし、多くのユーザーは、関連性の高い広告が示唆するプライバシーの問題を心配しています。現在、このような広告は、Cookie によるトラッキングやデバイスのフィンガープリンティングなどの技術を利用しています。これらは、個人の閲覧動作を追跡するために使われる技術です。FLoC の提案は、プライバシーを侵害せずに広告選択の効率を高めることを目指しています。
FLoC の利用目的
- 広告主のサイトに頻繁にアクセスしたコホートや、それに関連するトピックに興味を示したコホートに属するブラウザを使うユーザーに広告を表示する。
- 機械学習モデルを使用して、ユーザーをコンバージョンできる可能性をコホートに基づいて予測し、広告オークションの入札動作に反映する。
- ユーザーにコンテンツをお勧めする。たとえば、あるニュースサイトで、スポーツのポッドキャスト ページの人気がコホート 1234 と 7 のユーザーの間で特に高い場合、同じコホートの他のユーザーにもそのコンテンツをお勧めできる。
FLoC の動作の仕組み
下の例は、FLoC を使って広告を選択するうえでのそれぞれの役割について説明しています。
この例の広告主(お金を払って広告を出稿する企業)は、次のオンライン靴店です。
shoestore.exampleこの例のパブリッシャー(広告スペースを販売するサイト)は、次のニュースサイトです。
dailynews.exampleアドテック プラットフォーム(広告を配信するソフトウェアやツールを提供する企業)は、次のサイトです。
adnetwork.example

この例では、ユーザーを Yoshiと Alexと呼びます。最初の状態では、どちらのブラウザも同じコホート 1354 に属しています。
ここではユーザーを Yoshi と Alex と呼んでいますが、これは例示のみの目的です。FLoC では、広告主、パブリッシャー、アドテック プラットフォームに名前や個々の ID が明かされることはありません。
コホートをユーザーの集合と考えないでください。そうではなく、コホートは閲覧アクティビティをグループ化したものと考えてください。
1. FLoC サービス
- ブラウザによって利用される FLoC サービスは、たくさんの「コホート」を持つ数学的なモデルを作成します。各コホートは、最近の閲覧履歴が似ているたくさんのウェブブラウザに対応しています。この処理については、後ほど詳しく説明します。
- それぞれのコホートに番号が付けられます。
2. ブラウザ
- Yoshi のブラウザは、FLoC サービスから FLoC モデルの詳細データを取得します。
- Yoshi のブラウザは、FLoC モデルのアルゴリズムを使ってどのコホートが自分の閲覧履歴に最も近いかを計算し、自分のコホートを割り出します。この例では、コホート 1354 とします。Yoshi のブラウザは、FLoC サービスに何のデータも送信していない点に注目してください。
- 同じように、Alex のブラウザもコホート ID を計算します。Alex の閲覧履歴は Yoshi の履歴とは違いますが、かなり似ているので、どちらのブラウザもコホート 1354 に属すると判断されます。
3. 広告主 : shoestore.example
- Yoshi が shoestore.exampleにアクセスします。
- サイトが Yoshi のブラウザにコホートを尋ねます。1354 が返されます。
- Yoshi がハイキング シューズのページを閲覧します。
- サイトは、コホート 1354 のブラウザがハイキング シューズに興味を示したことを記録します。
- サイトは後ほど、コホート 1354 が興味を示した製品についての追加情報も記録します。他のコホートについても同様です。
- サイトは、コホートと興味が示された製品についての情報を定期的に集計し、アドテック プラットフォーム adnetwork.exampleに送信します。
次は Alex です。
4. パブリッシャー : dailynews.example
- Alex が dailynews.exampleにアクセスします。
- サイトは Alex のブラウザにコホートを尋ねます。
- その後、アドテック プラットフォーム adnetwork.exampleに広告をリクエストしますが、その際に Alex のブラウザのコホート 1354 を含めます。
5. アドテック プラットフォーム : adnetwork.example
- adnetwork.exampleは、Alex に適した広告を選択できます。その際に、パブリッシャー dailynews.exampleと 広告主 shoestore.exampleからの以下のデータを組み合わせて利用します。
- Alex のブラウザのコホート(1354)。dailynews.exampleから提供されたもの。
- コホートと製品に対する興味に関するデータ。shoestore.exampleから提供されたもの。「コホート 1354 のブラウザはハイキング シューズに興味がある可能性がある」
- adnetwork.exampleは Alex に適した広告を選択します。ハイキング シューズの広告で、shoestore.exampleによるものが選ばれます。
- dailynews.exampleが広告 🥾を表示します。
現在の広告選択には、Cookie によるトラッキングやデバイスのフィンガープリンティングなどの技術が利用されています。これらは、広告主などのサードパーティが個人の閲覧行動を追跡するために使われる技術です。
FLoC では、ブラウザは FLoC サービスにも他の誰にも閲覧履歴を送信しません。ブラウザは、ユーザーのデバイス上でブラウザ自身が属するコホートを割り出します。ユーザーの閲覧履歴がデバイスを離れることは一切ありません。
FLoC モデルを作るバックエンド サービスは誰が運用するのか?
各ブラウザ ベンダーは、それぞれにどのようにコホートを作り出すのかを選択する必要があります。Chrome は独自の FLoC サービスを運用していますが、他のブラウザは異なるクラスタリングアプローチを採った FLoC を実装し、独自のサービスを運用する可能性があります。
FLoC サービスがブラウザにコホートを割り出す方法
- ブラウザによって利用される FLoC サービスは、すべての潜在的なウェブ閲覧履歴を表す多次元数学的表現を作成します。このモデルを「コホート空間」と呼びます。
- サービスはこの空間をたくさんのセグメントに分割します。各セグメントは、たくさんの類似した閲覧履歴のクラスタを表します。このグループ分けは、実際の閲覧履歴に基づくものではありません。単に「コホート空間」でランダムな中心を選んだり、空間をランダムな線で分割したりしたものです。
- それぞれのセグメントにコホート番号が与えられます。
- ウェブブラウザは、FLoC サービスから「コホート空間」を示すこのデータを取得します。
- ユーザーがウェブを動き回ると、ブラウザはあるアルゴリズムに基づき、「コホート空間」内でのブラウザ自身の閲覧履歴に最も近い領域を定期的に計算します。

このプロセスのどの時点においても、ユーザーの閲覧履歴が FLoC サービスやサードパーティに送信されることはありません。ブラウザのコホートは、ユーザーのデバイス上でブラウザ自身が計算します。FLoC サービスは、ユーザーデータを取得することも、保管することもありません。
ブラウザのコホートは変わることがあるか
はい、ブラウザのコホートはもちろん変わることがあります。毎週同じウェブサイトにアクセスすることはないでしょう。ブラウザのコホートはそれを反映します。
コホートは、ユーザーの集まりではなく、閲覧アクティビティのクラスタを表します。通常、コホートの行動の特徴は時間が経っても一貫性があり、コホートは最近の閲覧行動が似ているグループなので、広告の選択に役立ちます。それぞれのユーザーのブラウザは、閲覧行動の変化とともにコホートを出入りします。まずは、7 日ごとにブラウザがコホートを再計算することを想定しています。
上の例では、Yoshi と Alex のブラウザのコホートはどちらも 1354 でした。将来的に興味が変われば、Yoshi のブラウザと Alex のブラウザが別のコホートに移動する可能性があります。下の例では、Yoshi のブラウザはコホート 1101 に移動し、Alex のブラウザはコホート 1378 に移動します。他のユーザーのブラウザも、閲覧の興味が変わるにつれてコホートを出入りします。

コホートは、ユーザーのグループではなく、閲覧アクティビティのグループを定義します。行動が変わるにつれて、ブラウザはコホートを出入りします。
ブラウザはどのようにしてコホートを割り出すのか
前述のように、ユーザーのブラウザはコホートの数学モデルの詳細データを FLoC サービスから取得します。これは、すべてのユーザーの閲覧アクティビティを表す多次元空間です。その後、ブラウザはあるアルゴリズムを使い、この「コホート空間」のどの領域(すなわち、どのコホート)が最近の自身の閲覧行動に最も近いかを割り出します。
FLoC はどのようにしてコホートの適切なサイズを割り出すのか
各コホートには、たくさんのブラウザが存在することになります。
コホートのサイズが小さい場合、広告のパーソナライズには役立つかもしれませんが、ユーザーのトラッキングをやめることにはなりません。逆もまた同様です。ブラウザをコホートに割り当てるメカニズムには、プライバシーと有用性との間でトレードオフが必要になります。Privacy Sandbox は、ユーザーが「集団の中に隠れる」ことができるように、k-匿名性を利用します。コホートは、少なくとも k 人のユーザーによって共有されれば、k-匿名性があります。k の数が大きくなるほど、コホートのプライバシーは高くなります。
プライベートな分類に基づいてユーザーをグループ化するために FLoC を使えるか
FLoC のコホートモデルを作成するために使うクラスタリング アルゴリズムは、なぜ分類がプライベートなのかは知ることなく、コホートにプライベートな分類と相関関係があるかどうかを評価できるように設計されています。人種、性別、病歴など、プライベートな分類が明らかになる可能性があるコホートはブロックされます。言い換えれば、コホートを割り出すとき、ブラウザはプライベートな分類が明らかにならないようなコホートのみを選択します。
FLoC はオンラインでユーザーを分類するための別の方法にすぎないのか
FLoC では、ユーザーのブラウザは他のたくさんのユーザーのブラウザとともに、たくさんのコホートのうちの 1 つに属します。サードパーティ Cookie やその他のターゲティング メカニズムとは異なり、FLoC はユーザーのブラウザが属するコホートしか明かさず、個々のユーザー ID が明らかになることはありません。そのため、他者がコホート内の個人を特定することはできません。さらに、ブラウザのコホートを割り出すために使われる閲覧アクティビティに関する情報は、ローカルのブラウザやデバイスに留まり続けて、他の場所にアップロードされることはありません。ブラウザは、差分プライバシーなどの他の手法を使ってさらに匿名化することもできます。
ウェブサイトは参加して情報を共有する必要があるのか
ウェブサイトは、FLoC をオプトインすることもオプトアウトすることもできます。そのため、プライベートなトピックを扱うサイトは、そのサイトへのアクセスを FLoC の計算に含めないようにすることもできます。さらなる保護として、FLoC サービスによる分析では、そのコホートがなぜプライベートであるかを知ることなく、コホートによってユーザーに関するプライベートな情報が明らかになる可能性があるかどうかを評価します。あるコホートで、サイトにアクセスしたユーザーのうちプライベートな分類に属するユーザーの数が典型的なユーザーの数を超えている可能性がある場合、そのコホート全体が削除されます。この分析で扱われるプライベートな分類には、負債状況やメンタルヘルスなどが含まれます。
ウェブサイトは Permissions-Policyヘッダーに interest-cohort=()
を設定すると、FLoC 計算からオプトアウトすることができます。オプトアウトしていないページでは、document.interestCohort()
が使われていると、ブラウザの FLoC 計算に含まれることになります。FLoC のオリジントライアル期間中、広告や広告に関連するリソースを読み込むことが検知された場合も、ブラウザの FLoC 計算に含まれることになります(Chrome の広告検知メカニズムの仕組みは、Chromium での広告のタグ付けで説明しています)。イントラネットのサイトなど、プライベートな IP アドレスから提供されているページは、FLoC の計算対象に含まれません。
ウェブ デベロッパーとして FLoC を試すにはどうすればよいか
FLoC API はシンプルで、Promise を返すメソッドが 1 つあるだけです。この Promise は、コホートの id
と version
を表すオブジェクトに解決されます。
const { id, version } = await document.interestCohort();
console.log('FLoC ID:', id);
console.log('FLoC version:', version);
利用できるようになったコホートのデータは、次のように見えます。
{
"id":"14159",
"version":"chrome.1.0"
}
FLoC を使うサイトは、version
の値を使って、コホート ID が参照するブラウザと FLoC モデルを知ることができます。以下の説明のとおり、interest-cohort
パーミッションが許可されていないフレームでは、document.interestCohort()
が返す Promise はリジェクトされます。
FLoC API は Chrome 89 以降で利用できますが、オリジン トライアルに参加していない場合は、フラグを設定してコマンドラインから Chrome を実行する必要があります。さまざまなオペレーティング システムで実行する方法は、フラグ付きで Chromium を実行するで説明されています。
次のフラグを使って Chrome を起動します。
--enable-blink-features=InterestCohortAPI
--enable-features="FederatedLearningOfCohorts:update_interval/10s/minimum_history_domain_size_required/1,FlocIdSortingLshBasedComputation,InterestCohortFeaturePolicy"サードパーティ Cookie がブロックされていないこと、広告ブロッカーが実行されていないことを確認します。
floc.glitch.meのデモを確認します。
ファーストパーティとサードパーティのそれぞれのコンテキストで FLoC を試す方法は、FLoC のオリジン トライアルに参加する方法で説明しています。
ウェブサイトで FLoC の計算をオプトアウトするにはどうすればよいか
サイトで interest-cohort
パーミッション ポリシーを使うと、コホートを計算するためのユーザーのサイト一覧から除外することを宣言できます。このポリシーは、デフォルトで allow
となる予定です。interest-cohort
パーミッションが許可されていないフレームでは、document.interestCohort()
が返す Promise はリジェクトされます。メインのフレームに interest-cohort permission
がない場合、そのページへのアクセスは興味コホートの計算には使われません。
たとえば、次の HTTP レスポンス ヘッダーを送ると、すべての FLoC コホート計算をオプトアウトできます。
Permissions-Policy: interest-cohort=()
提案やフィードバックをするにはどうすればよいか
API に関するコメントがある方は、FLoC Explainerリポジトリで Issue を作成してください。
関連情報
Reviewed by Eiji Kitamura - Developer Relations Team