A Day In The Boy's Life -125ページ目

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

アクセスログ解析ツールには、様々なものが出ていて何故いまさらAnalog?というところもあるのですが、歴史が古いツールだけあって、柔軟性に富んだ機能があります。


個人ブログのアクセス解析をしたいといった場合は、Google AnalyticsやYahoo!アクセス解析などを使っていれば十分だと思います。

Analogなどのツールに頼るのは、そういったオープンサービスが使えない状況です。

例えば、企業内ポータルのアクセスログ解析を実施したいといった場合があります。


ここでは、Analogの使い方や解析結果のレポート(HTML)の見方を詳しく解説すると言うよりは、オリジナルのアクセスログ解析を行うために、Analogをどう使うかというところを中心に書いています。

なお、ここではLinux上でAnalogを使い、WebサーバーにはApacheを使っているものとしています。



Analogをインストールする


ソースのダウンロードですが、本家のサイト より行えます。

バージョンは最新(といっても2004年にリリースされたものですが)の6.0を使います。


ソースを解析用サーバー上に上げたら、展開してコンパイル(といってもmakeだけ)します。


# cd /usr/local/src/analog-6.0

# make

# ls -la
- snip -

-rwxr-xr-x 1 root root 522049 Jul 21 11:59 analog

- snip -

analogのソースディレクトリ内にanalogという実行プログラムができていれば完了です。



Web上に解析結果を表示してみる


まずは、Analogにアクセスログ解析をさせてみて、Web上に解析結果を表示させてみたいと思います。

アクセス解析を実行するには、先ほど作成した実行プログラムに渡すための設定ファイルを作成する必要があります。


デフォルトでは、Analogのソースディレクトリ直下にanalog.cfgという設定ファイルができています。

これを利用してもいいですが、非常に設定が細かくわかりづらいので、オリジナルの新しい設定ファイルを作ることにします。


デフォルトの設定ファイルには、検索エンジンに関する設定などが盛り込まれてたりしますが、企業内ポータルサイトのアクセスログ解析では、そのようなものは必要ないでしょう。

Analogにはリクエスト数の解析やファイルタイプの分析、検索エンジンや検索ワードによる分析も行えたりしますが、ここでは純粋にどのページにどれだけのアクセスがあったのかを調べるために、日時ごとにどれだけのアクセスがあったのかと、そのアクセスを細かいリクエスト単位で見ていく設定を追加することにします。


作った設定ファイルはこんな感じです。


#ログファイルのパス
LOGFILE /var/log/httpd/access_log*

# Analogの全てのレポートをOFFにする
ALL OFF

# 概要や解析日などの情報を表示しなくする
GENERAL OFF
DESCRIPTIONS OFF

# 日別のリクエスト数レポートを表示する
DAILYREP ON

# リクエスト別レポートを表示する
REQUEST ON

# リクエスト別レポートの中に表示するのは最低1リクエストあったファイル
REQFLOOR 1r

# パラメータが違うなどリクエストも全て表示する
REQARGSFLOOR 1r

# リクエスト集計の対象はHTMLファイル、PHPファイル
REQINCLUDE *.htm*,*.php*

# リクエスト数のみを表示
REQCOLS R

# レポートの表示は日本語で表示
LANGUAGE JAPANESE


最初のLOGFILEディレクティブには、Apacheのログファイルのパスを指定します。

最後にアスタリスクをつけることで、ログローテーションさせた全てのログファイルも対象に含まれるようにしています。

大量のログファイルがあった場合、解析に時間がかかることもあるため、予め解析対象のログファイルを固定して実行するとか、ログローテーションを工夫して、解析単位(例えば毎日とか月ごととか)ごとにログファイルを作成するようにしておけばよいと思います。


予断ですが、Analogに解析させるアクセスログは、時系列にそろって無くても問題ありません

ですので、存在する全てのログファイルを1ファイルに結合させて、解析させても問題ないですしし、負荷分散をしていて、同一時間帯に異なるサーバーにあったアクセスログを1まとめにしてもきちんと解析してくれます。


