« Perl でオブジェクト指向 C++風 その4 HashFreezer | トップページ | quail-naggy.el: 単漢字変換 Input Method for Emacs. »

2014年3月20日 (木)

Cocolog_Pro_Analyzer:ココログプロ用アクセス解析補助 Greasemonkey

ココログの新しいアクセス解析が 2013年12月に導入され、2014年2月に完全に切り換わった。基本的には便利になって、要望の多いらしい生ログなども将来的に対応していくそうだから、私は大きな不満はない。

ただ、ココログプロを使っていて複数のブログを扱っていると、ブログを横断したデータの閲覧性が低下した点は気になる。そういうのは、前は Perl などで robot を書けば、なんとかなったんだが、今回のアクセス解析は JavaScript がメインの動的なページのため、それが難しい。そのあたりを補うための Greasemonkey スクリプトを書いてみた。

配布物

Cocolog_Pro_Analyzer.user.js。メイン配布物。

count_access.pl。上記をページビューに関して使って生成した JSON の後処理として計数する Perl スクリプトの例。というか私のアクセス解析報告で使う(予定の)スクリプト。

count_access_2.pl。JSON の取得がうまくいかないことがある。そういうときは、手作業でコピペしたテキストを用意するしかない。タイトルのところで改行が入るので、二行ずつで一データのテキストを得てそれを処理する。
解説


機能は大きく三つ。

1.
アクセス解析の最初のページ(app.cocolog-nifty.com 内)に、ブログごとの概要の切り換えがあるが、それを一ページ内に一気にすべてのブログの概要を表示してしまえるようにした。

2.
ua.userlocal.jp 内で、右上のブログタイトルを変えれば、一度、 app.cocolog-nifty.com に戻って、そのブログを選択したあと、同じページに自動的に戻って来れるようにした。

3.
ページビュー数ランキングで、そのブログ内または自分の全ブログに関して集計を取って、それを JSON 形式でダウンロードできるようにした。


もうちょっと凝っても良かったのだが、これ以外は、別のスクリプトに分けたほうが見通しが良くなると考え、これだけの機能で公開してみることにした。

近い将来にココログのほうで対応するらしい自サイト内の自分のアクセスを除外する機能の代替として、自分がアクセスしたときにそれを localStorage に残しておいて、あとから、そのデータを JSON として取り出せるようにすれば、あとは Perl スクリプトなどで簡単に除外処理を書ける。これをこのスクリプトに統合するかちょっと迷ったが、いずれやりたいと思っている翻訳等のためのツールバーに統合しても良く、とりあえず、ココログの対応を見てからにしようと今回は見送った。

できた JSON の中身は、不親切で申し訳ないが、↓のようにすれば構造がわかると思う。ラベルが label に配列で入ってて、「タプル」=各行のデータが tuples に配列の配列として入っている。

$ cat 'ダウンロードしたファイル名.json'  | \
  perl -e 'use JSON; use Data::Dumper;'\
       -e 'my $json = decode_json(join("", <STDIN>));'\
       -e ' print Dumper($json);' | more



完成度は正直高くない。エラー処理等をかなり、はしょっている。ココログプロの人口は少なく、かつ、JSON を Perl 等で後処理ができるような人物となると、かなり限られて来て、そういう人なら、今回のようなプログラムは書けるだろう。その手間を少し省く程度の意味しかない。

その程度なので私は「パブリックドメイン」でいいのだが、ココログのアクセス解析の文法・機能にかなり依存していて、特にココログ外で転用するときは、注意が必要かもしれない。アーカイブを置いている場所はココログサーバー内でココログ側は割と自由にできるので、ここからダウンロードできる限りはココログで使用してもそれほど問題はないと思うが…。


無駄話


注意書き「数値の反映にはタイムラグが発生する場合があります。」は当初からあったかな?

リアルタイムに覗かれていると、アクセスしたあと失敗したなというとき消せない。それなら、いっそのこと最初からアクセスを隠す…みたいなことになりうる。ココログ側にしてみれば、これまでも「消せなかった」という主張ではあるんだろうが、「新規参入者」にやさしくあって欲しい。

今、そういう実装でなかったとしても、「アクセスしても2時間ぐらい反映されないことがある」と注記してあれば、今のネット上にはいなくてもいずれ「それぐらいだったら、クレカみたいに何かあったらあとから文句つけれればいいか」って大手企業IT担当者も出てくるかもしれない。


近い将来付けるそうだが、生ログはやっぱりあったほうがいい。私のような中小なところだと、生ログを全部見たって時間がかからない。ある意味、そこで直感を得られるのが中小サイトの有利点で、生ログをつぶすのは中小つぶし、ひいては技術者の独立可能性つぶしにつながる。

生ログは「少しわかりにくいけど探せばみつかる」ぐらいの形でいいので残しておいて欲しい。「オレが作りたいシステム」がある有能な技術者ほど、独立への憧れを持つもの。独立を突っぱねるよりその可能性を緩く認めてそういう技術者を周りに留めるほうが御社に新しい技術を持たらしますよ!…ってのは、安請け合い過ぎるか。


あと、今回のにはあまり関係がない要望だが、aboutme2cocologで付けたココログの記事 ID からココログのその記事に飛ぶ機能、先のは自分のブログ内でしか効かないが、ココログ全体で効くようにするのはコードとしてはむしろ先のものより簡単にでき、負荷もほぼないはずだから、公式にサポートして欲しい。


