Windows8 上で何パターンか仮想化技術を試したメモ的な話。

ここ数年エンジニアとしとの軸足がプラットフォームに中立で Java でのウェブシステム開発JavaScript + CSS3 のウェブのフロント周りの研究開発に注力してたんで、Windows 系の新技術にはかなり疎くなってた。

正直に告白するなら Windows8 もそうやし、C#3.0 以降も ASP.NETWPF もみんなそう。この前書いた Direct2D とか DirectWrite なんかもそうだわね。
サーバー系の ActiveDirectory なんかは逆に向う側から SSO(Single Sign On)とか LDAP の理解から学んだってのはあるんやけど。(SSO 絡みのウェブ認証って B2B 界隈よりもスマホの人たちのほうが良く知ってんだよね。OAuth/OpenID/SAML らへんね)

で、そういう技術の1つに Windows 上での仮想化技術ってのもあって、ちょっとした理由があってさわりだけ調査してみた。そんな話。
これまたエンジニアとしてすごく恥ずかしい告白をしないといけないわけやけど、仕事で長いこと Windows7 を使ってきて、その上で VirtualPC 動かしたり、OracleVirtualBox 動かしたりしてたのに、Windows7 から実装された仮想ディスク API をつい最近まで全く知らんかった。

ま、使う場面が無かったんで当然っちゃ当然なんやけど、これがなんとも超簡単に Windows7 上で扱えちゃうのな。そう API があるだけじゃ無くて、システムツールから超簡単に扱えちゃう。
現実問題として、一般ユーザーがそれをどれだけ有効に使うのかって話は全然別なんやけど扱いが容易なことに変わりは無い。

具体的な中身は例によって書けないんで、じゃあなんで書いてんのってな話なんやけど備忘録って言うか、もしも書ける日がきたら続きを書く可能性もあるっつーか。
一昔前に、こういう仮想ディスクとか仮想ドライブとか ramdisk みたいなことを実現しようと思ったらかなりハードウェアに近い部分を叩く必要があったり面倒くさかったはずなんやけど、もう全然次元が違う感じ。

逆に敷居がずいぶん下がっちゃってる今だからこそ、人より先んじようと思ったらスピードが重要なのな。アイデアはパクれるけど、スピードはパクれないんでね。

リーンスタートアップよろしくサンプルコード書いて(英語のサイトからパクってきて)要素技術ごとに実際に動くものをまずは作ってみる。で、実際にそのコードの中身を理解してく必要があるんやけど、どこまでいっても最後の最後で「使い方は理解出来ても、作り方やどう動いてるんかの詳細までは理解できない」って話が出てくる。本気でやる人はどっかで腰を落ち着けて、きちんと中身を理解する必要があると思うのな。

具体的には P/Invoke とかマーシャリングとかのあたりの話ね。RPC っつーかプロセス境界をまたぐ話っつーか COM コンポーネントの時代から延々とつづく抽象インターフェースと実体とのギャップの話。ま、魔法の呪文と思って写経しときゃ問題ないってケースの方が多いんやろと想像するけど。
こういう部分も必要になったからってゼロから知識や理解を積み上げていくんは大変な筈なんで、参入障壁は高いよなあ。第一こういう低レベルなところって泥臭いつまんない話も多いしね。

だからこそ、ビジネスとして可能性があるとも言えるわけなんやけどな。

ま、その辺の API 叩くのもそないに簡単や無いんよね、当然のことながら。C# からマネージドなインターフェースでちょちょいのちょいで動くって程も簡単や無い。
なんにせよ C# と COM Interop(COM相互運用)のあたりはきちんと思い出しといた方が良さそうやな。全部が全部 C++ で書くとかやってたら生産性がガタ落ちやから。

話が発散してきた、そろそろ寝た方がエエんやろか。もうちょっとだけ実験しときたいことあんねんけどなあ。