Google の更新版 EU ユーザーの同意ポリシーのもと、サイト運営者様およびパブリッシャー様は、欧州経済領域(EEA)と英国のユーザーに対して特定の情報を開示すること、ならびに Cookie などのローカル ストレージの使用(法律で義務付けられている場合)および広告のパーソナライズを目的とする個人データの収集、共有、使用について、それらのユーザーの同意を得ることが必要になります。このポリシーには、EU の e プライバシー指令と一般データ保護規則(GDPR)の要件が反映されています。
リクエストごとの広告のパーソナライズ設定は、EEA と英国のユーザーだけでなく全世界のユーザーに適用されます。リクエストごとのパラメータを EEA と英国以外のユーザーのリクエストに追加した場合は、パーソナライズされていない広告が返されます。
GPT と AdSense タグを使用しているページ向けの広告のパーソナライズ設定
広告をリクエストする
Google に広告リクエストがあると、デフォルトでパーソナライズド広告(パーソナライズされている広告)が配信されます。配信される広告は、対象のウェブページのコンテンツと、ページにアクセスしている個人ユーザーの履歴の両方に基づいて選択されます。また Google は、パーソナライズされていない広告の配信にも対応しています。パーソラナイズされている広告とパーソナライズされていない広告についての詳細
同意ポリシーの要件を満たしたうえで、サイトにアクセスする欧州経済領域のすべてのユーザーに、パーソナライズされていない広告を配信する場合は、広告タグを変更する必要はありません。Google アド マネージャーまたは AdSense の管理画面で、パーソナライズされていない広告の配信を有効にできます。
ユーザーに応じてパーソナライズド広告とパーソナライズされていない広告の配信を切り替える場合は、Google サイト運営者タグ(GPT)と AdSense または Ad Exchange の非同期広告タグを使用して、パーソナライズされていない広告の呼び出しをページ単位で設定することができます。この方法は、すべてまたは一部のユーザーに、パーソナライズド広告とパーソナライズされていない広告のどちらを表示するかの選択肢を提供する場合に効果的です。
この広告では、Cookie が広告のパーソナライズの目的で使用されることはありませんが、フリークエンシー キャップの設定、広告レポートの集計、詐欺や不正使用の防止の目的では使用されます。したがって、EU の e プライバシー指令の Cookie に関する条項が適用される国のユーザーに対しては、こうした目的で Cookie を使用することについてユーザーの同意を得る必要があります。パーソナライズされていない広告についての詳細
GPT タグの場合:
次のメソッドを使用します: googletag.pubads().setRequestNonPersonalizedAds(1)
setCookieOptions()
呼び出しは GDPR に準拠していません。
AdSense と Ad Exchange の非同期広告タグの場合:
次の値を設定します: (adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1
これらのメソッドを指定すると、GPT、AdSense、または Ad Exchange の非同期広告タグ(adsbygoogle.js
)、IMA SDK といったサポートされている広告タグによってウェブページから配信される Google 広告が、パーソラナイズされていない広告としてリクエストされます。広告タグでパーソナライズされていない広告がリクエストされているかどうかを調べるには、ブラウザのデベロッパー ツールを使って、該当の広告リクエストにパラメータ &npa=1
が設定されているかどうかを確認します。
setRequestNonPersonalizedAds(0)
を呼び出すか、requestNonPersonalizedAds=0
を設定すると、広告のパーソラナイズが再び有効になります。ページに複数の種類の Google 広告タグが含まれている場合(GPT タグに加えて AdSense または Ad Exchange の非同期タグが設定されている場合など)は、どのタグが最初に実行されるか予測できないこともあります。念のため、パーソナライズされていない広告の設定はタグの種類ごとに行ってください。
広告リクエストを一時停止する
GPT、および AdSense または Ad Exchange の非同期タグでは、ページの読み込み後、明示的なシグナルを受信してから広告リクエストが送信されるように設定することができます。この方法は、広告リクエストの送信前に、同意を求める UI を表示してユーザーの回答を促す場合に役立つことがあります。
GPT を使用する場合: 非同期モードを使用している場合に広告リクエストを遅らせることができます。
disableInitialLoad()
関数を使用して、ページの最初の読み込み時にタグが広告リクエストを送信しないようにします。必ず、display()
を使用して広告リクエストをトリガーする前に、この関数を使用してください。- 通常どおり、
googletag.cmd.push(...)
への呼び出しを使用して広告スロットを設定します。 - 同意に関するユーザーの選択に応じて、
setRequestNonPersonalizedAds(1)
を呼び出します。 refresh()
関数を使用して、広告リクエストの送信を再開します。refresh()
を呼び出さないと広告は表示されません。enableSyncRendering()
を使用している場合、広告リクエストを遅らせることはできません。
AdSense または Ad Exchange の非同期広告コードを使用する場合:
(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1
を使用して、タグから広告リクエストが送信されないようにします。必ず、adsbygoogle.push(...)
を使用して広告リクエストをトリガーする前に、この関数を使用してください。- 通常どおり、
adsbygoogle.push(...)
への呼び出しを使用して広告スロットを設定します。 - ユーザーから同意に関する回答があった後、必要に応じて
requestNonPersonalizedAds=1
を設定します。 (adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1
を使用して、広告リクエストの送信を再開します。pauseAdRequests=0
を設定しないと広告は表示されません。
この方法で広告リクエストの送信がブロックされますが、各種のスクリプトは読み込まれます。Google のドメインにすでに設定されている Cookie は読み取られますが、新たに Cookie が設定されることはありません。また、既存の Cookie に関連付けられているデータが、広告の配信や測定に使用されることはありません。
ユーザーの同意を得るため、ユーザーから回答があるまでスクリプトの読み込みを遅らせるなんらかのソリューションを使用している場合は、gpt.js
と adsbygoogle.js
の読み込みを遅らせるという方法もあります。他のタイプの Google 広告タグでは、広告リクエストの一時停止がサポートされていません。そのため、パーソナライズド広告またはパーソナライズされていない広告のいずれかをリクエストする準備が整うまで、そうした広告タグが読み込まれないようにする必要があります。
AMP ページ向けの広告のパーソナライズ設定
AMP ページからの広告リクエストに対しても、上で説明した AMP 以外のページの場合と同じ広告のパーソナライズ設定を使用できます。つまりサイト運営者やパブリッシャーは、欧州経済領域(EEA)と英国のすべてのユーザーにパーソナライズされていない広告を配信するよう設定するか、ユーザーの同意に基づいてパーソナライズド広告とパーソナライズされていない広告を選択的に配信するよう設定することができます。以下では、それぞれのシナリオについて、AMP ページから <amp-ad type=”doubleclick”>
または <amp-ad type=”adsense”>
を使用して広告をリクエストする際の設定方法を紹介します。
欧州経済領域(EEA)と英国のすべてのユーザーにパーソナライズされていない広告を配信する
AMP 広告タグでリアルタイム設定(RTC)を使用していない場合は、Google アド マネージャーか AdSense の管理画面でパーソナライズされていない広告の配信を有効にできます。AMP ページに変更を加える必要はありません。
AMP 広告タグでリアルタイム設定(RTC)を使用している場合は、パーソナライズされていない広告が配信されるユーザー(欧州経済領域と英国のユーザー)に対して RTC リクエストを送信しないようにページを設定します。そのために必要なコンポーネントと設定(amp-geo
と amp-consent
)を次に示します。
<!-- まず amp-geo 拡張機能を設定します。「eea」グループを定義して、欧州経済領域(EEA)のすべての国を含めます。このリストは、必ず最新の状態を維持してください(EEA の加盟国は今後変わる可能性があります)。-->
<amp-geo layout="nodisplay">
<script type="application/json"
{
"ISOCountryGroups": {
"eea": [ "at", "be", "bg", "cy", "cz", "de", "dk", "ee", "es", "fi", "fr",
"gb", "gr", "hr", "hu", "ie", "is", "it", "li", "lt", "lu", "lv", "mt", "nl",
"no", "pl", "pt", "ro", "se", "si", "sk"]
}
}
</script>
</amp-geo>
<!-- 次に、EEA 加盟国のエンドユーザー向けの同意確認用コンポーネントを設定します。このコンポーネントは、自動的に同意しないよう後で設定して、実際には同意確認が行われないようにします。これにより、RTC 呼び出しと、アド マネージャーまたは AdSense でパーソナライズされていない広告を配信するためのシグナルが中断されます。 -->
<amp-consent layout="nodisplay" id="consent-element">
<script type="application/json">
{
"consents": {
"my_consent": {
"promptIfUnknownForGeoGroup": "eea"
}
}
}
</script>
</amp-consent>
ページにすでに amp-ad
コンポーネントがある場合は、次のように data-block-on-consent
属性を追加する必要があります。
<!-- 最後に広告タグを設定し、自動的に同意しないよう指定します -->
<amp-ad data-block-on-consent="_auto_reject"
width=320 height=50
type="doubleclick"
data-slot="/4119129/mobile_ad_banner">
</amp-ad>
同意に基づいてパーソナライズド広告とパーソナライズされていない広告の配信を切り替える
AMP ではカスタム JavaScript を使用できないため、パーソナライズド広告またはパーソナライズされていない広告のリクエストは、amp-consent
コンポーネントと data-block-on-consent
および data-npa-on-unknown-consent
属性の設定に基づいて行います。たとえば amp-consent
コンポーネントを設定するとともに、data-block-on-consent
を使ってページのすべての <amp-ad>
タグにこのコンポーネントをリンクしている場合、処理の流れは次のようになります。
amp-consent
コンポーネントにユーザーが肯定応答を返した(同意した)場合、広告は通常どおりにリクエストされます。amp-consent
コンポーネントにユーザーが否定応答を返した(同意しなかった)場合は、パーソナライズされていない広告がリクエストされます。amp-consent
コンポーネントに対するユーザーの応答が不明な場合(ユーザーが同意確認のメッセージを閉じた場合)は、以下のいずれかの処理が行われます。- デフォルトでは、広告リクエストは一切送信されません。
data-npa-on-unknown-consent
がtrue
に設定されている場合は、パーソナライズされていない広告がリクエストされます。
amp-geo
コンポーネントの設定に基づき、ユーザーの所在地が同意の確認の対象外と判定された場合、リクエストは通常どおりに送信されます。
<amp-ad>
タグで data-block-on-consent
が使用されていない場合、または amp-consent
コンポーネントが正しく設定されていない場合、リクエストは通常どおりに送信されます。
欧州経済領域(EEA)のすべてのユーザーに同意の確認メッセージを表示するように設定する例を以下に示します。動作結果は上で説明したとおりとなります。
<!-- まず amp-geo 拡張機能を設定します。「eea」グループを定義して、欧州経済領域(EEA)のすべての国を含めます。このリストは、必ず最新の状態を維持してください(EEA の加盟国は今後変わる可能性があります)。-->
<amp-geo layout="nodisplay">
<script type="application/json">
{
"ISOCountryGroups": {
"eea": [ "at", "be", "bg", "cy", "cz", "de", "dk", "ee", "es", "fi", "fr",
"gb", "gr", "hr", "hu", "ie", "is", "it", "li", "lt", "lu", "lv", "mt", "nl",
"no", "pl", "pt", "ro", "se", "si", "sk"]
}
}
</script>
</amp-geo>
<!-- 次に、「eea」加盟国グループのユーザー向けの同意設定を行います -->
<amp-consent layout="nodisplay" id="consent-element">
<script type="application/json">
{
"consents": {
"my_consent": {
"promptIfUnknownForGeoGroup": "eea",
"promptUI": "myConsentFlow"
}
}
}
</script>
</amp-consent>
<!-- 最後に広告タグを設定し、必要に応じて同意の応答を待つよう指定します -->
<amp-ad data-block-on-consent
width=320 height=50
type="doubleclick"
data-slot="/4119129/mobile_ad_banner">
</amp-ad>
ユーザーに対して同意するかどうかの選択を促す方法は他にもあります。たとえば、ページから checkConsentHref
を介して、設定したエンドポイントに CORS POST リクエストを送信するよう設定できます。詳しくは、amp-consent に関するドキュメントをご覧ください。
その他のタグを使用している場合の広告のパーソナライズ設定
GPT パスバックタグ
GPT パスバックタグを使用している場合は、API 呼び出しに次のコードを含めることで、広告リクエストがパーソナライズされていない広告用のものであると示すことができます。
googletag.pubads().setRequestNonPersonalizedAds(int options);
広告リクエストがパーソナライズされていない広告用のものであることを示すには、options
パラメータを整数値 1 に設定します。広告リクエストがパーソナライズド広告に対応していることを示すには、このパラメータを整数値 0 に設定します。
例:
<script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js">
googletag.pubads().setRequestNonPersonalizedAds(1);
googletag.pubads().definePassback("123456/ad/unit", [100,200])
.display();
</script>
タグなしリクエスト
タグなしリクエストを使用している場合、広告リクエストをパーソナライズされていない広告として指定するには、タグのリクエスト URL に npa=[int]
パラメータを直接追加します。URL の末尾が省略される場合もあるため、このパラメータはタグの前の方に指定することをおすすめします。ここでは npa=1
を指定して、広告リクエストをパーソナライズされていない広告としてマークします。このパラメータを省略した場合、デフォルトではパーソナライズド広告がリクエストされます。次の例をご覧ください。
https://securepubads.g.doubleclick.net/gampad/ad?iu=/12345/adunit&sz=728x90&npa=1&c=12345
検索向け AdSense
Google に広告リクエストがあると、デフォルトでパーソナライズド広告が配信されます。配信される広告は、ユーザーの検索語句と、検索している個人ユーザーの履歴の両方に基づいて選択されます。また Google は、パーソナライズされていない広告の配信にも対応しています。パーソナライズド広告とパーソナライズされていない広告についての詳細
ユーザーに応じてパーソナライズド広告とパーソナライズされていない広告の配信を切り替える場合は、検索向け AdSense タグを使用して、パーソナライズされていない広告の呼び出しをページ単位で設定することができます。この方法は、すべてまたは一部のユーザーに、パーソナライズド広告とパーソナライズされていない広告のどちらを表示するかの選択肢を提供する場合に効果的です。
カスタム検索広告を配信する場合は、カスタム検索広告タグの pageOptions
にコードを追加します。ウェブ広告タグの場合、コードは次のようになります。
personalizedAds: false,
AdMob タグの場合、コードは次のようになります。
builder.setAdvancedOptionValue("personalizedAds", "false");
iOS タグの場合、コードは次のようになります。
[request setAdvancedOptionValue:@"false" forKey:@"personalizedAds"];
これらのメソッドを指定すると、対象のリクエストがパーソナライズされていない広告リクエストになります。これはステートレス パラメータです。同じユーザーに対する後続のリクエストでこのパラメータが設定されていない場合は、デフォルト(パーソナライズド広告をリクエスト)の動作になります。
Google Mobile Ads SDK
Google Mobile Ads SDK について詳しくは、アプリ デベロッパー サイト(iOS GMA SDK、Android GMA SDK)をご確認ください。
Google Interactive Media Ads SDK(動画向け)
動画リクエストでは、広告タグに npa=1
パラメータを追加することで、Google が動画コンテンツをパーソナライズされていない広告として扱うように指定することができます。これには、手動で作成したマスター動画タグを使用するか、プラットフォーム固有の IMA SDK(HTML 5 IMA SDK、iOS IMA SDK、Android IMA SDK、Google Cast IMA SDK)のいずれかを使用する方法があります。
動画プレーヤーでアド マネージャーのダイナミック広告挿入機能を使用している場合は、VOD(ビデオ オンデマンド)またはライブ ストリームのリクエストに npa=1
パラメータを追加し、一緒に送信される広告リクエスト(DAI HTML5 SDK、DAI Cast SDK、DAI iOS SDK、DAI Android SDK、DAI Roku SDK、DAI tvOS SDK)に渡すこともできます。
従来の Google サイト運営者広告タグ
他のタイプの Google 広告タグ(従来の GAM タグや GUT タグ、AdSense または Ad Exchange の非同期タグ(show_ads.js
)など)では、パーソナライズされていない広告のリクエストの送信はサポートされていません。そのため、パーソナライズド広告をリクエストする準備が整うまでは、広告タグが読み込まれないようにする必要があります。別の方法として、パーソナライズド広告とパーソナライズされていない広告の機能をフルでサポートしているタグのいずれかに移行し、同意が必要とされる場合にその回答を得るまでリクエストを一時停止するよう設定することもできます。EU ユーザーの同意ポリシーに準拠した状態を保つには、こちらのほうが簡単な場合もあります。