データ発見隊

第2回 ファイル管理の工夫

この記事を読むのに必要な時間:およそ 4 分

秘密度,重要度についての計算

現在のファイルシステムでは「ファイルの重要さ」「ファイルの秘密さ」を示す属性が欠けています。Webからダウンロードしたファイルも自分が苦労して作ったファイルも同じ扱いを受けており,コピーも削除も同じように実行されてしまいます。がんばって作ったファイルは簡単に削除できないようになっていてもよさそうなものですが,操作をちょっと間違えると入魂のファイルであってもすぐに消失してしまいます。大事なアイデアを書いた秘密ファイルは軽々しく扱われるべきではありませんが,ファイルシステムの上では重要でないファイルと同じように扱われてしまいます。前回紹介したようなアクセス履歴を利用すれば,自分がよく参照/編集しているファイルを知ることができ,そのファイルが重要であると判断して間違いなさそうですが,画像ファイルなどの場合,重要なものなのかどうかをアクセス履歴から判定できないかもしれません。

画像の内容を調べてもそれが自分にとって重要かどうかを判定することはできませんが,誰もが持っているありふれた画像であればそれほど重要でない可能性は高いと考えられるでしょう。画像でも普通のファイルでも,それがどの程度ありふれたものなのかを調べることができればその重要度を推測することが可能だと思われます。さまざまなユーザがどのようなファイルを持っているのかという情報を共有できれば,ファイルの重要度を判断できるようになるでしょう。

たくさんの人によってソーシャルブックマークに登録されたURLは重要なサイトだと判断できるように,多くの人が,手持ちのさまざまなデータについてハッシュ値をソーシャルブックマーク的なシステムに登録するようになれば,あるデータがたくさんの人に共有されているかどうかを登録数で判定できるようになり,これをもとにして情報の重要度が判定できるようになります。複数の人から同じハッシュ値が登録されている場合は誰もが持ってるデータだと判断できるので,そのデータは重要でないということがわかります。

HashInfo.com

このような考えに基づき,手持ちのファイルのハッシュ値を登録することでデータの重要度を判断できるようにするHashInfo.comというサービスを作ってみました。各ユーザは自分のファイルシステム内のファイルのSHA1値を計算してHashInfo.comに通知します。多数のユーザが自分の手持ちファイルのハッシュ値を登録することにより,手持ちのファイルがほかのユーザとどの程度共有されているかがわかるようになります。

HashInfo.comからhashinfoコマンドをダウンロードして起動すると,次のようなヘルプが表示されます。

% hashinfo    # ヘルプを表示
% hashinfo path     # 指定されたファイル/フォルダを登録
% hashinfo -p [pat] # patにマッチするファイルを登録(locate使用)
% hashinfo -q file  # ファイルの登録数を知る
% hashinfo -h file  # ファイルのハッシュ値を知る
% hashinfo -l       # ローカルのデータベースの内容をリスト
% hashinfo -c       # ローカルのデータベースを消去

ローカルマシンでファイルを指定してhashinfoを起動すると,指定したファイルのSHA1値が計算され,値のリストがHashInfo.comに通知されます。

% date > date.txt
% hashinfo date.txt
processing date.txt...
3163e7f28bda9917532e269c21e7eb6cc5918184
Total 1 files processed
Uniq: 1, Dup: 0, Collision: 0
1 file(s) registered to hashinfo.com
%

-qオプションを指定してhashinfoを起動すると,指定したファイルが何個HashInfo.comに登録されているかがわかります。date.txtはユニークなファイルなので「1」が返ります。

% hashinfo -q date.txt
1
%

空のファイルを作ってhashinfoを起動すると,次のように空ファイルのSHA1値を計算してHashInfo.comに登録します。自分のマシンで空ファイルを処理するのは今回が初めてなので空ファイルのSHA1値をHashInfo.comに通知しますが,-qオプションで調べてみると空ファイルは7台のマシンから登録されていることがわかります。

% touch emptyfile
% hashinfo emptyfile
processing emptyfile...
da39a3ee5e6b4b0d3255bfef95601890afd80709
Total 1 files processed
Uniq: 1, Dup: 0, Collision: 0
1 file(s) registered to hashinfo.com
% hashinfo -q emptyfile
7
%

同じファイルに対して再度hashinfoを適用した場合,すでに処理済みなのでHashInfo.comへの通知は行われません。

% hashinfo emptyfile
Total 1 files processed
Uniq: 0, Dup: 1, Collision: 0
%

たくさんのユーザがHashInfo.comを利用するようになれば,ファイルがどの程度ポピュラーなものかを知ることができるので,データが重要なものかを判定する基準として利用できるようになるでしょう。

ファイルのバックアップを作成する場合,自分にとって重要かどうかを基準にバックアップするかどうか判断するのが普通ですが,HashInfo.comの共有情報を判定基準に加えることができます。誰もが持っているファイルであれば,とりあえずバックアップの対象から外しておいても大丈夫でしょう。

ファイルシステムの機能に頼らないファイル管理

編集中のファイルはファイル名を利用して管理するのが便利ですが,中身が変化しないデータはファイル名を利用するよりも属性から検索できるようにしておいたほうが便利だと思います。会議の資料を作成しているときは「戦略会議資料.doc」のようなファイル名で作業をして問題ないかもしれませんが,1年後にこの資料を探そうとしても簡単に見つからないかもしれません。⁠戦略会議資料20100423.pdf」のようにファイル名を工夫してもあらゆる属性を記述することはできませんから,ファイル名はハッシュのような適当なものにしておいて,内容,参加者,日付,場所などを記述したデータベースにそのファイルへのリンクを登録しておくほうがよい気がしています。

このような管理手法を使えばファイルシステムの階層構造に注意する必要がなくなりますし,検索が簡単になり,関連情報間でリンクを持たせることもやりやすくなります。私は現在自前のWikiをデータベースとして利用しており,次のような手順でファイルを管理しています。

  • ① ファイルをWeb上のリポジトリにアップロードして自動的にハッシュ値のファイル名を付加する
  • ② Wiki内にそのファイルへのリンクを記述し,必要なコメント,タグ,ほかの情報へのリンクを記述する

現在のパソコン上のほとんどのアプリケーションは,階層型ファイルシステム上のファイルにデータを保存することが前提となっています。ファイルシステムの特徴を活用しつつ,これ以外のファイル管理手法をうまく併用するとよさそうです。

次回は,自宅でも外出先でも必要なデータに簡単にアクセスする方法について考えてみたいと思います。

参考文献
1.George W. Furnas, Jef f Zacks. "Multitrees:enriching and reusing hierarchical structure". In Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'94), pp.330-336, 1994.
2,増井俊之,塚田浩二,高林哲「近傍関係にもとづく情報検索システム⁠⁠,ソフトウェア科学会 インタラクティブシステムとソフトウェアXI (WISS 2003),2003年。

著者プロフィール

増井俊之(ますいとしゆき)

慶應義塾大学教授。ユビキタス時代のインタフェース技術の研究開発に従事。

本棚.orgGyazoQuickMLFeedTVなど各種のネットサービスを運用中。

http://www.pitecan.com/