Claude Media
ClaudeでConsent Modeの実装を棚卸しする手順 — 4パラメータの照合

ClaudeでConsent Modeの実装を棚卸しする手順 — 4パラメータの照合

GTMのコンテナやgtagのソースをClaudeに渡し、Consent Modeの4パラメータとdefault/updateの順序をチェックリストで照合させる手順と、静的な点検の限界をまとめます。

Cookie同意バナーを置いても、Consent Modeが正しく動いているとは限りません。defaultが遅れていたり、updateが片方のパラメータにしか無かったりする実装は珍しくありません。この記事では、gtag.jsのソースやGTM(Google Tag Manager)のコンテナ定義をClaudeに渡し、Googleの要件をチェックリストにして照合させる手順を書きます。あわせて、Claudeだけでは確認できない範囲も示します。

Consent Modeとは、ユーザーの同意状態に応じてGoogleタグの挙動(Cookieの書き込みや計測データの送信)を切り替える仕組みです。Claudeに向くのは、ソースや設定を読んで「要件の何が欠けているか」を洗い出す静的な点検です。

任せられる作業は次の3つです。

  • ページのソースから gtag('consent', 'default', ...) の有無と順序を読む
  • defaultとupdateで、指定しているパラメータが揃っているかを突き合わせる
  • GTMのコンテナJSONから、同意関連のテンプレートとトリガーを拾う

逆に、ブラウザで実際にタグが発火したかどうかは、ソースを読んだだけでは分かりません。この点は後半の「静的な点検で分からないこと」で扱います。

照合に使うチェックリスト

Claudeに「Consent Modeを点検して」とだけ頼むと、観点が毎回ぶれます。先にGoogleのガイドから観点を固定し、それを渡すのが安定します。以下は同ガイドの記述をもとにした11項目です。

観点確認すること出典ページ
1. defaultの位置確認することgtag('consent','default',...) が、config や event など計測を送るコマンドより前にある出典ページ設定ガイド
2. 4パラメータ確認することad_storage / ad_user_data / ad_personalization / analytics_storage が揃っている出典ページ設定ガイド(v2)
3. 全ページ確認することdefaultが全ページで呼ばれる出典ページ設定ガイド
4. updateの網羅確認することdefaultを置いた各パラメータにupdateの経路があり、grantedにもdeniedにも変えられる出典ページトラブルシュート
5. 更新の即時性確認することバナー操作の直後にupdateを呼ぶ出典ページ設定ガイド
6. 選択の保持確認することConsent Modeは選択を保存しないので、CookieやlocalStorageに保存し次ページでupdateする出典ページ設定ガイド
7. 非同期CMP確認することバナーが遅れて読み込まれるなら wait_for_update を指定する出典ページ設定ガイド
8. GTMの作り確認すること同意はテンプレートタグで扱い、Consent Initialization - All Pagesで発火させる出典ページトラブルシュート
9. リージョン確認すること地域別defaultはISO 3166-2で指定し、各パラメータに漏れがない出典ページ設定ガイド
10. 旧タグ確認することga.js・analytics.js・conversion.jsが残っていない出典ページ設定ガイド
11. タグのブロック確認すること同意が出るまでGoogleタグの読み込み自体を止めていない出典ページトラブルシュート

Consent Mode v2の必須パラメータは、従来の ad_storage と analytics_storage に、2023年11月の更新で加わった ad_user_data と ad_personalization を足した4つです。

手順1: 渡す素材を用意する

素材は3種類あります。どれも、渡す前に個人情報や社内IDが含まれないか確認してください。GTMのエクスポートには測定IDやコンテナIDが入りますが、訪問者の個人データは通常含まれません。Claudeに渡してよい情報の一次資料の見方は、Claudeに個人情報を入力する前に見るべき一次資料で整理しています。

  1. ページのソース(head内のスクリプト全体。CMPのタグも含める)
  2. GTMのコンテナエクスポート(管理画面の「コンテナのエクスポート」で出るJSON)
  3. Tag AssistantのConsentタブのスクリーンショット(実測との突き合わせ用)

