はもちくわ

コードについて自分なりの解釈を書いてます。

【PHP】アクセス数が少なすぎてgoogleアナリティクスではよくわからないのでPHPで作って確認してみることにした話

はてな開発ブログでgoogleアナリティクスユニバーサルが終了し、GA4の設定が可能になった。。。みたいな記事を読んで、どうやらサイト分析ツールが新しくなったらしいと理解しまして、今まで分析ツールは触ったことがなかったのですが、

「今の時代、googleアナリティクスぐらい使えなきゃダメ!」

とか言われそうだから、このブログと自作サイトを試しに設定して動かしてみました。

 

わはははは。。。このブログも自作サイトどちらも設定はできたけど、見方がよくわからない(笑)
こういうのは、使い込めばきっと、レポートをさっと見ただけで、判断できるようになるのでしょう。なんとなく意味はわかるのですが、詳しくはわからない(笑)

しかもリアルタイムという直近の集計に自分が入ってしまっているみたいで、「これじゃあ分析の意味が無いじゃないか!」と思い、自分のIPアドレスを除外登録してみても「リアルタイム」で除外されていない。。どうして?何かやり方が違う??といろいろ調べました。どうもIPv4IPv6の違いが除外に関係するらしいとわかり、自分の状態を調べてみると、IPv6らしいと判明。早速、除外IPを変更してと、いや面倒だから両方登録してしまえ(笑)、、、、と、まあ、丸一日いいろいろやってみてたのですが、どうしてもリアルタイムに自分が出てくる。
どうしらたいいかわからない。。。ともう少し調べてみると、どうも「リアルタイム」では、自分は除外されず、レポートの集計で除外される仕様?らしい。。。

本当に除外されてるのかの確認方法も、ごちゃごちゃとやらねばいけないみたいだ。。。「便利ツール」使ってるはずなのに面倒くさいとか理解ができない(笑)。結局、本当に除外されてるか??と半信半疑状態のままですが、なんか集計は動いているので、使いながら、勉強して理解しようと思います。

 

という感じで、アナリティクスがよくわらないので、PHPJavaScriptで似たようなことができないか、自分のサイトで作って確認してみることにしました。



とりあえず、ささっと、PHPのスーパーグローバルを使って、簡単に得られる訪問者の情報だけを集計できるものを作成して、早速、結果を見てると、、、
IPアドレスは違いますが、ホスト名とユーザーエージェントの内容から、semrush.comという同じクローラーが何度も来ているみたい。
「SemrushBotって、、、これ大丈夫なやつ??」
と、心配になりながら、調べてみるとセムラッシュというSEO対策のサイト分析ツールらしいですね。詳しくないのでわかりませんが、多分大丈夫でしょう。

ネット上でクローラーがどうやって動いているのか知らなかったので、IPアドレスが一致するかどうかで、訪問者が新規か既存かを判断していたのですが、この判断方法ですと、クローラーさんが来ると、IPアドレスも幅があるらしくて、頻繁に変わるみたいなので、新規訪問者数がやたら増えてしまうことがわかりました。
そんなわけで、ホスト名でSemrushかどうかを判断させて、Semrushなら同じbotとして集計できるように変更しました。文字列で条件分岐させればいいだけですから簡単です。そして、おそらく、bot系はまだまだ他にもありそうだから、増えてきたら判定文字列を増やして配列化してループさせればいいや。予想通り、別のものも来たので、ホスト名に文字列が含まれていたら同じbotとして集計することにしました。

しかし、、、IPアドレスって結構、幅があって動的なものなんですね。自分のスマホでもアクセスするポイントが変われば変わるんですね。まあ、ちょっと考えれば納得です。実際に自分で作ってみると勉強になるなぁ。

で、次は、IPアドレスからの地域特定方法はどうやって計算するのか??ですね。
調べてみると、、、なるほど、GeoIP2というライブラリを使ってデータベースと照合する方法なんですね。データベースも変わるから当然、Composerでバージョン管理が必要だそうです。しかも無償版と有償版があるみたいで、精度やフォローに違いがあるとかないとか(笑)
ちょっと私、直近までExcelVBAに没頭していて、PHPから遠ざかっていたため、ルートとかもろもろの復習をせねば超えられない感じです。

でも、まあ、おそらくこれはなんとかなりそうだ。

で、サイトのページを見ている時間とページスクロールをしたのか?という判断か、、、、時間はSESSIONかPOSTでなんとかする??ページのスクロールはJavaScriptじゃなきゃ計れないか??とりあえず、、、SESSIINでなんとかできるかやってみようかな。でもPHPで情報拾うには、リロードさせる必要があるけど、離れた時間をどこで取ればいいのかな?Javascript忍ばせて定期的にログとるか??

また、進んだらブログ書きま〜す。