FUSEでファイルシステムを作ろう

FUSEでファイルシステムを作ろう

プレゼンテーション

無限に広がるファイルシステム・・・

それは人類に残された

最後の*戦場*である!!! (どど〜ん)

FUSE

hello world ファイルシステムのデモ

$ ls /tmp/fs

. .. hello

$ cat /tmp/fs/hello

Hello World!

コードを見ると、readシステムコールに"Hello World\n"を返している。

outputz ファイルシステムのデモ

  • read、writeで出入りしたバイト量をカウント
  • readdirシステムコールの回数をカウント

mp3tunes ファイルシステムのデモ

$ ls /tmp/fs

. .. album artist track playlist

$ ls /tmp/fs/artist

. .. Mr.Children.xml SMAP.xml コブクロ.xml

readdirのたびに、WebAPIでmp3tunesを叩く。

うは、夢が広がりんぐw

FUSEファイルシステムを作るコツ

ファイルシステム、そしてOSへ・・・

ブラウザアドレスバーに"file:///tmp/fs/artist/cat *.xml | sort -rn"と打つと

FUSE

「"/artist/cat *.xml | sort -rn"ファイルってあるー?(何かスペースとか縦棒とか入ってて変なパスだけど・・・)」

と来るので、シェルっぽくパースして、

「あるよー(いま作ったんだけどねゴニョゴニョ・・・)」

と動的に結果を作って返すと、FUSECGIっぽいことができる。

ブラウザアドレスバーは新時代のコマンドラインだぜ。

RSSファイルシステムを作って、catしてgrepしてsortとかすれば、Yahoo!Pipesと同じことができる。