Claude Codeなら、画像はドラッグ&ドロップ、Ctrl+V での貼り付け、ファイルパスの指定のいずれかで渡せます。ソースとJSONはプロジェクトのディレクトリに置いて、パスで指定します。

手順2: チェックリストを指定してClaudeに照合させる

プロンプトは、指示・チェックリスト・素材をタグで分けると取り違えが減ります(書き方はXMLタグでの構造化を参照)。次のような形です。

<instructions>
下の <checklist> の各項目について、<source> と <gtm_export> を根拠に
「OK / NG / 判定不能」で答えてください。
NG と判定不能には、該当するコードの行か JSON のキーを引用してください。
default の値が正しいかは、こちらの方針次第なので判定しないでください。
</instructions>
 
<checklist>
1. gtag('consent','default') が config / event より前にある
2. ad_storage, ad_user_data, ad_personalization, analytics_storage の4つが default にある
3. default の各パラメータに update の経路があり、granted と denied の両方に変えられる
4. GTM では、同意をテンプレートタグで扱い、Consent Initialization で発火している
5. カスタム HTML タグで gtag('consent', ...) を呼んでいない
</checklist>
 
<source>
(head のスクリプトを貼る)
</source>
 
<gtm_export>
(コンテナ JSON を貼る、またはパスを指定)
</gtm_export>

「判定不能」を選択肢に入れるのがコツです。ソースに現れない事柄を推測でOKと答えさせないためです。回答が返ったら、引用された行が本当にその内容か、自分の目で照合してください。

手順3: 典型的な不備を見分ける

次の例は、チェックリストに照らすと項目1と2に当たるコードです。

<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'TAG_ID');
  gtag('consent', 'default', {
    'ad_storage': 'denied',
    'analytics_storage': 'denied'
  });
</script>

問題は2点です。defaultが config の後にあり、順序が違うとdefaultは効かない、とGoogleが明記している並びです。さらに ad_user_data と ad_personalization が無いので、v2の4パラメータが揃っていません。トラブルシュートのページにも、defaultを遅く設定した例として「広告タグがCookieを読み書きした後にdefaultがdeniedになる」流れが挙げられています。

GTM側でよく見落とされるのは、カスタムHTMLタグから gtag('consent', ...) を呼ぶ実装です。GTMではカスタムテンプレートのAPIを使うテンプレートタグで同意状態を設定し、カスタムHTMLタグは使わないよう注意されています。自作テンプレートのupdateも、gtag('consent','update',...) ではなく updateConsentState を使う指示です。gtagのコマンドが他の保留中のメッセージの後ろにキューされ、次のイベントの開始までに処理されない場合があるためです。

手順4: 更新のタイミングと遷移まわりを確認する

updateの抜けは、ソースだけでは見えにくい不備です。Claudeに次の2点を追加で問うと拾えます。

  • 「同意ボタン」と「同意撤回ボタン」のそれぞれで、4パラメータすべてにupdateを送っているか
  • updateを呼んだ直後にページ遷移やリロードが起きる作りになっていないか

ガイドの「よくある問題」には、遷移ページで同意を更新しないと、Google Analyticsで同意済みセッションの多くに session_start が欠けることがある、と書かれています。updateをページのアンロード時に呼ぶと、ブラウザーが通信を中断して計測が欠ける可能性がある点も同じ節にあります。

また、非同期に読み込むCMPでは wait_for_update の指定も見ます。例は 'wait_for_update': 500(ミリ秒)で、CMPがupdateを呼ぶまでタグの発火を待たせます。

手順5: リージョン別の設定を洗い出す

欧州向けだけ厳しくするような実装では、リージョンごとのdefaultが複数書かれます。地域はISO 3166-2で指定し、地域を指定しないdefaultは「他のどの地域指定にも当たらない訪問者」に効きます。US と US-CA のように包含関係がある場合は、より具体的な指定が優先されます。

