🐐

GoatCounter: シンプルな無料アクセス解析ツール

2023/01/16に公開

ウェブサイト管理者の憂鬱

私は修行僧ではないし、煩悩も108どころか1024くらいあります。その山ほどある煩悩のうちの1つ、PV欲。自分が更新しているウェブサイトのPV数が増えたら嬉しい、もっと増えろ、云々。七つの大罪の一つにして、特にプログラマの三大美徳にも含まれない「強欲」に取り憑かれたインターネット生活を送っています。

さて、ともかくPVを増やしたいなら、やることは決まっています。「推測するな、計測せよ」というわけで、当然アクセス解析ツールの出番です。
私は長らくGoogle Analyticsを使ってきました。知る限りの無料のツールで一番まともだったからです。ダッシュボードは複雑だし情報は多いし、自分みたいな「期間・ページごとにPV数、流入元が分かればいい」という人間にはオーバースペックでしたが、いい代替サービスが見つかりませんでした。

シンプル・プライバシー重視を謳う後発ツールはいろいろあります。しかし、たとえばplausibleがいい例ですが、自分でサーバを立てるか(最低スペックVPSで月500円くらいですかね?)、さもなければ少なくとも月に500円か1000円くらい払う必要がありました。この種のツールの根幹にあるOSS的思想には強く共感しますが、現実的に自分の財布はスッカラカンです。アナリティクスのためだけにその値段はちょっと、貧乏学生にはさすがになあ……。

「高機能は求めないから、無料でシンプルなものを!」という控えめな要求が予想以上に厄介だったことが判明しましたが、幸い条件に該当するサービスがありました。それが、これから紹介するGoatCounterです。

コンセプト

https://www.goatcounter.com/why

作者の説明によると、「Google Analyticsは機能が過剰だしプライバシーの懸念もあるけど、シンプルさやプライバシーを重視すると有料ツールばかりになる」という問題意識から開発されたそうです。「シンプル・軽量・無料・プライバシー重視」というニッチを狙ったものですが、同じ立ち位置の類似サービスは正直これ以外だとCloudflare Web Analyticsくらいしか知りません。

代替サービスがなくて渋々Google Analyticsを使っているという人にお勧めです。読み込むスクリプトが4kb弱くらいなので、サイトを無駄に重くするような心配とも無縁です。

料金

https://www.goatcounter.com/#pricing

「合理的な公共利用」の範囲では無料です。個人のサイトはもちろん、小〜中規模のビジネスのためのウェブサイトでも無料らしいです。
もちろん1日に数百万くらいのページビューを飛ばすのはさすがにアウトですが、そのレベルだったらGoatCounterをセルフホストするなり(OSSなので)、他のツールを使うなり、いくらでもやりようはあるでしょう。

デモ

「じゃあ、具体的にどれくらいの分析ができるの?」というのが当然気になるところだと思います。作者のサイトでダッシュボードの実物が閲覧できるので、検討材料にしてもらえれば。

https://stats.arp242.net/

期間やページごとのアクセス数、各ページのアクセス数の推移、ある期間のページごとのアクセス数、流入元など、ライトユーザが欲しい情報は大抵手に入るのではないでしょうか。

その他の利点

データのエクスポートができます。

データのエクスポートができます。

大事なことなので二回言いました。

使い方

サインアップします。

https://www.goatcounter.com/signup

「人間であることの確認」として謎の行動を要求されますが、書いてある通り入力欄に「9」と入れれば大丈夫です。

登録が終わると、入力したユーザ名に応じてXXX.goatcounter.comというURLが与えられます。後はドキュメントの通りにセットアップすれば完了です。

https://www.goatcounter.com/help/start

複数サイトで使う

https://www.goatcounter.com/help/domains

サイトを複数登録することができます。それぞれのサイトにGoatCounterのサブドメインが割り当てられ、エンドポイントやダッシュボードも別々になります。「ブログは他のサイトと分けて集計したい」というような場合に便利です。

「ドメインは別だけどまとめて集計したい」という場合には、GoatCounterの送るデータにドメイン名を追加することができます。詳しくは上記のドキュメントへ。

開発/ステージング環境からのアクセスを除外する

https://www.goatcounter.com/help/skip-dev
https://www.goatcounter.com/help/js

GoatCounterの前にJavaScriptを実行することで、GoatCounterの挙動を制御できます。(もちろん、async属性とかで実行順が前後したら意味ないですよ)

// 例
if (window.location.host !== 'production.com') {
  // production.com以外ではGoatCounterを止める
  window.goatcounter = { no_onload: true }
}

なお、localhostからのアクセスはデフォルトでカウントしないようになっています。

SPAで使う

https://www.goatcounter.com/help/spa

おわりに

私は非常に満足しています。機能的にも必要十分ですし、余計なデータが集まる心配もありません。必要であれば、設定画面から集める情報を減らすこともできます。

思想的にも満足したので、私も経済的な余裕ができたら作者さんに寄付しようかなと思っています。

Discussion