綾小路龍之介の素人思考

How to organize a information? - 情報の整理

情報の再利用と検索という観点から見て、情報の電子化が叫ばれて久しい。そして情報の電子化を推し進めた結果、僕らは次の問題に直面した。それは情報が多すぎるという問題だ、キーワードマッチングによる検索はごみをよく拾ってしまう。ごみを拾わずにWebやメールといった電子化された情報を整理するにはどうすればいいのだろうか。ツリー構造、代替リンク、タグ付け

ツリー構造

ツリー構造とは昔からの整理方法である。各々の情報に単一のマークを付けて、このマークを基にして情報にアクセスする。例えば、WebでつかわれるURLとかURIとかはツリー構造の一つである。僕が情報管理の方法に欠点を感じる点は、単一のマークを情報にマークすることである。シンボリックリンクという技術はこの点をうまく回避し、同じ情報に対して複数のマークをつけることが出来る。

代替リンク

シンボリックリンクという考え方をもう少し考えてみる。あるプールにまとめて収められている情報に複数のマークを付けてみる。例えば、./row/ というディレクトリに全く未分類の情報が入っているとする。このディレクトリに含まれている情報にディレクトリを介したシンボリックリンクを貼ることでタグを付ける。

$ ls ./row/
001.txt 002.txt 003.txt
$ cd ./tag/game/
$ ln -s ../../row/001.txt uno.txt
$ cd ./tag/boy/
$ ln -s ../../row/001.txt tom.txt
$ ls ./tag/*
tag/game:
uno.txt -> ../../row/001.txt
tag/boy:
tom.txt -> ../../row/001.txt
tag/girl:

このようにすることで、001.txtにgameとboyというタグを貼ったことになる。もし、タグの名前を変えたくなった場合は./tag/game/というディレクトリの名前自体を変えてしまえばよい。

$ cd ../
$ mv game games

ただし、絶対にしてはいけないことは、./row/ ディレクトリに含まれるファイルのファイルネームを書き換えてはいけないということだ。正しく言えば、./row/ ディレクトリの中身のことは忘れようということだ。ファイルの実体はそこにあっても、書き換えや変更はタグディレクトリの中で行うようにすることだ。ここで、001.txtにどのようなタグがつけられているかを探してみよう。

$ cd ./tag/
$ find . -lname '*001.txt*'
./boy/tom.txt
./games/uno.txt

ということで、001.txtにはgameとboyの2つのタグがつけられていることがわかった。ひとつの情報に複数のタグを付けることが出来たのでこの方法は面白いようにも見える。しかし、この方法にも問題点が存在する。それは、タグによる情報の検索だ。ここで、gamesとboyというタグがつけられた情報を選び出したいという場合を考える。当然ながら、001.txtがヒットすればOKだが、これをするには結構コストがかかる。やってみよう。

$ ls -l tag/games/ tag/boy/ | perl -F'/->\s/' -lnae 'print $F[1]' | sort | uniq -c | grep --regex "^\s*2"
      2 ../../row/001.txt

という感じだ。これで、gamesとboyのタグが両方つけられた情報が001.txtという名前だとわかった。さらに、boyとgamesとgirlのタグがつけられたものを探してみる。注意点は、lsコマンドに与えるタグにgirlを追加することと、grepの引数を2から3に変えることだ、次のようにする。

$ ls -l tag/games/ tag/boy/ tag/girl/ | perl -F'/->\s/' -lnae 'print $F[1]' | sort | uniq -c | grep --regex "^\s*3"

当然ながらヒットしない。ヒットしなくてよいのだ。このやり方は問題がある。例えば、gamesのディレクトリに同じ情報を別名でシンボリックリンクを貼っている場合を考える。すると、3つの同じリンク先を持つシンボリックリンクがあるため、ヒットしてしまう。

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-05-11T11:57:42+09:00
  2. Modified: 2008-05-11T06:00:17+09:00
  3. Generated: 2017-09-08T23:09:23+09:00