DokanとJDokanとJSFlickrFS
DokanとJDokanとJSFlickrFS:ローキック・キーロック - CNET Japan
Windows版FUSE、Dokanというものがあるそうだ。
FUSEはLinux上でファイルシステムをユーザモードで実装することができるプログラム。OSの開発者でないアプリ開発者もファイルシステムを作成できるようになり、sshfsというネットワーク上ある種のディスクをさも自分のパソコン上のディスクとして利用できる便利なファイルシステムや、GmailFSというGmail上のディスクを利用しようとするネタ系のファイルシステムが作成された。
そして、このDokanはFUSEのWindows版で、今回OSSになったとのこと。
記事からリンクされているDokanの作者サイトには、上記sshfsのDokan版、Dokan SSHFSが公開されている。
インストールし、実行すると以下のような画面が表示される。SSHの接続情報と、どのドライブにマウントするかを指定する。
マウントすると以下のようにWindowsの1つのドライブとして見ることができ、読み書きの操作の都度SSHを使ってデータを転送してくれるようだ。
私の環境では既存ファイルの読み込みと、新規ファイルの書き込みは動作したものの、フォルダ作成は挙動に不振な点があった。ただし現状でも、 Sambaが動作していないLinuxでも/etcをマウントして設定ファイルWindows上のエディタで編集したりできるだろう。非常に素晴らしい。
Dokan作者サイトから元記事に戻ると、そのDokanのJavaラッパーを作り、Rhino(Java版Javascript実装)で画像サイトFlickrの画像のサムネイルを取得・表示するJSFlickrFSというものを作成したとのこと。
ソースを引用すると以下のような感じ。私はファイルシステムのプログラムを触ったことはないのだが、GUI部品のイベント駆動プログラミングのような記述でファイルシステムが作れるのはすごい。
onReadFile : function(fileName, buffer, offset) {
if (files[fileName] == null)
throw new DokanOperationException(WinError.ERROR_FILE_NOT_FOUND);
var ins = new FileInputStream(files[fileName].contents);
var data = IOUtils.toByteArray(ins);
var copySize = Math.min(buffer.capacity(), data.length - offset);
if (copySize <= 0) return 0;
buffer.put(data, offset, copySize);
return copySize;
},
プログラムは私の環境からはうまく動作させることができかったのだが、修正して別のサービスとつなげることもできるだろう。そして、WebサイトとパソコンがJavascript対Javascriptで通信できるようになる。使いでがありそうだ。