企業サイトの外部スクリプト棚卸し|計測タグ・チャット・埋め込みを安全に管理する方法
企業サイトには、アクセス解析や広告計測だけでなく、チャット、動画、予約、フォーム、A/Bテスト、ヒートマップ、同意管理、外部ライブラリなど、多くの外部コードが組み込まれます。導入時には目的が明確でも、担当者の異動、キャンペーン終了、サイト改修、制作会社の交代を重ねるうちに、「誰が必要としているか」「どのデータを送っているか」「止めると何が壊れるか」が分からないスクリプトが残りやすくなります。
棚卸しで重要なのは、HTMLにある<script>要素を数えることではありません。タグマネージャー、CMSプラグイン、同意管理ツール、iframe埋め込み、アプリ側の設定、CDNから読み込むライブラリまで調べ、ブラウザが実際に接続した外部ドメインと照合します。そのうえで、事業目的、所有者、送信データ、発火条件、権限、障害影響、停止・削除方法を一つの台帳へまとめます。
結論として、外部スクリプトの棚卸しは「実装元」「通信先」「事業責任」の3方向から同じスクリプトを照合する作業です。コードと管理画面から候補を集め、代表ページのネットワーク通信で実在を確認し、目的・所有者・送信データ・同意・重要導線への影響・停止方法を記録します。不要なものはテスト環境または限定範囲で止め、問い合わせ、資料取得、計測、ログインなどを確認してから削除します。外部スクリプトの棚卸しは「一覧を作った時」ではなく、「誰が・何のために・どのデータを送り・いつ止められるか」を説明できた時に完了します。
本記事のポイント
- 外部スクリプトはHTMLだけでなく、タグマネージャー、CMS、同意管理ツール、埋め込みを横断して発見し、通信先と実装元を照合する。
- 管理台帳には所有者と目的だけでなく、送信データ、発火条件、権限、重要導線への影響、停止・削除・復旧方法まで残す。
- 継続可否は利用中かどうかではなく、必要性を説明でき、最小権限で変更でき、問題時に重要導線を守って止められるかで決める。
外部スクリプトは便利な機能とサイト外の変更リスクを同時に持つ
外部スクリプトとは、サイト運営者以外の提供元が配信・管理するJavaScriptや、それを呼び出すタグを指します。動画や地図のiframe、広告タグ、アクセス解析、チャット、A/Bテスト、ソーシャルボタン、決済・予約フォーム、CDN上のライブラリも、広い意味では同じ棚卸し対象です。自社ドメインから配信していても、更新責任やコードの供給元が外部なら、台帳上は外部依存として扱います。
web.devは、外部スクリプトが表示速度を下げるだけでなく、プライバシーやセキュリティ上の問題、予期しない挙動を生む可能性があると説明しています。OWASPは、第三者JavaScriptの主なリスクを、変更を自社で制御できないこと、利用者のブラウザで任意コードが実行され得ること、機微な情報が第三者へ渡ることの3点に整理しています。
| 種類 | 例 | 見落としやすい点 | 最初に確認すること |
|---|---|---|---|
| 計測・広告 | アクセス解析、広告コンバージョン、ヒートマップ | タグマネージャーから追加され、ソースコードだけでは見えない | 発火条件、送信イベント、広告識別子、同意区分 |
| 接客・CV | チャット、予約、問い合わせ、資料請求 | 停止すると重要導線そのものが消える | 代替導線、営業時間外の挙動、障害時の連絡先 |
| 埋め込み | 動画、地図、SNS投稿、レビュー | iframeの先で別の通信やCookieが発生する | 読み込み開始条件、外部ドメイン、遅延読み込み |
| 機能・ライブラリ | UI部品、フォント、CDN、認証SDK | 提供元の更新で挙動が変わり、全ページへ影響する | 固定バージョン、完全性検証、代替・自己ホスト可否 |
| 運用基盤 | タグ管理、同意管理、監視、エラー収集 | 一つの管理画面から多数の外部コードを変更できる | 管理者、公開権限、版、変更履歴、緊急停止手順 |
タグマネージャーは変更を速くしますが、コンテナ一つから複数ベンダーのコードを配信できるため、HTML上のタグ数と実際の外部依存数が一致しません。サイトの更新責任と承認期限を整理する方法はWebサイトのコンテンツガバナンスと共通しますが、外部スクリプトではさらに通信先、送信データ、公開権限、緊急停止を管理する必要があります。
コード・管理画面・ブラウザ通信の3方向から発見する
棚卸しを一つの調査方法だけで終えると、必ず漏れが出ます。コード検索ではタグ管理画面から動的に配信されるものを見落とし、タグ管理画面だけではCMSプラグインや直書きの埋め込みを見落とします。ブラウザのNetworkパネルだけでは、特定の同意状態、ログイン状態、ページ、スクロール、クリックで初めて発火するタグを拾い切れません。
| 調査面 | 見る場所 | 見つかるもの | 証拠として残すもの |
|---|---|---|---|
| ソースコード | HTML、テンプレート、JavaScript、環境変数、ビルド設定 | 直書きタグ、CDN、SDK、初期化コード、外部ホスト | ファイル、行、公開版、導入commitまたは変更票 |
| 管理画面 | タグマネージャー、CMS、プラグイン、同意管理、サイト設定 | 動的タグ、トリガー、変数、カスタムHTML、権限 | コンテナ・設定の版、所有者、最終公開者、エクスポート |
| ブラウザ | Network、Performance、Application、Console | 実際の通信先、Cookie、読み込み量、エラー、発火時刻 | 対象URL、端末条件、同意状態、操作、通信ログ |
| 契約・業務 | 購買台帳、請求、キャンペーン、制作会社、部門ヒアリング | 事業目的、契約終了、担当者、利用実績、解約条件 | 責任部門、契約期限、ベンダー窓口、停止承認者 |
ブラウザ確認では、トップページだけでなく、問い合わせ、資料取得、ログイン、予約、決済、動画、採用など代表導線を選びます。未同意・同意済み、初回・再訪、PC・モバイル、ログイン前後、広告流入パラメータあり・なしを必要に応じて分け、操作前と操作後の通信先を比較します。問い合わせフォームの外部依存は、問い合わせフォームの通知漏れを防ぐ監視設計と合わせて、送信後の通知・自動返信まで確認してください。
通信先ドメインを見つけても、すぐに正規タグと判定してはいけません。同じCDNやタグ管理コンテナから複数の機能が配信されることがあり、契約が終わったタグも通信だけ残る場合があります。実装箇所、管理画面の設定、契約、ブラウザ通信を同じ台帳IDへ結び、所有者が説明できるかを確認します。未知の通信を調べる際は、CSP Report-Onlyで外部通信を分類する手順も補助になります。
管理台帳は目的・データ・権限・停止条件まで持つ
URLとツール名だけの一覧では、更新や障害の判断に使えません。最低限、「何のために」「誰の責任で」「どこへ何を送り」「どの条件で動き」「止めるとどこへ影響し」「どう戻せるか」を答えられるようにします。項目は一度に増やしすぎず、運用判断に使う列を必須にします。
| 管理項目 | 記録内容 | 判断に使う場面 |
|---|---|---|
| 台帳ID・名称 | タグ、埋め込み、SDKを一意に識別する名称 | 別名や重複タグをまとめる |
| 事業目的・KPI | 問い合わせ、広告計測、接客、動画表示など | 目的が消えたタグを廃止候補にする |
| 所有者・承認者 | 業務責任者、技術責任者、公開承認者 | 担当不明のまま変更・継続しない |
| 実装元・対象範囲 | コード、コンテナ、CMS、対象ページ、環境 | 変更場所と影響範囲を特定する |
| 提供元・通信先 | ベンダー、契約、読み込み元、送信先ドメイン | 障害・契約終了・ドメイン変更を追う |
| 送信データ | URL、イベント、フォーム値、識別子、Cookieなど | 必要最小限か、想定外の値がないか確認する |
| 発火・同意条件 | ページ、イベント、同意状態、地域、ログイン状態 | 利用者の選択と実際の通信を照合する |
| 性能・重要度 | 読み込み量、実行時間、重要導線への依存 | 遅延読込、代替、除去の優先順位を決める |
| 権限・変更履歴 | 閲覧、編集、承認、公開、管理者、現行版 | 最小権限と追跡可能な公開を維持する |
| 停止・削除・復旧 | 無効化箇所、確認項目、ロールバック版、解約手順 | 障害や不明通信を安全に止める |
| 最終確認・次回期限 | 確認日、確認者、証拠、次回棚卸し日 | 古い確認済み情報を放置しない |
Google Tag Managerでは、コンテナごとにRead、Edit、Approve、Publishの権限を分けられます。Googleは、管理者が一人だけになることを避け、組織内で管理されるアカウントを使うよう案内しています。公開権限を全編集者へ与えず、業務部門が目的を承認し、技術担当が通信と影響を確認し、限られた担当者が公開する形にすると、追加の速さと統制を両立しやすくなります。
台帳の状態は「利用中」だけにせず、調査中、条件付き継続、置換予定、停止検証中、削除済みまで持たせます。削除済みでも、削除日、最後の版、契約解約、データ削除依頼、再導入禁止の理由を一定期間残すと、別の担当者が同じタグを再追加する事故を防げます。
| 判定 | 条件 | 次の対応 |
|---|---|---|
| 継続 | 目的・所有者・データ・権限・停止方法が明確で、効果と影響を確認できる | 次回確認日と監視条件を設定する |
| 条件付き継続 | 必要だが、発火範囲、同意、性能、権限に改善余地がある | 改善期限と承認者を決め、期限後に再判定する |
| 置換 | 目的は必要だが、同等機能の重複、性能、保守、データ条件に問題がある | 新旧併存期間を短くし、計測差分と撤去日を決める |
| 停止・削除 | 目的終了、所有者不明、契約終了、利用実績なし、危険を許容できない | 限定停止、重要導線確認、削除、契約・データ処理を閉じる |
| 緊急隔離 | 未知の送信先、改ざん疑い、情報送信異常、全体障害への波及 | 公開変更を止め、対象タグを隔離し、ログと版を保全する |
外部スクリプトを6ステップで棚卸しする
最初から全ページを完全に調べようとすると、通信の重複と例外に埋もれます。重要導線と共通テンプレートから始め、台帳の作り方を固めてから対象を広げます。
- 対象と責任者を決める:対象ドメイン、環境、代表ページ、調査期間、業務責任者、技術責任者、停止判断者を決める。
- 候補を集める:ソースコード、タグマネージャー、CMS、プラグイン、同意管理、契約台帳から外部タグ・埋め込み・SDKを列挙する。
- 実通信と照合する:代表導線を複数の同意・端末・ログイン条件で操作し、通信先、Cookie、発火時刻、エラー、性能影響を記録する。
- 目的とリスクを分類する:所有者、事業目的、送信データ、発火条件、重要導線への依存、権限、契約、停止方法を確認し、継続・改善・置換・削除を判定する。
- 限定範囲で変更する:現行版を保存し、テスト環境、プレビュー、対象ページ限定などで変更して、表示、フォーム、計測、同意、エラーを確認してから公開する。
- 監視と廃止を閉じる:公開後の通信・エラー・CVを監視し、次回確認日を設定する。削除時はコード、管理画面、契約、権限、保存データまで閉じる。
検証では「ページが表示された」だけで終えず、外部スクリプトが支える成果と失敗時の影響を確認します。たとえば広告タグなら主要イベントと重複送信、チャットなら起動・終了・個人情報入力、動画なら同意前の通信と遅延読み込み、フォームなら送信・通知・自動返信・CRM連携を見ます。LP公開前の計測とフォーム確認は、BtoB LP制作の要件一覧と合わせると抜けを減らせます。
不要・危険なスクリプトは版を残して限定停止する
削除候補を見つけても、いきなりコードを消すと、問い合わせや広告計測まで止める可能性があります。まず現行のソース、タグ管理コンテナ、設定、通信ログを保存し、何を戻せば復旧できるかを明確にします。Google Tag Managerは公開のたびにコンテナ版を記録し、過去版を再公開できます。版名と説明に台帳ID、変更理由、対象、確認者を入れると、緊急時に戻す版を選びやすくなります。
| 状況 | 最初に行うこと | 確認する重要導線 | 完了条件 |
|---|---|---|---|
| 目的終了・利用なし | 現行版を保存し、対象タグだけを限定停止 | 表示、フォーム、計測、ログイン、予約 | 影響なしを確認し、コード・設定・契約を削除 |
| 性能劣化 | 対象通信をブロックして複数回比較 | LCP、操作応答、レイアウト、CV | 遅延読込・置換・削除の効果を確認 |
| 未知の送信先 | 変更公開を止め、タグ・親コンテナ・導入経路を隔離 | 個人情報入力ページ、認証、決済 | 送信内容と原因を特定し、再発火を防止 |
| ベンダー障害 | タイムアウトや非同期読込を確認し、代替導線を出す | 問い合わせ、予約、動画、チャット | 本体サイトが外部障害から独立して利用可能 |
| 契約終了・担当退職 | 管理権限と契約窓口を組織側へ戻す | 管理画面、API、Webhook、保存データ | 権限削除、データ処理、請求、再導入条件まで完了 |
静的なCDNファイルにはSubresource Integrity(SRI)を使い、期待するハッシュと一致しないファイルの実行をブラウザに拒否させられる場合があります。ただし、提供元が同じURLの内容を頻繁に更新するスクリプトでは、ハッシュ更新を追えず利用しにくいことがあります。SRIだけでなく、HTTPS、固定バージョン、自己ホスト、権限制御、CSP、監視、代替・停止手順を組み合わせてください。
同意管理も「バナーを表示した」だけでは完了しません。GoogleのConsent Mode資料は、利用者が選ぶ前の既定状態と、選択後の更新状態をタグへ伝える流れを示しています。自社では、各タグがどの同意区分で、どのイベントより前または後に発火するかを台帳へ記録し、未同意と同意撤回の両方で実通信を確認します。法的な同意要否は、対象地域、データ、利用目的、契約に応じて専門家へ確認してください。
外部スクリプト管理の一次情報を確認する
提供サービスの仕様、ブラウザ実装、タグ管理機能は変わるため、棚卸しの基準は公式資料で定期的に確認します。
- OWASP Cheat Sheet Series: Third Party JavaScript Management:第三者JavaScriptの主なリスク、タグ管理経由の配信、データ層、完全性検証などを確認できます。
- web.dev: Load Third-Party JavaScript:外部スクリプトの例、性能・セキュリティ上の影響、Network・Performanceパネルを使った発見と評価を確認できます。
- Google Tag Manager Help: Managing users and permissions:アカウント・コンテナ権限、複数管理者、組織管理アカウントの考え方を確認できます。
- Google Tag Manager Help: Publishing, versions, and approvals:公開前レビュー、版の保存、公開履歴、過去版への復旧方法を確認できます。
- W3C: Subresource Integrity:取得した外部リソースが予期せず変更されていないか、ブラウザが検証する仕組みを確認できます。
- Google for Developers: Consent mode overview:利用者の同意状態に応じてGoogleタグの動作を制御する基本モデルを確認できます。
よくある質問
企業サイトの外部スクリプトとは何ですか?
アクセス解析、広告、チャット、動画、地図、フォーム、A/Bテスト、外部ライブラリなど、第三者が供給・管理するコードや埋め込みです。自社ドメインから配信していても、更新責任や供給元が外部なら外部依存として棚卸しします。
計測タグやチャットをどのように棚卸ししますか?
ソースコード、タグマネージャー、CMS・プラグイン、同意管理、契約台帳から候補を集めます。その後、代表ページを複数の同意・端末・ログイン条件で操作し、ブラウザのNetworkパネルで実際の通信先と発火時刻を照合します。
外部スクリプトごとにどの情報を管理しますか?
台帳ID、事業目的、所有者、承認者、実装元、対象ページ、提供元、通信先、送信データ、発火・同意条件、性能影響、重要導線への依存、権限、現行版、停止・削除・復旧方法、最終確認日を管理します。
Google Tag Managerの一覧だけで十分ですか?
十分ではありません。CMSやソースコードへ直書きされたタグ、プラグイン、iframe、同意管理ツール、アプリ設定から読み込まれる外部コードは別に存在します。管理画面の設定とブラウザの実通信を必ず照合してください。
不要・危険なスクリプトを安全に停止する手順は何ですか?
現行版と通信ログを保存し、対象タグだけをテスト環境、プレビュー、限定ページなどで停止します。表示、問い合わせ、資料取得、計測、ログイン、予約を確認し、問題がなければ本番停止、コード削除、権限削除、契約・保存データの処理まで閉じます。
棚卸しはどのくらいの頻度で行いますか?
全体棚卸しは少なくとも半年から1年ごとを目安にし、サイト公開、制作会社交代、担当退職、キャンペーン終了、同意方針変更、性能悪化、未知の通信検知のたびにも再確認します。重要タグは台帳に次回確認日を持たせ、期限超過を一覧化します。
まとめ
外部スクリプトは、便利な機能を短期間で追加できる一方、提供元の変更、第三者へのデータ送信、表示速度、権限、障害の影響をサイト運営者が継続して管理する必要があります。HTMLのタグ一覧だけで判断せず、コード、管理画面、ブラウザ通信、契約・業務の4面から候補を集めて照合してください。
台帳には目的、所有者、実装元、通信先、送信データ、同意と発火条件、性能、重要導線への依存、権限、現行版、停止・削除・復旧方法を残します。継続、改善、置換、削除、緊急隔離を判断し、変更は版を保存して限定範囲で試し、公開後の監視と契約・権限の終了まで閉じれば、外部タグを担当者の記憶ではなく再現可能な運用で管理できます。