同意が得られるまでスクリプトをブロックする方法:3つの手法を比較
問題:早すぎるタグの発火
同意バナーは、その背後のタグがユーザーの選択を尊重して初めて機能します。最もよくある失敗は単純です。バナーは表示されているのに、誰かがクリックする前に、アナリティクスや広告のスクリプトがすでに読み込まれ、識別子を設定してしまっているのです。これを解消するには、同意が得られるまでスクリプトをブロックする必要があります。実用的な方法は3つあります。
手法1:スクリプトのタイプを書き換える
ブラウザは、scriptタグのtypeがJavaScriptのタイプである場合にのみ実行します。typeをtext/plainに変更すると、ブラウザはそのスクリプトを無視します。そのうえで、そのスクリプトがどの同意カテゴリーに属するかを示すデータ属性を追加します。
type="text/javascript"をtype="text/plain"に変更します。data-category="analytics"のような属性を追加します。- ユーザーがそのカテゴリーに同意すると、小さなローダーがtypeを元に戻し、スクリプトを挿入して実行させます。
向いているケース:テンプレート内の、数個の既知のインラインまたは外部スクリプト。注意点:他のスクリプトによって挿入されるスクリプトは、テンプレートを通らないため書き換えられません。
手法2:タグマネージャーでタグを制御する
タグがGoogle Tag Managerなどのツールにある場合は、コンテナをページに残したまま、同意に対応したトリガーで発火を制御できます。各タグに同意の要件を設定し、対応する同意状態が許可されたときだけタグマネージャーが発火させます。大きな利点は一元管理です。マーケティング担当者がテンプレートに触れずにタグを追加でき、ルールもタグとともに引き継がれます。
向いているケース:マーケティングタグが多いサイト。注意点:コンテナの外にハードコードされたスクリプトや、独自にさらにスクリプトを読み込むカスタムHTMLタグ。
手法3:同意を受けて動的にスクリプトを読み込む
この方法では、scriptタグをページから完全に取り除き、同意イベントの後にだけそれらを挿入する関数を書きます。シングルページアプリケーションや、完全な制御を求める開発者にとって、最もクリーンな選択肢です。
- CMPからの同意コールバックを待ち受けます。
- どのカテゴリーが許可されたかを確認します。
- script要素を作成し、srcを設定して、ドキュメントに追加します。
- スクリプトのloadハンドラーで、初期化コードを実行します。
向いているケース:ビルド工程のある最新のアプリケーション。注意点:再訪問ユーザーの処理を忘れること。保存された選択は、新たなクリックなしに、ページ読み込み時に読み込みを開始させる必要があります。
同意撤回への対応
同意前のブロックは仕事の半分にすぎません。ユーザーが後で同意を撤回した場合は、ツールの呼び出しを止め、識別子の読み書きを続けないようにしてください。ページからスクリプトを削除しても、すでにメモリ上にあるコードは消えないため、撤回後にリロードするのが最も簡単で確実な方法であることが多いです。
どれを選ぶべきか
- スクリプトが少なく、サーバーサイドでレンダリングするテンプレート:手法1。
- マーケティングタグが多く、開発者以外が編集する:手法2。
- シングルページアプリや独自のフロントエンド:手法3。
- 混在した環境では、2つを組み合わせることも多くあります。どのタグも、どの手法にも含まれない状態にならないようにしてください。
テスト方法
- キャッシュを消去したプライベートウィンドウを開きます。
- ページを読み込む前に、ブラウザの開発者ツールのNetworkタブとApplicationタブを開きます。
- ページを読み込み、バナーには触れません。アナリティクスや広告のリクエストが送信されず、関連するCookieやストレージ項目も現れないことを確認します。
- 1つのカテゴリーだけを承認し、対応するスクリプトだけが読み込まれることを確認します。
- すべてを拒否してリロードし、最初の確認を繰り返します。
- 同意を撤回し、上で説明した動作を確認します。
FlexyConsentの位置づけ
FlexyConsentはIAB TCF 2.4とGoogle Consent Mode v2に対応し、Google認定のCMP(CMP ID 317)です。どのブロック手法を選んでも、バナーの役割は、ユーザーが何を選んだかを示す明確なシグナルをコードに渡すことです。すべてのスクリプトがそれに従うようにするのは、あなたの役割です。
重要ポイント
- ユーザーが選択する前にスクリプトが読み込まれると、バナーの意味がなくなります。
- タイプの書き換え、タグマネージャーのトリガー、動的読み込みは、それぞれ異なる種類のサイトに適しています。
- 他のスクリプトによって挿入されるスクリプトは、最もよくある漏れの原因です。
- 初回訪問だけでなく、再訪問ユーザーと同意撤回にも対応してください。
- バナーに触れる前に、開発者ツールを開いたクリーンなプライベートウィンドウでテストしてください。