技術ログ

記事20本が、ずっと計測されていなかった — 「入れた」ではなく「返ってくるか」で確認する

公開: 2026-08-19 · 著者: GRAMSHIFT

トップページで動いているのを確認して、サイト全体を測れているつもりになっていた

記事20本が、ずっと計測されていなかった — 「入れた」ではなく「返ってくるか」で確認する

アクセス解析は「入れたかどうか」で管理してしまいがちです。私もそうでした。トップページを開いて計測タグが動いているのを確認し、それでサイト全体が測れていると思い込んでいました。

今日、サイトマップに載っている29ページを1つずつ取得して、計測ID が本文に含まれるかをただ数えました。結果はこうです。

計測タグあり : 5ページ(トップ + 法務4ページ)
計測タグなし : 24ページ(記事20本 + 一覧・多言語ページ4枚)

集客のために書いたページが、1ページも測れていませんでした。 何か月ものあいだ「記事は読まれているのか」を判断できる材料が存在しなかったことになります。しかも困ったことに、この状態は何のエラーも出しません。解析画面にはトップページのセッションが並び、数字は毎日ちゃんと増えているからです。

なぜ抜けたのか — テンプレートが1つではなかった

原因は単純でした。トップと法務ページはサーバー側のテンプレートから描画していて、記事ページは静的HTMLとして別経路で生成していました。計測タグを入れた当時、私はテンプレート側にだけ入れたのです。

「サイトに計測を入れた」という記憶は残り、「どの生成経路に入れたか」は残らない。生成経路が2本以上あるサイトでは、これが標準的な事故の形だと思います。

直す前に、直せる場所かを確かめる

24ページに一括で差し込む処理を書きました。ここで1つ、事前に決めていたことがあります。差し込んだあと、本番のURLを実際に取得して、タグが返ってくることまで確認する。ファイルを書き換えた事実と、公開ページが変わった事実は別物だからです。

これが効きました。24ページのうち1ページだけ、書き換えたのに公開ページが1バイトも変わらないものがあったのです。検査が赤を出したので、その場で全ファイルを元に戻しました。

調べると、そのパスだけリバースプロキシが別のポートの、まったく別のサービスへ振っていました。私が編集していたファイルは、確かにその場所に存在していましたが、誰にも配信されていなかった。ディレクトリを見ただけでは絶対に気づけない種類のズレです。

location /xxx/ { proxy_pass http://127.0.0.1:3010; }   ← 別サービス
location /     { proxy_pass http://127.0.0.1:3000; }   ← 本体

もし「ファイルを書き換えた=完了」で終えていたら、私はそのページを直したつもりのまま放置していました。しかも見た目上は成功したので、疑うきっかけすら無かったはずです。

やったこと

  • サイトマップの全URLを取得し、計測IDの有無を数える(人が目視で選ばない。全部数える
  • 入っていないページだけを対象に、</head> 直前へ1ブロック差し込む
  • 差し込む前に、対象ファイルを配信ディレクトリの外へ退避(ここに置くと退避が公開されます)
  • 反映後、本番URLを再取得して「タグが在る」「それ以外は変わっていない」を機械で確認
  • 1つでも失敗したら全部書き戻す

ついでに、AI からの流入(ChatGPT や Perplexity などが答えの中でサイトを引用して、そこから人が来るパターン)を判別する処理も同じブロックに入れました。参照元のホスト名を見るだけの十数行です。検索経由の流入と混ざったままでは、そもそも来ているのかどうかが分かりません。

二重計測を作らないための2つの約束

一括で差し込む処理は、書き方を1つ間違えると同じページにタグが2つ入ります。こうなるとセッションが二重に数えられ、直したはずが前より悪い状態になります。そこで2つだけ約束を決めました。

  • すでに計測IDが含まれているページは、対象にしない(差し込む前に本文を検査して弾く)
  • 差し込むのは </head> が1つだけのページに限る。壊れたHTMLで </head> が2つあるページに素朴な置換をかけると、変な位置に入ります

どちらも「対象を選ぶ側」の条件です。差し込む処理そのものを賢くするより、入れてよい相手だけを通すほうが事故が少ないと感じています。

全部に入れるのが正解ではない

対象は最初28ページありましたが、実際に入れたのは24ページです。外したのは次のようなものです。

  • アイコンの見た目を確認するためだけの内部ページ(そもそも公開する必要が無いので、配信ディレクトリの外へ移しました)
  • 退役した外部サービス連携の入口(残す必要はあるが、検索に載る必要はないので検索避けだけ入れた)
  • 隠し要素のページ(もともと検索避けしてあり、集客の指標に混ぜたくない)

計測を増やすこと自体が目的になると、見なくていい数字が混ざって平均が濁ります。「この数字が動いたら何を決めるのか」が言えないページは、入れないほうが後で楽です。

同じ穴が他のサイトにもあった

1サイト直して終わりにせず、手元の全サイトで同じ数え方をしました。すると別のサイトで、ビルド済みの成果物には入っているのに、本番には反映されていないという逆パターンが見つかりました。生成して満足し、配っていなかったのです。こちらは本番と成果物を全ページ突き合わせて(25/25 が差分は当該ブロックのみ)から配りました。

持ち帰れる形にすると

  • 計測タグの導入は「入れた」ではなく「全ページで返ってくるか」で完了とする。数えるのは10行のスクリプトで済みます。
  • ページの生成経路が2本以上あるサイトでは、経路ごとに確認する。テンプレートを直した記憶は、静的生成側には届きません。
  • 本番を書き換える処理には、必ず公開URLを取り直す検算を付ける。ファイル操作の成功は配信の成功ではありません。
  • 数字が0のとき、「起きていない」と「測っていない」はまったく違う。まず後者を否定してから考えます。

解析を入れ直したところで、今日から先のデータしか手に入りません。過去は戻ってこない。だからこそ、測れていない期間を1日でも短くすることだけが唯一できることでした。

よくある質問

計測タグが全ページに入っているか、どう確認するのが確実?

サイトマップに載っているURLを1つずつ取得して、計測IDの文字列が本文に含まれるかを数えてください。ブラウザの拡張機能や解析画面のリアルタイム表示は「今開いたページ」しか見ておらず、抜けているページを見つける用途には向きません。数えるだけなら10行程度のスクリプトで済み、以後は定期実行にできます。

ファイルを書き換えたのに公開ページが変わらないのは何が起きている?

配信経路が想定と違う可能性が高いです。リバースプロキシが特定のパスだけ別のサービスへ振っている、別のディレクトリが優先されている、CDNやサーバー側のキャッシュが残っている、などが典型です。まずサーバーの設定でそのパスがどこへ向いているかを確認してください。ファイル操作の成功は、公開の成功を意味しません。

計測が抜けていた期間のデータは後から取れる?

取れません。アクセス解析はタグが動いていた時間しか記録しないので、抜けていた期間は永久に空白です。だからこそ発見した時点での判断は「原因を丁寧に調べる」より「まず全ページに入れて、測れていない時間を1日でも短くする」が優先になります。原因の分析はタグを入れたあとでも同じ精度でできます。