はてなカウンターがカウントしないもの
これは前々から薄々感じていたことだが、はてなカウンターは、決してすべてのアクセスをカウントしている訳ではない。但し、感覚的にはそう感じていたが、実際に厳密に試してみたことはこれまでなかった。どのようなアクセスをカウントし、あるいはカウントしないのか、そろそろちゃんと調べておこうと思った。
環境
- はてなカウンターのみ契約(月額60ポイント)
カウントする仕組み
まずはどのようにカウントしているのか、その仕組みを調べてみた。
カウンターを設置するコード
- はてなダイアリーにおいては、管理 >> デザイン >> 詳細 >> ページのヘッダ内に以下のhatenaタグを設置する。
<hatena name="counter" cid="カウンターID(例:11)">
- 上記hatenaタグは、はてなダイアリーアクセス時に以下のHTML(JavaScript含む)に変換される。
<script type="text/javascript"><!-- hatena_counter_name = "はてなID(例:zariganitosh)"; hatena_counter_id = "カウンターID(例:11)"; hatena_counter_ref = document.referrer+""; hatena_counter_screen = screen.width + "x" + screen.height+","+screen.colorDepth; //--></script> <script type="text/javascript" src="http://counter.hatena.ne.jp/js/counter.js"></script> <noscript><img src="http://counter.hatena.ne.jp/はてなID(例:zariganitosh)/カウンターID(例:11)" border="0" alt="counter"></noscript>
- noscriptタグは、JavaScriptが動作しないブラウザ環境でのみ、表示される。(評価される)
- つまり、http://counter.hatena.ne.jp/はてなID(例:zariganitosh)/カウンターID(例:11) の画像を表示する(アクセスする)ことで、カウントされるのだ。
- 通常は、hatena_counter_XXXX変数に必要なアクセス情報をセットして、http://counter.hatena.ne.jp/js/counter.jsを実行することで、カウントしているのだ。
- 今時のブラウザは、常時JavaScriptが有効な環境で動作していると思われるので。
実験
- noscriptタグを削除して、imgタグで始めると、1回のアクセスで2カウントずつ増加した。
- JavaScriptと、imgタグによる二重のカウントが実施されてしまうためと思われる。
- scriptタグをすべて削除して、imgタグのみでもカウントされる。
- 但し、カウンター数値は一切表示されない。
- また、hatena_counter_XXXXに設定されるアクセス情報(リンク元URL・画面サイズ等)も取得できなくなる。
- 単純に、http://counter.hatena.ne.jp/はてなID(例:zariganitosh)/カウンターID(例:11) にアクセスするだけでもカウントされる。
様々なアクセス
具体的なアクセス方法でいろいろ試してみた。
自分のアクセス
- はてなカウンター >> 設定 >> カウンターID >> 自分のアクセス >> 記録しない を選択しておくことで、
- そのはてなカウンターのユーザー(がログイン中)のアクセスを、カウントしない。
AutoPagerize等のページ追記アクセス
- SafariにAutoPatchWorkをインストールして、
- http://d.hatena.ne.jp/zariganitosh/20110907/picture_book_world にアクセスして、
- 下方向へのスクロールによってAutoPatchWorkの次ページ追記動作を幾度か繰り返してみた。
- はてなカウンターでカウント数を確認するも、変化なし。
∴カウントしない。
RSSリーダーによるアクセス
- 自分の日記をRSSリーダーに登録して、RSSリーダーのWebサイトで、更新や再読み込みを実行してみる。
- http://d.hatena.ne,jp/zariganitosh/rss へのアクセスと同等と思われる。
- はてなカウンターでカウント数を確認するも、変化なし。
∴カウントしない。
curl等のコマンドによるアクセス
- 以下のコマンドを何度か実行してみた。
$ curl 'http://d.hatena.ne.jp/zariganitosh/'
- はてなカウンターでカウント数を確認するも、変化なし。
∴カウントしない。
- 但し、出力をファイルに保存して、そのファイルを開くと、はてなカウンターは+1カウントされた。
AppleScriptの"URL Access Scripting"
- AppleScriptを利用すると、以下のようにURLを指定して、ファイルをダウンロードできる。
do shell script "touch ~/Downloads/blog"
set newFile to (path to home folder as text) & "Downloads:blog" as alias
tell application "URL Access Scripting"
download "http://d.hatena.ne.jp/counter_test/" to newFile with progress
end tell
- はてなカウンターでカウント数を確認するも、変化なし。
∴カウントしない。
- 但し、ダウンロードしたファイルをテキストエディットで開くと、はてなカウンターは+1カウントされた。
- また、AppleScriptでSafari等のブラウザをコントロールしてアクセスしても、もちろんカウントされるはず。
上記現象の理解
- つまり、URLにアクセスして、HTML(CSS・JavaScriptも含む)データをダウンロードするだけでは、カウントされないのだ。
- ダウンロードしたHTMLデータが、ブラウザ等によって視覚情報として評価された時、初めてカウントされるのだ。
- 視覚情報として評価 = JavaScriptの実行、画像データの取得など。
- また、AutoPagerizeにおいては、追記されるページ内に はてなカウンターが設置されていないので、カウントされないのだ。
- RSSリーダーにおいても同様で、http://d.hatena.ne,jp/zariganitosh/rss 内に はてなカウンターが設置されていないため、カウントされない。
- はてなカウンターは、通常、管理 >> デザイン >> 詳細 >> ページのヘッダ内に設置される。
- はてなカウンターを各日記の本文中に設置すれば、AutoPagerizeやRSSリーダーからのアクセスでもカウントされるはず。
- 但し、本文中にJavaScriptのカウンターは設置できないので、imgタグのカウンターのみ設置可能。
- imgタグのカウンターのみでは、はてなカウンターが提供するアクセス解析の情報がほとんど取得できない。
所感
- では、カウンターを本文中に設置して、RSSリーダーやAutoPagerizeのアクセスも取得すべきだろうか?
- AutoPagerizeによるアクセスについては、ぜひ知りたい。
- しかし、読む気がなくてもページ下方までスクロールすると次ページが読み込まれてしまうので、正しくカウントするには工夫が必要かもしれない。
- 例えば、AutoPagerizeによる最初の追記分、つまり2ページ目のカウントは無視して、3ページ目からカウントするとか。
- 3ページ目が追記されて初めて2ページ目が読まれたと予測できるため。
- しかし、3ページ目が追記された時に取得するアクセス情報は、2ページ目の情報である必要がある。
- けっこう複雑。そんなカウンター無理かもしれない...。
- もっと高度なアクセス解析ツールもあるけど(Google Analytics等)、このような零細ブログにはまだ不要だと思った。
- せいぜい、アクセスされたURL、リンク元URL、検索語などが、なるべくリアルタイムで確認できれば、それで満足な気がする。