ホームページのアクセスカウンタを作りました。2023年に。

うちのWebサイトkmaebashi.com、Niftyのメンバーズホームページに最初に開設したのが1998年、その後メンバーズホームページ閉鎖に伴い2004年にドメイン取ってレンタルサーバに引っ越して、その後もその会社が潰れて再販元に引き取られたりとか色々あったのですが、今年の10月末に、いよいよレンタルサーバ業者が事業を撤退するとのことで、さくらインターネットVPSを借りて全面的に移行しました。
その際、以前はレンタルサーバのものを借りていたアクセスカウンタも、スクラッチで作ったので今回はそのお話です。
大昔、個人の「ホームページ」が流行っていた頃は、「ホームページ」にはアクセスカウンタを付けるのがお約束のようなものでした。うちのサイトもその頃からあるので、ずっと継続してアクセスカウンタを付けています。外見としてはこんな感じ。

アクセスカウンタの画像
kmaebashi.comのアクセスカウンタ

(「あなたは○○人目のお客様です!」とか付けない程度の理性は当時からあったらしい)

この手のアクセスカウンタは、たいてい画像で表示します。そして、HTMLで画像を表示するには、img要素を使用します。kmaebashi.comの現行のアクセスカウンタでは、該当の箇所に以下のようにimg要素が入っています。

<img src="/accesscounter/show?counterid=kmaebashi" alt="アクセスカウンタ">

この「/accesscounter/show」に対するリクエストをJavaサーブレットで受けて、カウンタの画像を生成して返す、というのが、アクセスカウンタのプログラムがやっていることです。昔のアクセスカウンタは、Perlなんかで書いてあって、現在の閲覧数はテキストファイルなんかで持っていたりしましたが、今回はデータはPostgreSQLで保持するようにしました(掲示板等でどうせ使いますので)。
構成を図にするとこんな感じになります。

アクセスカウンタのシステム構成
アクセスカウンタのシステム構成

こうやって、img要素に対してのレスポンスで画像を返す、という方式にすると、サーバ側でプログラムが動かせず、ただのHTMLしかアップロードできないような昔ながらの「ホームページ」でも、外部のアクセスカウンタサービスを使ってアクセスカウンタを設置することができます。HTMLのimg要素は昔からドメインが違う別サーバの画像も取得できたからです。当時は、そうやって使うための「無料アクセスカウンタサービス」が多く公開されていました*1。昔ながらのアクセスカウンタがどれもこれも画像なのは、見た目をよくしたい、という目的以外にそういう理由があったのです。
アクセスカウンタのカウントアップの仕様自体もいろいろあって、同じブラウザで何度もF5を押しても増えないように、同一IPアドレスからの連続アクセスは無視するとか、そういうカウンタもありますが、今回私が作ったカウンタはその手の制御はしていません。なのでリロードするたびにカウンタがどんどん回ります。そのほうが嬉しい! ――確か当初、Niftyのメンバーズホームページで提供されていたアクセスカウンタはF5連打では増えなかったのですが、その後レンタルサーバに移ったときに移行したそのレンタルサーバのアクセスカウンタはF5連打で増えるタイプだったので、今回もそれを踏襲しました。やっぱりいっぱい増えた方が嬉しいですし。

その他、プログラムとかの細かい話は以下のページに書いておきます。
https://kmaebashi.com/programmer/accesscounter/index.html

せっかくアクセスカウンタを作ったことでもありますし、kmaebashi.com、今後ともたまには見てやってください。キリ番踏んだら掲示板に報告すること。踏み逃げ禁止!!

以下は広告です。2016年に出した本ですが、アクセスカウンタのような「レスポンスに画像を返すプログラムの作り方」含め、Webアプリケーションの基礎の基礎がわかる本と自負しております。
amazonアソシエイトプログラム、画像を含むリンクが貼れなくなっているようなので、自力で画像を上げました…

Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門
20231229235707

*1:今も探せばそこそこありますが、全盛期より数は減っていると思います……