【TagFS 0.1.0】Windows上でタグファイルシステムを実現してみる

最初に

α版です。何が起きても泣かない。

なにこれ

一言で言えば、Windowsファイルシステム上でタグ付けを擬似的に行います。

具体的には、例えば以下の画像があるとします。

photo by Simon Pais-Thomas

これをローカルディスクに保存する際、どこに保存するべきか、といえば、"三次元"とか"雑誌"とか"flickr"といったフォルダが思い当たります。本当はそのいずれのフォルダにも保存したいですが、Windowsファイルシステム上でそんなことをやっていたらディスクがいくらあっても足りません。ということで、とりあえずどこかにこの画像を保存しておき、TagFSに対してこの画像が"三次元"、"雑誌"、"flickr"にタグ付けしてやります。

TagFSはディスクとしてOSからは扱われるので、TagFSがマウントしているドライブ(たとえばTドライブ)を開くと、"三次元"、"雑誌"、"flickr"というフォルダが出てきます。

とりあえず"三次元"を開くと、さっきのファイルがあります。"雑誌"を開いても同じファイルがありますし、"flickr"でも同様です。仮想的に見せているだけで、実態としてのファイルは1つしかありません。なので、ディスク容量はファイル1個分だけです。

インストール方法

  1. Dokanをインストールする
    • ここからDokanライブラリを落としてインストールしてください。0.4.2.1238 x86を落とせばいいかと。
  2. TagFSを落としてくる

アンインストール方法

  1. TagFSを消す。TagFSは特にレジストリ等を利用していないため、さくっとフォルダ毎削除してください。
  2. Dokanを「プログラムの追加と削除」からアンインストールする

タグ登録方法

AtPictureのタグデータのインポート
  1. AtPictureからCSVデータで画像データをエクスポートします。エクスポートしたファイル名をlist.csvという名前でTagFSと同じフォルダ内に保存します。
    • AtPictureからCSV抜き出しの方法については、手元の0.1.20.4だと、「編集」→「すべての登録画像をリストアップ」をしたあとで「ファイル」→「画像情報CSVを保存」で出来る気がします。CSVのフォーマットとして、ファイルパス、ハッシュ値、空データ列、タグ1、タグ2といった状態になっていることを前提にしています。
  2. import.exeを起動します。あとは勝手にやります。
    • 現状では書庫内データは独立したファイルとして扱えません。
個別登録
  1. 同梱されているinsert.exeでタグ付けが出来ます。
    • 構文は次の通り:insert.exe FILEPATH TAGNAME

起動方法

  1. tagfs.exeを起動します。引数はドライブレターです。
    • Tドライブで起動したいなら:tagfs.exe t
    • Qドライブで起動したいなら:tagfs.exe q
    • みたいな感じ。
  2. コンソールを落とさないでください(最小化は可)。落とすとTagFSも落ちます。

終了方法

  1. TagFSを起動させたコンソール上でCtrl+Cを押してください。
  2. 使用中のファイルがあるとなかなか終了してくれません。
  3. 下手すると1分とかかかるケースがありますが、下手に無理矢理落とすとタグDBが壊れる危険があります。我慢強く待つことをお勧めします。

注意

  • ファイル名の先頭に数字が勝手にくっついてますが、これは取り外せません。理由は別のフォルダに存在する同名ファイルがあった場合に区別できなくなるからです。
  • ファイルへの書き込みはできません。実装が間に合ってないだけなのでやれば実装できます。
  • パフォーマンスに問題があるため、巨大なファイルを登録するのはお薦めしません。本当は動画ファイル等の管理にも使えるようなー、と思ってやってみましたが、読み込みにやたら時間がかかるので実用性は低いです(このへんはRubyのファイルアクセス速度に起因している気がしています)。
  • ドライブ直下に対する全ファイル検索はやめた方が無難です。見かけ上莫大なファイル数を持っているため、ファイル数にもよりますが、たぶんいつまでたっても検索が終わりません。
  • 例えば「二次元」というタグを持つファイルが10万個あった場合、TagFS上で「二次元」フォルダを開くと10万個のファイルがリストアップされることになります。TagFSとしては問題ないのですが、ファイラが耐えられません。エクスプローラはもちろん、およそ大抵のファイラがハングアップします(通常、一つのフォルダに数万ファイルが含まれていることはありえない)。くわえてファイラの挙動として、リストアップされた10万個のファイルに対してそのファイルサイズ、属性等を一斉に取得しようとします。さらにエクスプローラの挙動として、ツリー構造把握のために全タグに対してファイル数がいくつあるのかを検査しようとするため、数万個のファイルが登録されているタグがあると死にます。

ライセンス

下記のライブラリのおかげでTagFSはできています。多謝多謝。

  1. TagFSはDokanライブラリを利用しています。Dokanライブラリはここで公開されています。
  2. TagFSはQDBMライブラリを利用しています。QDBMはここで公開されています。