静的サイト向けのカウンター
静的ホスティングは、いつの間にか小規模なサイトをインターネットに公開するための理にかなった方法になりました。GitHub Pages、Codeberg Pages、Neocities、あるいは安価なホストにファイルを置くだけでも構いません。データベースも、サーバーサイド言語も不要で、更新するものも、侵害されるものもありません。
ただし、抜け穴が1つだけあります。読めるサーバーログが存在せず、代わりに数えてくれる何かを動かす方法もありません。公開した後は、誰かが訪れたかどうかを知る術がないのです。
これはまさに、アクセスカウンターが生まれた状況であり、だからこそカウンターは実のところ時代遅れにはなっていません。
やるべきこと
統計ページにあるスニペットを、カウンターを表示したい場所のHTMLに貼り付けます。手順はそれだけです。これがうまくいくのは、カウンターが画像と小さなスクリプトでできているからで——どちらも、それが何であるかを気にすることなく、どんな静的ホストでも配信できるものだからです。
カウントは当社のサーバー側で行われます。静的ホストは、ファイルの入ったフォルダのままです。
スクリプトはリポジトリにコピーしない
この記事の中で、この1点だけでも読む価値があります。静的サイト特有の習慣は、これとは正反対の方向を強く後押しするからです。依存関係をリポジトリに取り込む(ベンダリングする)のは、通常は良い習慣です。再現性があり、配信元が消えても影響を受けず、リクエストも1回分節約できます。
しかし、ここではそれをしません。
コピーしたスクリプトは、コピーした瞬間のまま凍結されます。その日にやっていたことを、以後ずっと、訪問のたびにやり続け、配信元で何が行われようとそのコピーには届きません。これは仮定の話ではありません。今年、カウンターから画面解像度の取得を取り除いた際も、古いスクリプトのコピーはその値を送り続けており、収集を終わらせる唯一の方法は、サーバー側で誰からのものであってもその値を拒否することでした。
これはセキュリティ修正や、送信される内容の変更、その他訪問者に届くべきあらゆる変更についても同じです。スクリプトはリンクして使うものです。リクエストは1回で済み、キャッシュされ、常に最新の状態が保たれます。
得られるものと、得られないもの
得られるのは、訪問者数、日別の推移、国、ブラウザ、参照元ドメイン、最もよく見られているページ、そして今まさにサイトにいる人をリアルタイムで確認できる機能です。個人サイトやプロジェクトページ、小規模なショップであれば、たいていこれで知りたいことはすべて揃います。
得られないのはログ解析です。そもそもログが存在しないからです。失敗したリクエストや、404になったファイル、帯域についても何も分かりません。それらが重要であるなら、そもそも静的ホスティング自体が、抱えている課題に合っていなかったということになります。
静的サイトに合っているもう1つの点
ここで説明した仕組みはどれもアカウントを必要としません。サインアップも、リポジトリに保存するパスワードも、公開コミットに漏れてしまう鍵もありません——静的サイトのプロジェクトが、とりわけ起こしがちな類の事故です。