Googleタグマネージャが同意の設定に対応
2021年06月2日
ライター:畑岡 大作

日本時間の2021年5月27日夜、Googleタグマネージャ(以下GTM)へ「同意の設定」関連の機能が実装されました。
これはいわゆる「同意ツール」と呼ばれる類のタグがGTMへ対応するための機能群で、これにより、同意ツールがコミュニティタグテンプレートとして対応できるようになった、というわけです。

  • 同意状況に応じて各タグの発火制御を行う「同意設定」オプション(タグ > 詳細設定)
  • 「同意設定」を複数タグへまとめて行う/未設定タグの一覧などを見られるようになる「同意の概要を有効にする」オプション(管理 > コンテナの設定)
  • 主に同意ツールタグ向けに新規追加された「同意の初期化」と「初期化」の2トリガー
  • カスタムテンプレートに新API

今回の機能追加は実のところ、GTMがユーザーに同意を求める機能を実装した、というわけではありません。あくまで前述のとおり「コミュニティタグテンプレートで同意ツールおよび計測タグが対応できるようになった」だけのものです。
そのため、実際には「GTM対応した同意ツールをサイトで利用しているなら、使えるようになるオプション設定」という理解で良いかと思います。

  1. 「同意」とは?
  2. 同意状況に応じて発火判定を行うタグの「同意設定」
  3. 一括操作で同意設定を行えるようになる「同意の概要を有効にする」
  4. 新規追加された2トリガー
  5. 実際の運用方法
    1. 同意時にタグを発火させたい場合
  6. 【開発者向け】カスタムテンプレートへ追加された新API

「同意」とは?

2018年にヨーロッパで施行されたGDPR以降、「Cookie使うならユーザーの『同意』を得なければならない」となりました。
具体的には、サイト流入時に画面下部などへ出てくる「このサイトはCookieを利用します。OK?」みたいなフローティングバーを見たこと、おそらくほとんどの人があると思います。あれです。

同意ツールのイメージ図
(※図は合成イメージです)サイト流入時に表示される、Cookie使用の同意を求めるバー。これがいわゆる同意ツール。

日本はまだ法定されていないため対応は必須ではありませんが、近年では日本国内のサイトでもちらほらと見るようになりましたね。

