makoto_fujimotoのblog

株式会社進角
代表 藤本信のブログです
どうぞよろしくお願いします

カテゴリ: ビッグデータ

(当社メンバーの検証記事です)

Apacheのアクセスログフォーマットを改良することで会員サイトのユーザIDをログに記録することが可能です。アクセスログにユーザIDが記録されていればCookieベースより安定的にユーザ単位でアクセス履歴が追跡しやすくなります。


(1)Apache のアクセスログの設定を変更
/etc/httpd/conf/http.conf
----------------------------------------
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
----------------------------------------
 ↓↓↓
----------------------------------------
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{MEMBER_ID}e" combined
----------------------------------------
※変更後にApacheを再起動します。


(2)ユーザIDを記録したいページで環境変数にユーザIDを代入
phpの場合、以下の記述を追加します。
----------------------------------------
<?php
// 環境変数に値を書き込み
apache_setenv("MEMBER_ID","MyID012345");
?>
----------------------------------------
※ここではユーザIDを直接書いていますが、実際に導入する場合は、セッション変数などに格納したユーザIDを代入します。


アクセスログの末尾にユーザIDが追加されます。
-- 変更前 --------------------------------------
192.168.1.32 - - [18/Jun/2014:14:26:42 +0900] "GET / HTTP/1.1" 200 33215
"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/35.0.1916.153 Safari/537.36"
----------------------------------------
 ↓↓↓
-- 変更後 --------------------------------------
192.168.1.32 - - [18/Jun/2014:14:26:42 +0900] "GET / HTTP/1.1" 200 33215
"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/35.0.1916.153 Safari/537.36" MyID012345
----------------------------------------

Webサイトのアクセスログはインターネットの歴史とともに様々なマーケティングに活用され、マネタイズの情報源にもなって来ました。

おさらいしますと、アクセスログは基本的にIPアドレス、閲覧ページ、ブラウザ種類、リファラー(直前に見たページ)、日時等を記録したものです。このアクセスログを解析することで、人気の高いページや混雑している時間帯が分かりますので、販促活動やWebサイトの改善に利用できます。

標準のアクセスログは、ある程度の匿名性があるので、IPアドレスを元に個人の動向をトレースし続けたり属性の分析を行うには不充分です。一般家庭用プロバイダ契約ではIPアドレスが随時変わる可能性がありますし、企業組織ではゲートウェイとなるIPアドレスが複数のPCで共有されます。

したがって、個人やある種の属性を元にしたアクセス統計を行うには、個人をトレースし続ける仕組みと別のデータベースとのリレーションが必要になります。

10年以上前になりますが、個人的に「将来はログ解析がユーザ別に行われるようになる」と予想していました。当時予想の域を出なかったのは、コンピュータの処理能力とストレージの容量が十分とは言えなかったからです。

例えば100ページ存在するWebサイトの各ページ毎のページビュー統計を行うには、一度の解析による結果のレポートは100項目ですみますが、1000人のユニークユーザ別にレポートを出すには単純に1000倍のコンピュータリソースが必要となり、結果も1000人分出力されます。幸いなことにムーアの法則が期待通りワークし続けたことで、現在この程度のログ解析処理はそれほど難しいものではなくなりました。

しかしながら1000人分のログ解析結果を紙に印刷して評価するのは非現実的ですので、解析結果の保存と二次統計や検索性が新たに必要となります。

アクセスログから個別ユーザをトレースし続けるソリューションについては、Apacheのmod_usertrackを利用したり、各種商用ログ解析ソフトで実現できます。これらは基本的にブラウザのCookieを利用して、ユーザとログを結び付ける仕組みで、アクセスログにユーザのブラウザが持つユニークで永続性※のあるCookie値を記録するような拡張を行います。

このユニークなCookie値が付加されたアクセスログでは、AさんBさんといった匿名の識別は可能ですが、氏名、年齢、性別、職業といった属性を関連づけるにはもう一工夫必要です。そうです、会員系サービスなどで個人情報を記録する際、データベースにもCookie値を記録するようにすればよいのです。これによって会員とアクセスログのリレーションが出来ますので、サイト運営者は個人あるいは特定属性を持つユーザ別の動向を知ることができるようになるのです。

まとめますと、コンピュータの性能向上によって、通常のアクセスログ×会員数という膨大なアクセス解析が可能となり、さらに昨今はAjax技術でページ遷移を伴わないユーザ操作が大量にサーバサイドに記録(しかもユーザの識別が可能な状態で)されるようになっているので、さらに高度な分析も可能になりました。このようなアクセスログ解析こそ、まさにビッグデータ化を先行した技術と言えるのではないでしょうか。

なお今回触れませんでしたが、携帯やスマホを始めとするモバイルデバイスは機器固有のIDを持っていて、そのIDをアクセスログに直接記録する事もできるので、更に個人の動向がトレースしやすくなっています。ある意味怖いですが。。。

※実際のCookieはユーザが任意に削除や編集が可能ですので、あまり永続性が高いとは言えません。


↑このページのトップヘ