ココログのコードに依存しないように今回のコードを書くことは不可能ではないんだけど、一般化しすぎるとセキュリティの問題が怖い。このコードはサイト間を渡っていくループの側面を持っている。マインクラフトで学んだ(思い出した)面も大きいが、ループが存在するとリレー式計算機みたいなことができる。電脳侵食みたいなことがあったときに、まさかの方法として、そういう機構を使えるようにしておくのはサイバーパンク小説としてはおもしろそうだけど、今そこに凝っても大した意味はない。そういうのを本気で必要と考える人が現れた未来[とき]に、それができる人材がいるというほうが大切で、それには「組織」がやっぱり必要で、この「個人サイト」の役割を越えてるかな…と。


ネットのアクセス数ってのはどうもおかしなことがあって、広告のリンクをクリックすると、なぜか、そのサイトから自分のブログへのアクセスが増えたりすることがある。「偶然」でしかないと強弁されれば証拠はなく放置するしかなかったが、今回のアクセス解析の改変はそのあたりの証拠をさらに得にくくするものという側面がある。わかってるはずなのに何も言ってこないから、皆それでいいってことにされて行政が介入できなかったのが、わかってないんだからインフラ側はもっと責任感を持てという話になるのかな?まぁ、普通、そうはならないよな…。


参考

新アクセス解析の機能追加予定: お知らせココログ:@nifty》。こちらに生ログや自サイト内の自分のアクセスを除外する機能を付け加える予定と書いている。
初公開: 2014年03月20日 03:46:54
最新版: 2014年07月17日 16:40:14

2014-03-20 03:46:54 (JST) in JavaScript, ウェブログ・ココログ関連 | | コメント (8) | トラックバック (0)

JavaScript」カテゴリ内の最近の記事

ウェブログ・ココログ関連」カテゴリ内の最近の記事

批評や挨拶のためのネットコミュニティ

  • はてなブックマーク(って何?) このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク
  • Twitter (って何?)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/93568/59322719

トラックバックのポリシー

他サイトなどからこの記事に自薦された関連記事(トラックバック)はまだありません。
» JRF のソフトウェア Tips:Cocolog_Pro_Analyzer:ココログプロ用アクセス解析補助 Greasemonkey (この記事)

コメント

maple 初公開:Cocolog_Pro_Analyzer-20140320.user.js。バージョン 0.01。

年度末のかなりの突貫工事。できたてホヤホヤだが、少しでも早く公開したほうが、3月末日までにバグが取れる可能性が広がるかと思って、まず公開してみた。

投稿: JRF | 2014-03-20 03:55:32 (JST)

mobaq 更新:Cocolog_Pro_Analyzer-20140321.user.js。バージョン 0.02。

初公開:count_access-20140321.pl。バージョン 0.01。

JSON ダウンロード後の後処理を行う Perl スクリプトの例として count_access.pl を公開し、そのほか、記事にいろいろ書き足した。count_access.pl に関しては「例題」レベルのコードなので「パブリックドメイン」でいいはず。

投稿: JRF | 2014-03-21 05:30:53 (JST)

ticket 更新:count_access-20140701.pl。バージョン 0.02。

数値にコンマ(,)が使われている場合にそれを除く処理を足した。うちはアクセス少ないから気付くのが遅くなった。orz

投稿: JRF | 2014-07-01 09:19:11 (JST)

yacht 初公開:count_access_2-20140717.pl。バージョン 0.02。

JSON がどうもうまく取得できない。適当に wait を入れないとダメっぽい。しかたなく、JSON を諦めて、手でコピペしていったデータで count_access するスクリプトも書いておいた。

投稿: JRF | 2014-07-17 16:44:28 (JST)

event 更新: Cocolog_Pro_Analyzer-20151026.user.js。バージョン 0.03。

@grant 文を足しただけで、内容的には何も変わってない。というか、初公開当時から、私のところの Greasemonkey のバージョンがかなり古かったため @grant 文が必要になってることに気付かなかっただけっぽい。

投稿: JRF | 2015-10-26 22:14:49 (JST)

basketball 更新:Cocolog_Pro_Analyzer-20171117.user.js。バージョン 0.04。

Greasemonkey 4.0 に対応するための緊急リリース。ただし、「集計」「全集計」の機能はうまく動いていないようだ。以前からだいたいそうなのでもうその機能を使っている人はいないと判断しているが、…申し訳ない。

投稿: JRF | 2017-11-17 03:17:01 (JST)

gasstation 更新: Cocolog_Pro_Analyzer-20171119.user.js。バージョン 0.05。

Greasemonkey 4 にバグがあるのか、私のプログラムにバグがあるのかよくわからないが、バージョン 0.04 は iframe まわりで妖しい動作をしていた。iframe 内では処理をしないようにしておいた。

投稿: JRF | 2017-11-19 21:12:59 (JST)

freedial 更新: Cocolog_Pro_Analyzer-20171124.user.js。バージョン 0.06。

「集計」「全集計」の機能も動くようにしてみた。「完璧」とは程遠いと思うが。

なお、Greasemonkey のバグなのか、ときどき Greasemonkey スクリプトの実行がされないことがあり、そのため集計の途中で止まることがあった。その場合は、落ち着いてその段階のページをリロードしてみると再度、途中から動き出すようだ。そうなったときはお試しあれ。

投稿: JRF | 2017-11-24 10:31:41 (JST)

コメントを書く



(メールアドレス形式)


※匿名投稿を許可しています。ゆるめのコメント管理のポリシーを持っています。この記事にまったく関係のないコメントはこのリンク先で受け付けています。
※暗号化パスワードを設定すれば、後に「削除」、すなわち JavaScript で非表示に設定できます。暗号解読者を気にしないならメールアドレスでもかまいません。この設定は平文のメールで管理者に届きます。
※コメントを書くために<b>ボールド</b>、<pre>詩文やソースコード</pre>、<a href="">リンク</a>、その他のHTMLタグが使えます。また、漢字[かんじ]でルビが、[google: キーワード] で検索指定が使えます。


ランダムことわざ: 七転び八起き。