きりかノート 3冊め

おあそびプログラミング

MacFUSE + Spotlight はどうだろう

ベーパーなアイディアの話ね。

ちょっと前に Google の Amit Singh (Mac OS X Internals の人としても有名) による MacFUSE が公開されたよね。ふつうの fuse として、sshfs なんかも使える(利用できるファイルシステムのリスト)のだけれど、Mac OS X 独自の機能として SpotlightFS なんてのもある。これは、スマートフォルダを fuse を通してファイルシステム化することで Finder 以外でもスマートフォルダが利用できるようになるってものだ。

で、今回言いたいのはそういう Spotlight の利用ではない。ファイルシステム化することで Spotlight のインデックス化ができるようになるんじゃないのか?と思うわけだ。Mail.app が1メールにつき1ファイルになったのは、Spotlight を利用するためと言われているけれども、CoreData アプリケーションなんかでは1ファイルに多数のデータが格納されることも多く、Spotlight に対応したとしても レコードの特定まではできない。

そこでアプリケーションデータを MacFUSE 上に展開させれば、レコードごとに1ファイルとすることができるので、ファイルシステム上のパスと内部のデータを関連づけしておけば、そのファイルへの要求に対してレコード情報を提供することができるわけだ。

新しいファイルシステムを作るには、IBM developerWorks「FUSEによる独自ファイルシステムの開発」が参考になりそう。

また、Objective-C/Cocoa での実装としては、MacFUSE with Objective-C で公開されている CFileSystem がある。これは CFileSystem クラスのサブクラスをつくることで新しいファイルシステムを作ることができる。Cocoa プログラマ的にはこちらのほうが親しみやすい。