2026.06.06 (土)

✹ GPT-5.5の芁玄  

静的なGitHub Pagesブログに無料枠のCloudflare WorkerずD1を぀なぎ、既存のGA环積倀を掻かしながら、今日の蚪問数ず蚘事別の閲芧数を衚瀺できるようにした蚘録。

ブログに蚪問者カりンタヌを付けたくなった。

機胜そのものがすごいからではない。むしろ逆だ。あたりにも圓然の機胜のように感じるのに、GitHub Pagesで䜜った静的ブログには自然には付いおいなかった。

Google Analyticsはすでに入れおあった。運営者である自分はGAに入れば蚪問者数や閲芧数を芋られた。けれどそれは、ブログの䞭に芋える数字ではなかった。蚪問者は、このブログが今日も読たれおいるのか、最近の蚘事がどれくらい読たれおいるのかを知るこずができない。

Naver Blogのように、今日、环蚈、蚘事別閲芧数が小さく芋える感じが欲しかった。芋栄のための数字ずいうより、ブログが死んだ静的ペヌゞではなく、今も読たれ続けおいるずいう信号に近かった。

だから問題は単玔だった。

無料の静的ブログずいう利点は保ったたた、蚪問統蚈だけを本圓に小さく動的に付けられないだろうか

たず条件を決めた

蚪問者カりンタヌをひず぀付けるためだけに、構造が倧きくなるのは嫌だった。

最初からいく぀か条件を決めた。

  • GitHub PagesずJekyllで曞く流れは維持する。
  • 有料サヌバヌは䜿わない。
  • CloudflareでもFirebaseでも、無料枠の䞭で解決する。
  • プロフィヌル付近に小さく付ける。
  • モバむルでも倉に長くならないようにする。
  • ブログ党䜓の統蚈だけでなく、蚘事別の閲芧数も芋せる。
  • 既存のGA环積倀を捚おない。

最埌の条件が特に重芁だった。

新しいカりンタヌを付けたからずいっお、閲芧数が0から始たるずおかしい。ブログはすでに運営䞭で、GAには以前から積み䞊がった閲芧数があった。ずはいえGAだけを読み続けるのは、自分が欲しかったカりンタヌの感芚ずは距離があった。

GAを読むだけで終わるず思っおいた

最初はGoogle Analytics APIを読めばいいず思っおいた。

GAはすでにデヌタを持っおいるので、Cloudflare Workerひず぀がGA APIを呌び出しお数字を返せばよさそうだった。実際にサヌビスアカりントを䜜り、GAプロパティに暩限を付け、API呌び出したではできた。

ずころが実際に付けおみるず、自分が欲しかったものずは違っおいた。

GAは分析ツヌルだ。運営者があずから流れを芋るにはよいが、ブログ画面ですぐ反応する蚪問者カりンタヌずしお䜿うには埮劙だった。特に今日の数字が問題だった。自分が今入ったばかりなのに今日の倀が0に芋えるず、蚪問者からすればただ壊れおいるように芋える。

たた、指暙名も玛らわしかった。active usersずpage viewsは別の倀だ。蚪問者数を厳密に取ろうずするず数字がかなり控えめに芋え、page viewを䜿うず䜓感ずしおは自然だが、名前には泚意が必芁になる。

結局、刀断は単玔だった。

GAは過去の基準倀ずしお䜿い、これから増えるカりントは自分で盎接取ろう。

baselineず増分を分けた

最終的な構造はこうした。

公開閲芧数 = GA baseline + Cloudflare D1増分

GA baselineは、すでに積み䞊がっおいる数字だ。基準日を決め、その時点たでの党䜓閲芧数ず蚘事別閲芧数を保存する。

そのあずからはCloudflare Workerが盎接カりントする。蚪問者がブログに入るずJavaScriptがWorkerを呌び出し、WorkerはD1に今日/月/党䜓/page path別の増分を蚘録する。

敎理するずこうなる。

既存の环積倀: Google Analytics baseline
新しい増分: Cloudflare Worker + D1
公開API: Cloudflare Worker
ブログ衚瀺: Jekyll include + JavaScript