- 参考記事

logrotateでローテーションされるファイル名を変更する


logrotateでログファイルがローテーションされない事への対処



次の、ALLディレクティブでは全ての解析レポートを無効にしていますが、その後にDAILYREP(日にちごとのリクエスト数集計)とREQUEST(リクエストごとの集計)を有効にすることで余計なレポートを作成しないようにしています。


REQFLOORディレクティブでは、最低1リクエストあったものを結果のレポートに出力するようにしています。

デフォルトでは、20リクエスト以上ないものはレポートには表示されません

リクエストの総合計にはそれらのリクエスト数も含まれていますが、レポート(HTML)上には細かなリクエストが表示されないので、見る人によっては混乱してしまいます。


REQINCLUDEディレクティブでは、リクエストレポートの解析対象の拡張子を指定しています。

画像ファイルやJavaScriptファイル、faviconなどのリクエストを除きたい場合は、解析対象のファイルを指定しておきましょう。


REQCOLSディレクティブは、リクエストレポートにリクエスト数のみを表示させる設定です。

デフォルトでは、リクエスト数以外にもファイル容量の割合が表示されます。

それほど重要な要素ではないため、リクエスト数のみを表示するように指定しています。

その他にも細かなオプションを指定することができますが、それらはWeb上のマニュアル を参照してください。(リンク先は5.24のマニュアルですが、さほど違いはありません)

準備ができたら、Analogを実行させ解析結果のHTMLファイルを作ってみます。


# /usr/local/src/analog-6.0/analog +F090701:0000 +T090731:2359 +g/home/hoge/org-analog.cfg +O/var/www/analog/analog.html


最初に、+Fで解析対象の開始日時を、+Tで解析対象の終了日時を指定しています。

上記の場合は、2009年7月分ってことになりますね。(年は下2桁のみ指定します)


次に、+gオプションで先ほど作成したオリジナルの設定ファイルを読み込むようにしています。

そして最後の、+OオプションでレポートのHTMLファイルの出力先を指定しています。


これらは、設定ファイル内に記述することもできますが、日にちごとに設定ファイルを書き換えたり出力先を編集するのは面倒なので、Analog実行時に指定するようにしています。



Analogの解析レポート(HTMLファイル)を見てみる


出力したHTMLファイルにアクセスしてみると、まず一番上の項目には、解析結果の概要が出力されます。


A Day In The Boy’s Life-Analogレポート-1


解析対象日時には、2009年7月中のものを指定しましたが、レポート上の解析対象期間は異なっています。

これは、ログの中身を実際に見てみて、期間内で最も古い日時と新しい日時を抽出したものになります。

全体の概要としては、かなり大雑把な数字しか出ていませんので、それほど細かく見るところも無いと思います。


次に、日別のリクエストレポートです。


A Day In The Boy’s Life-Analogレポート-2


サンプルに作ったログが少なかったため、1日分しか表示されていませんが、実際には解析対象に指定した日時のリクエスト数がずらっと並びます。

毎日どれだけのアクセスがあったのかを見たい場合に有効なデータですね。


次に、リクエスト別のレポートです。

こちらは、まず円グラフが表示されます。


A Day In The Boy’s Life-Analogレポート-3


円グラフに続いて、詳細なリクエストごとの数値が表示されます。


A Day In The Boy’s Life-Analogレポート-4


どのファイルにどれだけのアクセス数があったのかがわかります。

ただし、これは解析対象期間での総合計になっています。
日別のリクエスト数レポートを作りたい場合は、analogコマンド実行時ににその日ごの対象期間を指定していき、個別にレポートを作るしかないようです。


また、設定ファイルにて「REQARGSFLOOR」のオプションを指定しておかないと、パラメータが違うリクエストは表示されません

デフォルトでは20リクエスト以上のものだけ表示するようになっていますので、細かくリクエストを解析したい場合は、「1r」を指定して最低1リクエスト以上のものを表示するようにしておくと良いでしょう。


簡単ですが、Analogから出力されるレポートを見ていきました。

