ブログの累計PV表示、実はvisitsで作った話
ブログのトップページに「累計PV」を出したくなった。
理由は単純。
数字が見えると続けやすいから。
更新カレンダー、運営日数、記事数。そこにアクセス数も並べたら、ブログが少しだけゲームっぽくなる。
ただ、作ってみたら最初の想定と違った。
「累計PV」と書いているけど、中身は厳密なPVではない。
Cloudflare Web Analytics の visits を使っている。
最初にやりたかったこと
やりたかったのはこれ。
私以外の、累計PV数を自動で数えて、トップページに表示する。
Google Analytics は入れていない。Cookie同意まわりが面倒だし、個人ブログでそこまで細かく追う気もない。
今動いているのは Cloudflare Web Analytics。
Cloudflareがサイトの入口でざっくり数えてくれる仕組み。Cookieを使わないので、個人ブログにはちょうどよい。
Claude Code に頼んで、CloudflareのAPIから数字を取らせた。
API は、サービスの管理画面をプログラムから読むための入口みたいなもの。
取れなかった数字
最初は「自分以外の累計PV」を取りたかった。
でも、ここで制約が出た。
CloudflareのAPIでは、ページビュー数そのものは取れる。ただし、私がやりたかった条件付きの取り方ができなかった。
たとえば、
- 日本国内だけ
- 自分のアクセスをなるべく除く
- 累計で出す
こういう条件を付けようとすると、使える数字が変わる。
Cloudflare側で国ごとの絞り込みに使えるデータでは、PVではなく visits が取れる。
visits は、ざっくり言うと「訪問数」。ページを何回開いたかではなく、「人と日付に近い単位」で数える数字。
PVとは違う。
でも、個人ブログのトップに置く数字としては、むしろそっちのほうが落ち着いている気もした。
ページを10回読み直した1人を10として数えるより、訪問の手応えとして見るほうが近い。
名前だけが少しズレた
問題は、画面上のラベル。
トップページには「累計PV」と出している。
でも中身は国内visits。
これは正確にはズレている。
ただ、非エンジニア向けのブログで「累計国内visits」と出しても意味が分からない。私自身も、読者として見たら一瞬止まる。
なので、現時点では「累計PV」という表示にしている。
厳密な解析レポートではなく、ブログ運営のざっくりした手応えを見るための数字。
そう割り切った。
今後、気になるなら「累計訪問」などに変える余地はある。
自動更新の仕組み
作った仕組みはこう。
- GitHub Actions が毎日朝に動く
- Cloudflare Web Analytics から国内visitsを取る
pv-stats.jsonに累計値を書き込む- ブログを再ビルドする
- Cloudflare Pages に反映する
GitHub Actions は、GitHub上で決まった作業を自動実行する仕組み。
ブログ記事の予約公開にも使っている。
今回も同じ流れに乗せた。
毎日JST 7:00に再ビルド。記事の予約公開と、累計数字の更新をまとめて処理する。
トップページには、運営日数、連続更新、記事数、累計PVが並ぶようになった。
数字としては小さい。
でも、ゼロではない。
途中でデプロイが止まった
実装自体はすぐできた。
でも、GitHub Actions の途中で止まった。
原因は、依存パッケージの高リスク警告。
Security audit という自動チェックが、古い部品に問題があると判断してデプロイを止めた。
面倒ではある。
でも、止まって正解だった。
こういうチェックがないと、見えない問題を抱えたまま本番に出してしまう。
npm audit fix で修正して、再度デプロイ。最終的には本番にも反映された。
学んだこと
アクセス解析の数字は、名前が似ていても中身が違う。
PV、visits、requests。
全部「アクセス数っぽい数字」に見える。でも意味は違う。
今回の学びはこの3つ。
- 欲しい数字と、実際に取れる数字は違う
- 厳密さより、目的に合う数字を選ぶほうが大事な場面がある
- 表示する数字は盛らない。取れた数字の性質を理解して使う
個人ブログの数字は、見栄を張るために出すものではない。
続けるための目印。
それくらいの距離感でちょうどよい。