論文読むなどした

Coda の Disconnected Operation についての論文を読んで、発表をするなどした。これは接続を切断しても問題なく使い続けられるリモートファイルシステム。Disconnected Operation というのは、接続が切れている間はローカルにそれまでの操作をキャッシュしておいて、接続が戻ったらその操作をリプレイして同期を取る、という方式だ。なんか最近は Googlegear にもこの技術が使われてたりするらしい。
発表後、id:yuyarinに それSubversionでいいじゃん、というツッコミをされたのだけど、それに対してまともに答えられなかった。私はネットワーク上のFSってだけでそれ便利じゃんと思ってしまうクチなのであまり深く考えてなかったんだな。ここで改めて利点を考えてみた。

マウントしさえすれば使える

ローカルのストレージを消費しなくて済む、という話はある。差バージョンだったらとりあえず関連する全てのファイルを落としてくるけど、Coda なら利用中のファイルぶんだけしか消費しない(理想としては)。
もちろんキャッシュしているファイル分プラスアルファに容量を食うし、ネットワークから切断している間はさらに操作ログぶん消費量が増える。そんなに大きな利点とは言えない。

だってファイルシステムだもの

差バージョンはリビジョンを更新していくことが目的だけど、ファイルシステムだから読み込めればそれで良い場合も多い。そのあたりの目的の違いはある。

GUIでも良いんだよ

Linux/UNIX に限らず、Windowsで使えたとすると、例えば音楽ソフトのプロジェクトをネットワーク上のファイルに「上書き保存」とか「保存」とか出来るわけですね。その際に、そのストレージがネットワーク上にあるかどうかなんて気にすることはない。べんりべんりー。
ユーザからのインターフェイスだけじゃなくて、アプリケーションから見てもファイルだって言うことが便利なわけです。

名前空間がグローバルなのも便利

Makefile を /coda 以下のファイルに依存するように書けば、ダウンロードや接続の違いなどを意識することなく簡単に展開できる。つまり色んな物のインストールが簡単になる。
もちろん Makefile だけじゃなく、コーデックとかバージョン表示とか依存関係表とか言ったものに関しても、最新のものを簡単に利用させるようにソフトウェアをデザインすることが出来る。
wwwの代わりにもなるってことですね。ダウンロードして /usr/tmp に置いて解凍して、などと言った手順が不要な点がとても良い。

ていうかアプリケーションがそのまま使えるよね

そう、これを言えなかったのがもったいなかった。
例えば Perl は入ってるけど OCaml は入っていないところで OCaml で書かれたアドインを Wiki に導入しようとしたとき、いちいち OCaml をローカルに導入してからそのアドインをコンパイルしなきゃいけないわけです。かったるい。
それが、このFSを利用できれば、 /coda 以下にある OCaml を実行してコンパイルすればいい。そしたら OCaml をローカルに導入する必要はない。
あとはめんどくさいの代表格である日本語 TeX とかも、何も考えずに /coda に置いてあるものを使えばいい。ちょっとしか使わないのに、みんながみんな自分の環境に日本語TeXほどでっかい物をいれなければならないのってあほらしいと思うんだ。
もちろんアーキテクチャの違いはあるので、その辺はディレクトリ分けする必要があるけれど。


あれ、書いてて思ったけどこれめっちゃ便利じゃね?なんでそんなに使われてないんだろ。
悪い人に色々変更されたら被害が甚大になるっていう、攻撃に対する脆弱性かしら。ファイルの属性に色々あると聞くし、書き込み権限くらいはあるんじゃないのかな。
とりあえず使ってみるか。