個人で使う分には、これだけでも十分かもしれません。

ただ、他のアクセス解析サービスなどと比べるとUIが貧弱だったり、これをそのままエンジニアでもない人に見てくださいというのは少し難しかったりします。


ですので、Analogをあくまでアクセス解析エンジンとだけ利用し、結果の数値を加工してオリジナルのアクセスログ解析が作れるようにしてみたいと思います。



Analogの解析結果の出力形式を変更する


Analogの解析結果の出力形式はHTMLファイルだけではありません。

下記の2つのディレクティブを追加することで、異なる形式に出力することができます。


OUTPUT COMPUTER
COMPSEP ,

2番目に指定しているCOMPSEPディレクティブはデータの区切りを指定しています。

上記の場合は、CSV形式となります。

「\t」を指定すればTSV形式となります。


先ほど作成した設定ファイルのままでは、日別レポートとリクエストレポートの2つを出力するようにしていますが、1つのCSVファイルなどにまとめると、その後に加工することが難しくなるため、設定ファイルを分けて何れか一方のデータのみを取り出すようにした方が良いでしょう。

(DAILYREPまたはREQUESTディレクティブの一方をOFFにする)


上記の変更に伴い、analogコマンドの実行オプションも多少変更します。

# /usr/local/src/analog-6.0/analog +F090701:0000 +T090731:2359 +g/home/work/org-analog.cfg +O./analog-daily.csv


これによって出来上がった日別のアクセスログ解析結果は下記のようになります。


x,VE,analog 6.0
x,HN,[my organisation]
x,PS,2009,07,21,14,31
x,FR,2009,07,21,12,52
x,LR,2009,07,21,13,52
x,SR,239
x,PR,43
x,FL,125
x,NF,31
x,NH,1
x,BT,484365
D,RP,239,43,2009,07,21
D,*BT,P,43,2009,07,21


1番目の列が「x」で始まるところは全体の概要を伝える部分なので無視してかまいません。

日別のリクエスト数のデータは、1番目の列が「D」で始まり、2番目の列が「RP」となっている行です。

上記の場合は、239という数字がリクエスト数です。

ちなみにその次の43と言う数値は、ページ単位でのリクエスト数となっています。


では、もう一方のリクエスト別のCSVファイルも作成してみましょう。

結果は、下記のように出力されます。


x,VE,analog 6.0
x,HN,[my organisation]
x,PS,2009,07,21,14,36
x,FR,2009,07,21,12,52
x,LR,2009,07,21,13,52
x,SR,239
x,PR,43
x,FL,125
x,NF,31
x,NH,1
x,BT,484365
r,*f,1R,r
r,lR,1,15,/analog/analog.html
r,lR,1,10,/analog.html
r,lR,1,8,/src/hoge.php
r,lR,1,4,/test.html
r,lR,1,1,/src/formtest.html


こちらも1列目が「x」のところは全体概要のところで、データとして注目するのは、1列目が「r」で2列目が「1R」となっている行です。


HTML以外に様々な形式でアクセスログを解析できるので、Analogをあくまで解析エンジンとだけ動作させ、結果を加工して別の形式で出力させるなどといった柔軟性があります。

ここAmebloのアクセスログ解析も、Analogを使っていると聞いたこともありますし。


もちろんこういったアクセスログ解析は自前で作ることもできますが、せっかくですのでこういった機能を利用して楽にオリジナルのアクセスログ解析を作ってみては如何でしょうか。





念願だったネットブックを買いました。

買ったのは、ASUSのEeePC1008HA

VAIO TypeWがもうすぐ発売と聞き少し悩んだのですが、すぐに手に入らなさそうな感じですし、スペックを見ると今回のEeePC1008と大差が無いことから、こちらを選択してみました。



EeePC 1008HAの外観レビュー


買ったのはブルーです。

貝殻ボディと称されているように全体に丸みある外観になってます。

光沢があるので、指紋や汚れが若干目立ちます。


A Day In The Boy’s Life-EeePC外観-1