Claudeに頼むのは、地域ごとのdefaultを一覧表にすることです。トラブルシュートには、地域指定が片方のパラメータにしか無い例があり、地域を切り替えて全パラメータの挙動が方針どおりかを確かめるよう求めています。表にすると、指定の抜けが行と列の空白として見えます。

オプション機能の url_passthrough と ads_data_redaction も、設定の有無と値を拾わせます。ただし ads_data_redaction は、ad_storage がgrantedのとき、または gtag('consent') を使っていないときは効果がありません。単独で「設定してあるから安心」とは言えないので、この前提もプロンプトに含めておきます。

同意が出るまでGoogleタグを止めていないか

チェックリストの11番目は、Consent Modeの外側にある実装です。同意が出るまでGoogleタグの読み込みを止める構成だと、コンバージョンのモデリングの精度が下がり、Googleアナリティクスの行動モデリングも使えなくなる、とトラブルシュートのページは述べています。ページのソースに「同意後にgtag.jsを動的に挿入する」処理があれば、Claudeに該当箇所を引用させてください。

止めるか、読み込んだうえでdefaultをdeniedにするかは、組織の方針とツールの設計で決まります。点検の結果は「止めている」という事実の報告にとどめ、方針の是非は人が判断します。

静的な点検で分からないこと

ここまでの照合は、あくまでソースと設定の読み取りです。次の点はClaudeに渡した素材からは判定できません。

  • 実際のページ読み込みで、defaultがどのタグより先に処理されたか
  • 各タグが同意状態に応じて発火したか、ブロックされたか
  • CMPが実運用でupdateを送ったか
  • 地域の切り替えが実ブラウザーで反映されたか

これらはGoogleのTag Assistantで確かめます。手順は、サイトのURLをTag Assistantに入力し、バナーで全パラメータを承認したあと、Summaryの最初のConsentイベントでdefaultを、最新のConsentイベントでupdateを、API Callの欄から確認します。Tagsタブでは、各タグが同意設定どおりに動いたかも見られます。「Could not connect」と出る場合は、GoogleタグやGTMコンテナのブロックが疑われます。

Tag AssistantのConsentタブのスクリーンショットをClaudeに渡せば、手順2のチェックリストとの照合を続けられます。ただし画像の読み取りは補助として扱い、defaultの欄に4パラメータが揃っているかは自分の目でも確かめてください。

棚卸しをリポジトリの作業にする(Claude Code)

サイトのソースがリポジトリにあるなら、Claude Codeに読ませるほうが漏れが減ります。まずgrepで対象ファイルを絞ります。

grep -rln "googletagmanager.com" src/ public/
grep -rn "'consent'" src/ public/
grep -rn "wait_for_update\|url_passthrough\|ads_data_redaction" src/

チェックリストは、リポジトリに置いておくと毎回貼らずに済みます。たとえば次のようにCLAUDE.mdへ規約として書きます(記法の考え方はCLAUDE.mdに規約を教えると同じです)。

## Consent Mode の点検
- 点検の観点は docs/consent-checklist.md に置く(Google 公式ガイドの要件)
- default の値の妥当性は判定しない。方針との食い違いだけ指摘する
- 判定は「OK / NG / 判定不能」。NG にはファイルと行番号を付ける
- 実行時の挙動(タグの発火)は Tag Assistant の結果が必要と明記する

Claude Codeの出力を、そのまま監査結果として提出することは避けてください。指摘された行をエディターで開いて実物と照らす作業が、この手順の最後の1歩です。

まとめ

Claudeは、Consent Modeの実装をチェックリストで機械的に照合する作業に向いています。defaultの順序、4パラメータの網羅、updateの経路、GTMの作りの4点は、ソースとJSONを読めば判定できます。一方で、タグが実際に同意どおり動いたかはTag Assistantの実測が要ります。静的な点検で候補を絞り、実測で確定する二段の流れにすると、見落としと手戻りの両方を減らせます。

この記事を共有:XはてブLinkedIn