仮想ディスク・デバイスドライバ実装希望

え〜と,ListVをごにょごにょしているときに思ったことです。

ListV自体は,Spotlightや,WinFSの登場で不要となることが見えているので,たぶん凍結です。

さて。シンボリックリンクなどの方法論は,イケているようでイケてないです。

Cygwinのファイルシステムの隠蔽化はイケていると思うのですが,Cygwinの世界でしか使えません。

Unixなファイル階層構造は,ユーザごとのマウントとシンボリックリンク(ハードリンクとかわけわからんことはよく分からんですが)で,イケていたのだと思います。

しかしながら,ユーザごとのマウントでなくて,プロセスごとのマウントができればいいのにな,と思うことがありませんか?

#もしかしたらごく普通にできるのかもしれない;;

プログラミングしてれば,ゼッタイにぶちあたるウザイ作業として,依存関係のある複数のライブラリやコード断片のファイル配置があります。

ライブラリファイルの置き場所,ヘッダファイルの置き場所,依存する側からの相対ディレクトリ指定,などなど。

で,いわゆる構成管理としてそれをやるわけですが,それでもやっぱりウザイですよね。構成管理ツール上では涅槃が実現されていても,Windowsでならエクスプローラでぴゅっと動かしちゃったらだめでしょう?

さらにバージョン管理まで含めるとなると,構成管理側のリポジトリとバージョン管理側のリポジトリの階層構造をあわせたり,構成管理側でシンボリックリンク的なものを張ったりすることになります。VSSのリンクプロジェクトですな。

それでもやっぱり一旦ワークコピーにコピーされたものをピュっと動かしちゃったりしちゃいけないわけです。ファイル配置を変えたければ,構成管理ツール上で配置の設定を変えたりリンクを張ったりしてからワークコピーの再取得をおこなう,と。

まぁきちきちやるならそれでいいんですがね。

開発者全員のワークコピーの配置とか揃えるのは,良いことだと思いますよ。

ここで提案するのは,単なるオモチャです。Windowsしか考えてません。Unix系だといろいろ工夫すれば同じことが簡単にできるはずですし。

仮想ドライブを作って,その中に実ドライブ上のファイルを放り込むと,いわゆるシンボリックリンクを張ったように振舞うのです。

実ディレクトリを放り込んだら,同名の仮想ディレクトリが作成され,その中に実ディレクトリ内の実ファイルのシンボリックリンクを張ります。

後で仮想ディレクトリを移動したり改名したりしても,実ファイルや実ディレクトリには全く影響しません。しかし,仮想ディレクトリ内の仮想ファイルを操作すると実ファイルに反映されます。

基本のアイデアはこれだけです。Beファイルシステムのクエリがディレクトリになるのと同じですな。

しかし仮想ディレクトリだけでは困ることがあるわけです。現状では。ですので,Cygwinのように全く異なるファイルシステムをユーザとアプリに見せれば宜しいのではないかと。

Cygwinのように全てのアプリをCygwin環境でビルドしなきゃいけないのはマズ〜なので,仮想ドライブにしたらええやないか,ただそれだけのことです。

それなら,仮想ファイルシステムのデバドラを書けば良いだけです。WevDAVつまりWebフォルダ機能も惜しいのですが,いろいろ問題があります。

仮想ドライブが実ドライブと同じ機能を持っておれば,ほぼ全てのアプリをそのまま使えます。

ここまで考えれば,あとは発展系です。

バージョン管理機能を仮想ドライブが持てば良いのですがね。そのためには,単なるシンボリックリンクではだめです。仮想ドライブに放り込まれた実ファイルについてそれぞれ一時コピーを生成し,それが仮想ドライブから見えるようにしてやらなければならないでしょう。そしてバージョンでひもつけにします。

仮想ドライブ上で更新が行われたときに,実ファイルにそのまま更新するかなどの選択肢が増えます。もしそこをうまいこと作ることができれば,ワークコピーという概念が消え去ります。内部的には一時コピーがワークコピーになるのかもしれませんが,ユーザから見れば仮想ドライブ上でファイルのセットを操作しているだけです。

極端な話,仮想ドライブがリモートの実ファイルをハンドリングできれば,複数サーバ上の複数のプロジェクトファイル一式を好きなように配置してビルドしたりできるわけです。それぞれファイル一式をダウンロードし,手元のローカルなCVSに放り込んでおいてから,ワークコピーを取り直す,などというのは全くもって前時代的な作業だと思うのです。

NFS使えばいいじゃんとか,ネットワークドライブでいいじゃんとか,言われれば確かにそうなのですが,実際だめだめだと皆わかってますよね?

subversionやWebDAVで解決してくれるのは問題のごく一部で根本的には管理しなきゃいけない項目が全然減らないと思うのです。

残念なことに,現存するファイルシステムの多くはインターフェースに機能が不足です。インターフェースはWebDAV並に,内部処理はsubversion並に,それでうまいこといきそうです。しかしながら,実ファイルシステムのインターフェース不足によって,完全にはなり得ません。

WinFSが与えるインパクトはそこら辺と同じ問題を孕んでいるような気がします。ようするに現存するファイルシステムと同等のものを残しながら,新しい世界に踏み出すのは大変そうなのです。

つづき,というか反省。

ごみためのランキングはこちら。