店頭では白が展示されていたのですが、個人的な意見として白は少し安っぽく見えてしまいました。

色はブルー、ホワイトのほかにも、ピンクとブラックが用意されています。


箱の方もすっきりした感じで、バック感覚で持って帰れます。

これにPC入ってるの?って感じなぐらい小さくまとめられてます。

光学式のマウス(後述)に加え、少し薄めですが保護ケースも入っています。


A Day In The Boy’s Life-EeePC外観-2


5年ほど愛用している東芝dynabook C8(A4ノート)ととの比較。

薄さも含めて全体的に一回り小さい感じ。

重さは1.1kgしかないので、全然違いますけどね。


A Day In The Boy’s Life-EeePC外観-4


起動するとこんな感じに見えます。

ディスプレイは10.1型ワイド。

ただ、光沢処理されているので背景が写りこみ環境によっては見づらくなるかもしれません。


A Day In The Boy’s Life-EeePC外観-3


デスクトップのスクリーンショット。

解像度は1024×600なので、Webサイトを見る分には横幅は気にせずに使えます。


A Day In The Boy’s Life-EeePCデスクトップ


タッチパッドは本体と一体式で、その部分だけ表面に凹凸があります。

しかしこれは、好みが分かれそうな感じです。(後述)

また、タッチパッド上で2本の指でピッチイン、ピッチアウトの操作が可能で、画面の拡大縮小がこれだけでできるのは、小さな画面ならではのネットブックとしてはありがたい機能です。

A Day In The Boy’s Life-EeePC外観-6


光学式のマウスも本体の箱の中に収納されています。

ただ、USBポートが2基しかないため、イーモバイルとマウスつないでしまうとUSBが使えなくなります。


A Day In The Boy’s Life-EeePC外観-5


側面にはSDカードスロットがついていることが個人的にはうれしかったりします。(SDHCにも対応)

デジカメで取った写真をすぐにEeePCのほうに移すこともできます。


A Day In The Boy’s Life-EeePC外観-7


最後に、セットで加入したイーモバイルのUSB型のデータカードと一緒に。(上り1.4Mbps、下り7.2Mbps)

小さいのでなくしそうですが・・・。

A Day In The Boy’s Life-EeePC外観-8



EeePC 1008HAの総評


個人的な意見としては十分に満足してます。

ネット専用機と考えれば十分なパフォーマンスを発揮してくれていますし、キータッチなども自分好みで使いやすかったです。


ただ、ここは少し残念と言うところが2点。


1. タッチパッドは若干使いにくい


先ほど写真にあるように、タッチパッドが本体と一体式になってます。

そのままプラスチック触って操作している感じです。

これが少し指に引っかかり、操作がしづらい場合があります。特に指が少し湿ってたりすると、かなり引っかかる。


2. 電源ケーブルが抜けやすい


これは、自宅で充電しながら使うというシーンぐらいでしょうけど、ケーブルが結構抜けます。

電源の穴も通常のものより細いタイプなので致し方ない部分もあるかもしれませんが。


他には特に気になる点はありませんでした。


予断ですが、セキュリティ対策ソフトはKINGSOFTのInternetSecurity を入れました。

最近、ネットブック専用版もリリースされ、おまけに無料。

無料版の場合は、広告が表示されたりしますが、使っている上で特に気になるほどのものではありませんでした。


全体として、個人的には先に書いたように性能的に十分満足できるものだったことや、SDカードスロットが使える点、軽くて持ち運びやすいというように、総合的に判断すると満足のできるものだと思ってます。




ふと、最近そういうものが失われつつあるなと思ったりしました。

人間には3大欲求があると聞いたことがありますが、それら本能的なものを超える別の欲求がなかなか沸いこないなと。


今でもエンジニアの仕事は好きで、飽きもせずに1日中ソースを見たりコマンド叩いたり、してるわけですがどこか中途半端に怠けてしまっているところがあるなと感じたりします。

仕事において怠けることは悪くないと自身思ってたりしますが、怠けたことによって得られる時間やパワーをほかの事に回すまでの力が随分と失われているような気がします。



