はじめに
今回から「データ発見隊」と題して、さまざまなデータやアルゴリズムの活用に関する話題を連載させていただきます。今回は、ファイルやWebページのアクセスパターンの活用について考えたいと思います。
ファイルの属性
ファイルシステム上にはさまざまな種類のファイルが混在しているため管理が難しいものです。たとえばRuby on Railsでサイトを構築する場合、HTMLファイル、プログラムファイル、ライブラリ、各種設定ファイル、データベース、ログファイルなど、さまざまなファイルが使われます。また、Ruby on Railsが自動的に生成するソースファイルもあれば、ユーザが自力で作成するソースファイルもあります。これらごちゃまぜなファイルを適切にバージョン管理やバックアップすることは簡単ではありません。
しかもUNIXやWindowsのファイルシステムは、ファイルの大きさ、作成時刻、最終アクセス時刻のような限られた情報しか保存していませんから、これら以外の属性を簡単に調べたり利用したりすることができません。
作成時刻やパーミッションのような一般的なファイル属性以外に、次のような属性でファイルを区別できると便利なことがあるでしょう。
利用する頻度
たくさん使うのか/少しだけ使うのか
重要度
貴重なのか/どこにでもあるのか
利用のパターン
一時的に使うのか/長年にわたって使うのか
作成パターン
編集を行うのか/参照のみ行うのか
来歴
ダウンロードしたのか/自分で作成したのか
ファイルの使われ方や重要度などが簡単にわからないことは、考えてみると不思議です。どこにでもあるサンプルプログラムなのか苦労して作った大事なプログラムなのか区別がつかないのは悲しいですし、長年にわたり編集されてきた文書と拙速に作られた文書では重みが違ってほしいものです。
さまざまなファイルの属性をうまく活用すると、重要なファイルを優先的にバックアップしたり、自分が撮った写真だけを抽出したり、出先で必要になりそうなファイルをまとめておいたりすることが簡単にできるようになるでしょう。
アクセスパターンを調べてみる
UNIXやWindowsのファイルシステムでは、ファイルが誰にどのようにアクセスされたかという履歴情報は記録されません。そのような情報を利用したい場合は特別な方法で管理する必要があります。
筆者はメモや予定表のような個人的な情報をすべてWikiで管理しており、編集を行うたびに別ファイルとしてセーブするようにしているので、セーブされているファイルをリストすることによって編集履歴を知ることができます。図1 は、筆者のWikiページのタイトルと更新履歴を視覚化したものです。バーコードのようなグラフの横軸は時刻を示しており、黒くなっているところでファイルが更新されたことを示しています。グラフの左側ほど新しいアクセスを示しており、8ヵ月ぶんのアクセスパターンが表示されています。
図1 ページごとのアクセスパターン
図1のアクセスパターンを見ると、
「Git」のページを一月前に集中的に編集したこと
URL記録システムについて最近考えていること
「TODO」ページが頻繁に更新されていること
などが一目瞭然です。「 Clip2Net」などの単純なブックマーク的なページは編集が少ないので白いままになっています。
このように少なくとも自分のメモなどに関しては、正確な作成時刻/最新更新時刻よりも、いつごろどのようにアクセスしているかという情報のほうが重要だと言えそうです。
ファイルに対してもこのような属性を手軽に利用できれば、昔よく使ったファイルを検索したり、人からもらったファイルと自分で作った入魂のファイルを区別したりすることが簡単にできるようになるでしょう。
アクセスパターンの解析
世の中の複雑な事象の多くは「冪乗則(べきじょうそく) 」に従うことが知られています(参考文献1 ) 。冪乗則とは関係をf(x)=axkという式で表現できるもので、「 文章中でk番目に多く出現する単語の出現頻度は1/kに比例する」という「Zipfの法則」や、富豪の収入分布、書籍の売上分布など、さまざまな統計データが冪乗則に従う冪分布(べきぶんぷ)になっていることが知られています。
冪乗則に従うデータを両対数グラフ上にプロットすると直線になります。また、両対数グラフ上で直線になる関係は冪乗則に従うと言えます。前述のWikiページへのアクセス回数やアクセス時間の間隔などを両対数グラフ上にプロットすると図2~3 のように直線になり、分布が冪乗則に従っていることがわかります。
図2 全Wikiページのアクセス間隔の分布
図3 全Wikiページのアクセス回数の分布
一方、個別ページへのアクセス間隔は冪分布にはなっておらず、ページの特徴に応じてパターンが異なるようです(図4~5 ) 。
アクセスパターンの解析を行うことにより、周期的にアクセスするページ/突発的にアクセスするページなどを自動的に区別できるでしょう。
図4 「 TODO」ページのアクセス間隔の分布
図5 「 Git」ページのアクセス間隔の分布
セレクトブクマ
日常的に多くのユーザからアクセスされているWebページは「重要である」と考えられますし、一時的にでも多数のユーザからアクセスされるWebページは「人気がある」と言えるでしょう。Webページのアクセスパターンがわかればページの性質をある程度知ることができると思われます。
他人のWebページのアクセス状況を正確に知ることはできませんが、はてなブックマークやdel.icio.usのようなソーシャルブックマークサービスの情報を使うと、Webページがどのようなパターンでアクセスされているかをだいたい知ることができます。
誰にとっても有用なリファレンス情報などのページは一定の頻度でブックマークされ続けるでしょうし、一時的に人気が出たページの場合は短い期間に集中してブックマークされる可能性が高いと思われます。
Webページがいつソーシャルブックマークに登録されたかという情報を調べることにより、そのページがどちらのタイプに近いかを知ることができると考えられます。
慶應義塾大学の上野大樹氏は、ソーシャルブックマークへの登録パターンを解析することによって、一時的に人気のあるページよりも定番的に有用なページを抽出できる「セレクトブクマ」( 参考文献2 )というシステムを提案しています。
図6 は「秋葉原事件」に関するページのブックマーク日時を示したものです。このように、特別な事件などに関連するブックマークは登録される日時が集中し、その後はブックマークされることがほとんどありません。一方、汎用の情報として有用なページは、図7 のように長期間にわたりブックマークされ続ける傾向があります。
図6 「 秋葉原事件」に関するページのブックマーク日
図7 「 Googleサービスの使い方」に関するページのブックマーク日
上野氏の実験によれば、ブックマーク日時パターンの解析によって長期的にブックマークされているページを抽出することにより、有用なページを見つけやすくできることが実証されています。ソーシャルブックマークの登録数やタグが重要であることはよく実感されていますが、登録のパターンからも有益な情報を抽出できることは興味深いところです。
まとめ
GoogleやMac OS XのSpotlightのようなキーワード検索を誰もが利用するようになり、その有効性も限界もよく知られるようになってきました。より有効にキーワード検索を行うため情報に「タグ」をつける方法が最近ポピュラーになってきていますが、人手でタグをつけるのは面倒ですし、一貫したタグの付加は大きな心理的負担になってしまいます。
検索のための特別な作業を行わず、ファイルの属性やアクセス履歴のような暗黙的な情報を効果的に利用できる検索方法が望まれます。手持ちのファイルを検索する場合、「 古いファイル」「 大きなファイル」のようなファイル属性や、「 昔よく使ったファイル」「 大事なファイル」のようなアクセスパターンなども併用すると、キーワード検索の限界を越えた効率的な検索が可能になることは間違いありません。ファイル名も内容もよく覚えていない場合でも「2年ぐらい前にちょこちょこ編集していたRubyプログラム」のようなファイルがすぐに見つかるでしょう。
近い将来にUNIXやWindowsのファイルシステムの基本機能が大きく変化することはないでしょうから、このような検索を行うためには特別の工夫をする必要がありますが、ちょっとした手間で検索効率が上がるのであれば検討する価値は十分あると思います。
次回はファイルの秘密度、ファイルの重要度など、アクセスパターン以外のファイル属性の活用について考えてみたいと思います。
参考文献
1.増井俊之 「 なんでもフラクタル」 、WIRED VISION Blog 、2007
2.上野大樹、安村通晃「セレクトブクマ: ソーシャルブックマークの時間情報を用いた情報フィルタリング検索」 、情報処理学会第50回プログラミング・シンポジウム、pp.9-16、2009