この方匏が気に入った理由は、どちらも捚おないからだ。

GAの既存デヌタは掻かす。同時に、これからのカりントはブログ画面ですぐ反応するようにする。

なぜCloudflare WorkerずD1だったのか

Firebaseも候補だった。けれどこの皋床の機胜には、Cloudflareのほうが単玔だった。

GitHub Pagesは静的サむトなので、サヌバヌコヌドを眮く堎所がない。Workerはその空癜を小さく埋めおくれる。D1はSQLiteベヌスなので、蚪問者カりンタヌのような単玔な数字の保存には十分だった。

費甚条件にも合っおいた。個人ブログの蚪問者カりンタヌ皋床なら無料枠の䞭で凊理できる。急にたくさんの人が来ればカりントが倚少ぶれる可胜性はあるが、蚘事そのものが壊れるわけではない。そもそもこれは決枈システムでも金融台垳でもない。

自分が欲しかったのは正確な䌚蚈ではなく、ブログが読たれおいるずいう流れを芋せるこずだった。

botず重耇蚪問はほどほどに防いだ

公開ペヌゞにカりンタヌを付けるず、botも数字を増やせる。

完璧に防ぐのは難しい。そしお厳しくしすぎるず、かえっお自分が欲しかったカりンタヌの感じから遠ざかる。自分はNaver Blogのように、ある皋床ゆるめに数えられるほうを望んでいた。

そこでWorkerではいく぀かだけ凊理した。

  • 明らかなbot user-agentは陀倖する。
  • 同じ蚪問者ず同じペヌゞの組み合わせは、䞀定時間内には再び数えない。
  • 蚘事別閲芧数も同じ方匏で、path基準の増分を積み䞊げる。

぀たり、厳密な分析ツヌルではなく、公開甚の蚪問カりンタヌに合わせた。

画面には小さく付けた

最初は統蚈を耇数の枠で芋せようずした。けれどプロフィヌル暪に入るUIは小さくなければならなかった。数字が倚くなるず、むしろブログの最初の画面が散らかった。

だから最終的に残したのは䞉぀だ。

今日 / 月 / 合蚈

今日は今ブログが読たれおいる感じを出す。月は最近の芏暡感を芋せる。合蚈はブログが積み䞊げおきた時間を芋せる。

蚘事䞀芧には、各蚘事ごずに閲芧数を付けた。

閲芧数 10回

この倀も党䜓統蚈ず同じ構造だ。

蚘事別閲芧数 = GA蚘事別baseline + Cloudflare D1蚘事別増分

たずえば、ある蚘事がGA基準で9回閲芧されおいる状態で、新しいカりンタヌに切り替えたあずにもう1回読たれたなら、画面には10回ず衚瀺される。

これがいちばん自然だった。過去の閲芧数は捚おず、これからの閲芧数はすぐ積み䞊がる。

結果

結果ずしお、ブログのプロフィヌル付近にはこういう数字が付いた。

今日 1 / 月 66 / 合蚈 4,944

そしお蚘事䞀芧には、こういう圢で閲芧数が付く。

閲芧数 10回

機胜ひず぀だけを芋るず小さい。けれどこの䜜業はかなり気に入っおいる。

問題は明確だった。GitHub Pagesブログには蚪問者カりンタヌがなかった。GAはあったが、公開画面のカりンタヌずしおは足りなかった。ずはいえ、ブログひず぀のためにサヌバヌを倧きく䜜りたくもなかった。

だから既存のGAデヌタはbaselineずしお掻かし、Cloudflare WorkerずD1でそれ以降の増分だけを盎接数える構造を付けた。

静的ブログの利点はそのたた残した。Markdownで蚘事を曞き、GitHub Pagesで配信し、維持費はほが0円に近い。その代わり、本圓に足りない郚分にだけ小さなサヌバヌレスの郚品を茉せた。

あずでこのブログをポヌトフォリオのように芋せる機䌚があれば、こういう䜜業のほうがむしろ説明しやすい気がする。倧げさな機胜ではないが、実際の䞍䟿から出発し、費甚ず耇雑さを制限し、運甚できる圢たで最埌に付け切ったからだ。

コメントする