本能を超えた欲求


入社したての頃は、あまりあれこれ考えず目の前にある興味にひたすら熱中をしていました。

特に食事を取らなくても、睡眠時間が削られてもそれをやっていることでの幸せというものを感じられたりもしてました。

それは独りよがりの満足であったともいえますが、今ではその独りよがりの満足さえも求めていないと感じてしまうと少し寂しい気持ちにもなったりします。


眠いと思うと寝てしまいますし、美味しいものを食べたいと思うとそれなりのものを食べれる経済的余裕もあったりします。

そういったことによって徐々に阻害されだしてるのかもしれません。

歳を重ねると、全てがそうなるというわけではなく、それでもそんな本能に打ち勝つ欲求を持ち続けているすごい人がいることも知ってます。


中には、食事には興味ないとか、睡眠なんて3時間ぐらいあれば十分とか言う人もいますけど、その感性は人それぞれなので、全ての人が同じ方向に喜びを感じるわけではないでしょう。

それによってその人は人生を損してると言うのも違って、それによって得られる別の幸福をその人は味わっているだけのことなのだと思います。

総じて100%になるのであれば、喜びを感じる割合をどう分配するのもその人の自由です。

凄いエンジニアの人の中には「お前はソースコードを書く喜びを知らないなんて人生損をしている」と思ってる人もいるかもしれません。


3大欲求に縛られず、人間はもっと様々な欲求を持っていると思います。

それらの欲求が徐々に満たし達成していく過程で、それを築くための欲求が徐々に失われていくのかもしれません。

美味いものを食べたいから頑張ると考えていた場合、その美味いものを食べてしまったら頑張ろうと言う気力は徐々に失われていくかもしれません。

社会的地位を得たいと頑張って、その地位に上り詰めたとき、次の目標を見失うかもしれません。


自分としては、そういったことを恐れているのかもしれません。

満足することによって、守りに入ってしまいそこで歩みを止めてしまうことに。

なので、本能を超えるような別の欲求を持ちたいと思っていたり。


本能を超えた欲求と言うのは、尽きることの無い無限のパワーを得られるようなものという印象を受けますから。



本能を超えられない興味


例えばあるソフトウェアを作ってみたいという欲求が出てきても、それを本当に実現するためには多大な労力を要するわけです。

その労力を考えたときに、別の欲求を我慢できるかどうかがそれを乗り切れるかどうかの鍵になるのではと感じます。

そこで、面倒だとか今日は他のことしたいからとかでなかなか手がつけられないものに対して、それが成功するとはあまり思えません。


それをやりきりたいと思う情熱が、本能的な欲求に打ち勝てるのかと考えたときに、そのパワーがなかなか得られなくなってきました。

すべてのことに無気力になっていてると言うわけではなく、こうしてブログを飽きもせずに書いているように、書きたい欲求と言うのは今でも強く持っています。

しかし、子供の頃に目に様々なものに興味を向けていた感情というものは、今やごく一部のしかもより安全なものだけをえり好みするなどといった、限られたものへ絞る癖もでてきます。

例え絞った場合でも、その絞った一点に向けられる爆発的パワーと言うよりは、その他の領域を無難に均等に割り振っただけ、という感じになってしまっています。


それを自分ができるかできないかの判断基準の一つが、今やそこになってきています。

本能的欲求を超えられない浅い興味と言うのは、それを成しえるパワーを得られないだろうから、それを成功するまで続けることはできないだろうな、と。


こういった本能的な欲求に打ち勝つ欲求と興味と言うものを持つためにどうすればいいのか、と言うことをしばしば考えたりもします。

その一つは、他人の欲求も自分の欲求に変えてしまうことがあるのかな、と感じたりもします。

誰かの幸せを自分の幸せにもつなげてしまうと言う感じに。


ただ、この辺りは自分自身まだはっきりとわかっていないところ。

その本能を超える欲求を達するパワーを得るためにどうすればいいか考え行動していきたいと思うこのごろです。