Google製品(Googleアナリティクス、Google広告、Floodlightの3製品)については以前よりgtagの書式で対応されていましたが(参考:Consent mode (beta)、今回の実装でGTMでも同様にコンテナ内の設定で対応ができるようになったわけです。

同意状況に応じて発火判定を行うタグの「同意設定」

実際の利用として最も多く扱うであろう機能が、タグの「同意設定」オプションです。
タグ編集画面の「詳細設定」の最下部へ追加されており、そこからタグごとに変更可能です。

タグ編集画面の詳細設定
各タグの「詳細設定」へ「同意設定」オプションが追加されています。
組み込み同意チェック
  • タグ内で判定に利用されている同意タイプが表示されます。
    タグ内の処理で同意タイプを利用していない場合は何も表示されません。
  • ここに表示された同意タイプが拒否されている場合、タグ内部で判定されて動作が変わったりします。
追加同意チェック
  • 未設定(デフォルト)」「追加同意は不要」「タグの配信時に追加同意が必要」の3種類。
  • 「組み込み同意チェック」に使いたい同意タイプが表示されていない場合は、「タグの配信時に追加同意が必要」を選んで手動で追加します。
    追加同意に設定した同意タイプが許可されていない場合、タグの発火自体がされなくなります。
  • 「未設定」と「追加同意は不要」の動作は変わりませんが、管理上、追加同意が不要だとわかっているなら「追加同意は不要」へ切り替えておいた方が良いです。

GTMでの「同意」はデフォルトでは以下の5種類が用意されており、タグの用途に応じて使い分けが推奨されています。
これらの他、手動で任意の名称の同意タイプも入力可能です。

ad_storage 広告用途で使われるCookie向け。
analytics_storage 解析用途で使われるCookie向け。
functional_storage 機能面の補強用途などで使われるCookie向け。
personalization_storage パーソナラナイズド(個人最適化)用途などで使われるCookie向け。
security_storage セキュリティ強化目的で使われるCookie向け。

なお同意ツールを利用していない場合、各同意タイプのデフォルト値は「許可」扱いになります。
そのため、GTMの同意設定に対応した同意ツールのタグテンプレート等を利用していないのであれば、タグの同意設定を変えても特に動作に変化はありません。

一括操作で同意設定を行えるようになる「同意の概要を有効にする」

同意ツールをサイトで利用しているのであれば、ONにしておきたいのが「同意の概要を有効にする」オプションです。
これは管理メニューの「コンテナの設定」画面へ追加されています。

コンテナの設定画面
管理 > コンテナの設定 へ「同意の概要を有効にする」が追加実装。

「同意の概要を有効にする」をONにすると、以下の機能が使えます。

  • タグの一覧画面から、複数のタグの「同意設定」を変更可能になる
  • タグの一覧画面の右上へ同意概要アイコンが追加され、同意設定状況のリストを確認可能になる

要は複数のタグへ一括で同意設定できるようになるオプションです。
逆にこれをONにしないと、設定したいタグを都度開いて個別に設定しなければなりません。そのため、必須ではありませんが、同意ツールを利用する場合はONにしたいものです。

タグ一覧画面
タグ名左をクリックして複数タグを選択した後、右側の「:」プルダウンメニューから同意設定が可能に。

また「同意概要」アイコンから、「同意設定済み」のタグ一覧、などをリストで見ることができるようになります。これにより、タグの同意設定漏れがないか、の確認がしやすくなるわけですね。
同意概要のリスト画面からも、タグ一覧同様に複数タグを一括で同意設定できます。

同意概要画面
未設定と設定済みで分けて確認可能な同意概要。一括設定もできます。

新規追加された2トリガー

同意ツールは他のあらゆるタグよりも早く処理させなければならないため、それを実現するため、新たに2つのトリガーが追加されました。
ページ表示時に動作するページビューグループとして、既存のページビュートリガーよりもさらに早く発火します。

トリガー種別
「同意の初期化」と「初期化」の2トリガーが新規実装。
同意の初期化
  • 同意ツールタグ向け
  • 他のあらゆるトリガー種別よりも先に発火します。
  • 「Content Initialization – All Pages」トリガーがデフォルト実装。
  • eventgtm.init_consent
初期化
  • 他タグよりも先んじて処理が必要なタグ向け
    例えば他タグの動作に必要な準備をするタグであったり、順番指定したいけど「タグの順序付け」オプションで設定するにはトリガー条件などが複雑なタグであったり、などです。
  • 「同意の初期化」トリガーの後、「ページビュー」トリガーの前に発火します。
  • 「Initialization – All Pages」トリガーがデフォルト実装。
  • eventgtm.init

今回追加された2トリガーはいずれも「同意ツールタグ」用および「他タグよりも先の処理が必須なタグ」用と、用途が明確になったものです。(詳細は公式ヘルプも参照ください)
ですので、通常の計測タグなどは今まで通り「ページビュー」トリガーなどが推奨されます。特に今までと運用を変える必要はありません。

ページビューグループ各トリガーの発火順
トリガーの発火順は「同意の初期化」→「初期化」→「ページビュー」→「DOM Ready」→「ウィンドウの読み込み」

なお通常の計測タグなどを「同意の初期化」や「初期化」トリガーで発火させることもできます。しかし、推奨されていないので止めておきましょう
実際に動かしてみた限りでは、UAタグもGA4タグも問題なく動作するように見受けられました。ただ「同意の初期化」と「初期化」トリガーは、同意ツールが他タグよりも先に動く必要があるために新設されたものです。そのため通常の非同期ではなく同期的にタグが処理されている可能性も考えられます。つまり、タグが動くからといって通常タグをこれらのトリガーで発火させることはページ表示速度などへの影響が出る、といった懸念があるわけです。「非推奨だけどできるからやる」のではなく、あくまで推奨された用途での活用に留めておくべきでしょう。

実際の運用方法

GTM単体ではユーザーへ同意を求める、および同意状況を変更する機能はありません
そのため大前提として、GTMの同意設定(のAPI)に対応した同意ツールを利用している必要があります。

そうすると同意ツールがユーザーへ対して同意を求める何らかの処理を行い、ユーザーがそれに応じて自身の同意状況を設定できるようになり、タグへ設定した「同意設定」が実際に機能しはじめます。
同意ツールを利用しない場合、GTMの同意設定は(設定をしたとしても)動作しませんので、要注意です。

  • コミュニティテンプレートギャラリーから同意ツールタグをインポートし、「Consent Initialization – All Pages」トリガーで発火
  • 各タグへ「同意設定」を設定
  • ほか、各同意ツールが推奨している設定があればそれに準じる(同意ツールの公式ドキュメントを参照)

先頭2つは単純な設定ですが、ポイントになってくるのは3つ目の「利用同意ツールの推奨設定」がある場合。
これは同意ツールによって完全に異なってきますので、ツールの公式ヘルプなどを参照して設定しましょう。詳細は後述します。

なお各タグへ「同意設定」をする際の注意点ですが、「組み込み同意チェック」にすでに表示されている同意タイプを「追加同意」へ追加するのはNGです。
「追加同意」で設定された同意タイプは1つでも不許可があると、タグの発火自体が行われなくなります。逆に「組み込み同意チェック」に表示されている同意タイプは状況に応じて「タグの処理内で」振り分けが行われますが、同じものが「追加同意」で指定されていると、不許可だった場合にタグが発火されず、結果として処理分岐ができなくなってしまいます。そのため、「組み込み同意チェック」と同じ同意タイプを「追加同意」には設定してはいけません。

同意時にタグを発火させたい場合

「同意」の厄介な点は「ユーザーが同意する前はタグが発火されない(=計測されない)」ことです。

例えば、ページビュートリガーに紐づけたタグの場合。
ユーザーが同意した後であればタグ発火されますが、基本的にユーザーが同意するのはページビュートリガーが反応するタイミングよりも後です。そのため、2ページ目以降などなら問題なく計測できても、ユーザーが同意をする1ページ目ではタグが発火せず、計測がされない、という状況が発生しえます

これを回避するには、そのタグに「組み込み同意チェック」があるかどうか、がポイントとなります。
「組み込み同意チェック」が表示されているタグであれば、特に意識する必要はありません。タグ内の処理として「ユーザーが同意したら処理を再開する」といったことが可能なため、基本的にタグの動作に任せるだけでOKです。

組み込み同意チェックのあるタグ
Googleアナリティクス、Google広告、Floodlightなどはad_storageとanalytics_storageの許可状況によってタグの動作が変わります。詳細は公式ヘルプの「同意モードの動作」を確認ください。

問題になってくるのは「組み込み同意チェック」がないタグです。
GTMは「ユーザーの同意状況が変更された場合」を取得することはできませんので、別途、利用している同意ツールの公式ヘルプなどから「ユーザーが同意した際にGTMを呼び出す方法」などの記載があるか確認しましょう。もしそういった手段があるのであれば(おそらくカスタムイベントトリガーとして)それをトリガーとして登録し、「組み込み同意チェック」が無く「追加同意」を設定した各タグへ、配信トリガーとして追加しなければなりません。
これが前述の「おそらく各同意ツールが推奨するかもしれない設定」です。

【開発者向け】カスタムテンプレートへ追加された新API

ここからはカスタムテンプレートの話となりますので、同意ツールタグまたはCookieを使用する各タグのカスタムテンプレート開発者向けの案内です。
とは言え詳しく触れてしまうと主旨と離れてしまいますので、簡単な紹介に留めます。

同意ツールおよびCookieを扱うタグのカスタムテンプレート(コミュニティテンプレート)向けに、以下の4APIが新たに実装されました。
これらを使うことで、同意ツールタグをカスタム(コミュニティ)タグテンプレート化できるようになったほか、Cookieを扱う(=ユーザーの同意確認が必要な)タグのカスタム(コミュニティ)タグテンプレート内で「ユーザーの同意状況」に応じた処理の条件分岐と、同意後の処理追加が可能になります。

addConsentListener
  • Cookieを扱う一般タグ向け。
  • 指定した同意タイプが変化した際、指定の処理が行えるようになるAPI。
    要は「ユーザーが同意したら処理を再開」みたいなことが可能。
isConsentGranted
  • Cookieを扱う一般タグ向け。
  • 指定した同意タイプの許可(true)/不許可(false)かを判定するためのAPI。
    if文内で使用。
setDefaultConsentState
  • 同意ツールタグ向け。
  • デフォルトの同意状態を設定するAPI。
updateConsentState
  • 同意ツールタグ向け。
  • 指定した同意タイプの状態を変更するAPI。

これらのAPIでは新たなaccess_consent権限が追加され、同意タイプごとにread/writeで権限設定が必要です。同意タイプの指定には「*」は使えず、個別に指定しなければならないのでご注意ください。
また実際のタグの「組み込み同意チェック」には、権限で登録した同意タイプが掲載されるようになります。

各APIの詳細についてはAPI公式ドキュメントを参照ください。
2021年6月1日時点ではまだ日本語ページには掲載されていないので、確認時点で上記APIが見つからない場合はEnglishへ切り替えて探してみてください。

「GTMが同意モードに対応」と言われるとかなりそわそわしてしまいますが、実際のところは「GTMが同意ツールに対応」がより正しいですね。
実は「同意状況を変更するタグ」や「同意状況を取得できる変数」は追加されてなかったり、「同意状況が変化した際に反応するトリガー」もなかったりします。そのため、利用にはまず今回のGTM同意モードに対応した同意ツールを導入していることが前提となります。それまではいくらタグへ「同意設定」をしたとしても、特に意味はありません。

Cookie利用については世界的にも制限などが広がっていく風潮の中、近年日本国内でもちらほらと同意ツールは見かけるようになってきました。国内でも個人情報保護やCookie利用についての法令整備が進みつつありますので、数年もすれば同意ツールが一般的に導入される状況になっているかもしれません。
今はまだ利用されていなくても、今後サイトへ導入ツールを実装するよ、というタイミングになったら改めて本記事が力になれれば幸いです。