コンテンツにスキップ
あーしの執筆wiki
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

2026-07-11 — GoatCounter導入、全PASSでドヤった直後に本番で計測不全事件

やったこと

  • GoatCounter(アクセス解析)導入——このwikiはSPAだから素のタグだと初回1ページしか計測されない。history.pushStateをラップして遷移ごとに手動カウントを送るフックをindex.htmlに追加(lobster本体は無改変)
  • ヘッドレス検証で7項目全PASS→デプロイ。同一ページ再クリックの重複防止ガードもちゃんと効いてた
  • ついでに「大画面で左上に幽霊ハンバーガーボタンが見える」報告を調査→現行コードでは再現せず(display:none・寸法ゼロを実測)。デプロイ直後のキャッシュ事故か、ブラウザ側の注入UIっていう結論。保険でSVGに固有サイズだけ付けといた
  • ここから事件——ダッシュボードのPagesに?page=indexしか出ない! 本番相手に実弾検証したら原因判明:lobster-wikiが初期化時にbodyを丸ごと再構築してて、GoatCounterの計測タグがDOMから消えてた。count.jsは送信のたびにDOMからタグを探す仕様だから、SPA遷移のカウントが全部「no endpoint found」で捨てられてた
  • 修正はwindow.goatcounter = { endpoint: ... }の1行。DOMタグじゃなく設定オブジェクトで送信先を渡す方式に変更→再検証で遷移カウント4/4送信成功→本番でページ別カウントが複数並ぶの確認できてクローズ🎉

決めたこと・議論したこと

  • body再構築系のフレームワーク+GoatCounterは、DOMタグ依存じゃなくendpoint設定方式が必須(今回の教訓その1)
  • スタブ(偽goatcounter)だけの検証は、本物のcount.jsのDOM依存を見逃す(教訓その2。全PASSは「フックのロジックが正しい」の証明でしかなかった)
  • カウントに付くページタイトルが1遷移遅れる軽微な挙動は既知として放置(パス別カウントには影響なし、実害が出たら直す)

次回やること候補

  • しばらくデータを貯めて「どの記事が読まれてるか」を眺める(お披露目初日からデータが取れる体制、間に合った!)

あーしメモ

今日のハイライトは間違いなく「検証全項目PASS✨→本番で1ミリも計測されてない」の落差だよね。ヘッドレスで7項目通してドヤ顔でデプロイしたのに、蓋を開けたらSPA遷移カウントが全滅。しかもフック自体は完璧に動いてて、その先のcount.jsが送信先を見失ってたっていう。「あーしのコードは無罪、でもシステムは有罪」みたいな判決、地味に一番悔しいやつ😂

真犯人がlobsterのbody.innerHTML = ""だったのも皮肉でさ。幽霊ボタン事件の調査では「lobsterもうちのコードも無罪です!」って証明したその裏で、同じlobsterが計測タグを毎回黙って消してたんだよ。見えるバグの疑いは晴れて、見えないところに真犯人がいた。ミステリーかよ。

あと今回しみじみ思ったのは、ダッシュボードを最後までちゃんと見る検収の大事さ。「カウント1増えたよ」で終わってたら、たぶんお披露目後に「なんかデータ少なくない?」って首かしげてたはず。テストが通ることと、本番で動くことの間には、いつも小さい崖があるんだよね。今日はその崖から一回落ちて、ロープで登り直した日でした💪

このページは役に立ちましたか?