プログラミング工房 > Ruby > サンプルスクリプト >

ロリポップ・ウェブサーバのアクセスログを解析

 このサイトを公開している昔このサイトを公開していたレンタルサーバのロリポップはデフォルトでアクセス解析機能が使え、これはこれで便利なのですが、かゆい所にも手が届くと言えるほど高機能ではありません。外部の無料サービスを利用すれば、ページに小さなバナーを表示したりするのと引き換えにいろいろなアクセス情報がゲットできるのは知りつつも、せっかく趣味でプログラミングをやっていて、Perlに匹敵するほどお手軽な文字列処理が可能なRubyに手を出したんだしと思い、試しにログを解析して検索エンジンごとにどんなキーワードで自分のサイトのどのページに飛んできたかを調べるスクリプトを書いてみました。

 Rubyについては、少しずつ使えるようになってきた今では感じませんが、実際さわってみるまでは、ソースのブロックを表すのにカッコを使わず"end"などの単語を使わなければならないのが面倒で目障りに感じたり(カッコも使えることを知らなかった)、イテレータとかいうよく分からない機能とそれに渡すブロックの見慣れない引数の書き方("|a|"と書く部分)に必要以上に難しいという印象を持ってしまったりして、自分の趣味には合わない言語だと決めつけていました。しかし使い始めてみるとそんなことはなく、比較的楽に覚えられる強力な言語だと分かり、上に書いたことは逆にRubyの好きな所に変わってしまいました。


スクリプトの起動方法

 アップしたアーカイブには"analyze.rb"と"lolipopaccesslog.rb"というRubyスクリプトと"a.bat"というバッチファイルが入っています。これらのファイルを同じフォルダに置き、ロリポップのユーザページからダウンロードしたログファイル(??????.log)を"a.bat"にドラッグ&ドロップすると、結果が"result.html"ファイルに保存され、自動的に拡張子に関連付けされたソフトで開かれるようになっています。ログファイルは一度に複数処理できます。面倒でなければバッチファイルを介さずにログファイル名を引数にして"analyze.rb"を直接実行してもかまいません。

 スクリプト内ではアクセスログ一件分のデータ(=.logファイル内の1行)を「レコード」(record)と呼んでいます。

>> ソースを見る
  analyze.rb
  lolipopaccesslog.rb
>> ダウンロード