先日、VMware時代の元同僚の若いエンジニアの人たちと食事する機会があったのですが、そこで「一番びっくりした技術はなんだったか?」みたいな話になりました。そこで、私が今まで出会ったびっくり仰天の技術について書こうと思います。今となっては当たり前なことなことが多いのですが、当時の私には本当に驚きだったのです。
vMotion
まず、なんといってもこれでしょう。仮想マシンを動いたまま別のホストに移動するVMwareの技術「vMotion」。一般的にはLive Migrationと言われているものです。私が最初にvMotionを見たのは2011年、Nicira入ってすぐ米国のSEに見せて貰ったのですが、もう本当に目ん玉ビョビョーンでした。それまでハイパーバイザーに触ったことがなかった私にとっては、どうしてこんなことができるのか全く理解できませんでした。今ではできて当たり前のことなのかもしれませんが、これをみた時は本当に驚きでした。その後、vMotion自体も進化を続け、ストレージを含めたvMotionや、データセンターを跨ぐような遅延の大きい環境でもvMotionが可能になりました。一瞬の停止時間(スタンタイム)もリリースを重ねるごとに改善をされてきました。そしてvMotionのおかげでワークロードの動的なスケジューリング(DRS)ができるようになり、VMwareの中核を支える技術となりました。この技術のおかげでサーバー運用に変革がもたらされたのは間違いありません。
https://blogs.vmware.com/vmware-japan/2014/09/vsphere_kiso03.htmlより引用
Interface Builder
アップルを追われたスティーブ・ジョブスが作ったNeXT Computerに搭載されていた開発ツールがInterface Builder(IB)です。文字通り、アプリケーションのユーザインターフェースを作るためのツールで、ボタン、スライダー、テキストフィールドなどのウィジェットをマウスでドラック&ドロップしたり、それらのあいだにリンクを張ったりするだけで、ユーザインターフェースを作ることができます。今となってはよくあるツールだと思いますが、私にとって衝撃だったのは、アプリケーションのUIの動作確認をすることができたことです。しかも、コンパイルやリンクすることなしに、です!
IBではObjective-Cでコードを書きますが、これはネイティブなコードを生成するコンパイラ型言語です。当然ボタンやスライダーなどのウィジェットもObjective-Cで書かれていたはずです。IBでは例えば、スライダーとテキストフィールドを配置して、スライダーからテキストフィールドにリンクを張って、適切なメソッド(例えば「整数を受け取る」、など)を指定するだけで、スライダーを動かすとそれに連動した値がテキストフィールドに表示される、みたいなことができました。言葉だけだとわかりにくいのでここにスティーブ自身がデモをしている動画がありますので見てみてください。今になってみればObjective-CのDynamic Bindingによって実現されていたと理解できますが、当時の私は(Cのような静的な)コンパイラとインタプリタという二つの世界線しか持っていなかったので、こんなことができるのが不思議でなりませんでした。
http://www.kevra.org/TheBestOfNext/page570/page571/page571.htmlより引用
Solidcore
2004年、私は仲間たちとファイブフロントという会社を設立し、フローコレクター(Genie)やMicrosoft製品のホスティング製品(Ensim)などの販売代理店をやりつつ、いくつかのスタートアップの日本オフィス代行ビジネスを行っていました。そのような代行ビジネスサービスを行っていた一社がSolidcore Systems(以下、単にSolidcoreと呼ぶ)という会社です。
Solidcoreはいわゆるウィルスやマルウェアなどを防止するソフトウェアなのですが、よくあるアンチウイルスソフトウェアとは異なり、悪者を見つけるのではなく、善良なものだけ許可するタイプ(ホワイトリスト)方式です。ブラックリスト方式では常にシグネチャのアップデートが必要でイタチごっこなわけですが、Solidcoreにはそのような悩みはありません。特にユニークだったのはコマンド一発で状態を固定することができた点でした。”solidfy” というコマンド打つと、その時点でのソフトウェアの状態で(文字通り)固まって、それ以降にインストールされたソフトウェア(ウイルスやマルウェアも)が動かなくなります。もちろん、その後アプリケーションを追加したり、OSのアップデートをしたりすることもあるので、その場合は一旦 “unsolidfy” というコマンドで解除をしてからメンテナンスを行い、再度 “solidfy” コマンドで固定することができます。一旦固めてしまったらあとはほぼメンテナンスフリーというシンプルな運用モデルは、当時は目から鱗でした。
素晴らしい技術だと思ったので、ファイブフロントとして正式な代理店になろうとSolidcore Systems社と交渉を進めたのですが、先方も自分たちが持っている技術に対して相当自信があったらしく、事前の数100万ドルのコミットを要求されました。当時のファイブフロントにはとても無理だったので、泣く泣く代理店契約は諦めることになりました。最終的にSolidcoreはMcAfeeに買収をされ、今でも流れを汲んだ製品があるようです。
一方、今考えると明らかにゲームチェンジャーだったのに、当時の私には「ビビッ」とこなかった技術もあります。
NCSA Mosaic
NCSA Mosaicは世界初の本格的ブラウザで、テキストと画像を表示できました。当時米国立スーパーコンピュータ応用研究所(NCSA)にいたマークアンドリーセンが開発したもので、その後一世を風靡したブラウザ “Netscape” の元にもなりました。私が初めてNSCA Mosaicを見たのは私がカーネギーメロン大学の大学院生だった時で、おそらく1994年くらいだったのではないかと思います。学生に与えられたワークステーションでNCSA Mosaicが動いていました。それを初めて見た私の印象は「ふーん、こんな感じなんだ」でした。当時はインターネット上の情報検索ツールとしては、archie、gopher、WAISなどがあり、HTTPはそれらと同じ並びの扱いでした(少なくとも私はそのように見ていました)。しかし、その後インターネットはHTTPによって席巻されることとなったのはみなさんよくご存知の通りです。あの時に私にもう少し技術を見極める目があれば、私の人生もまた違ったものになっていたかもしれません。
https://gigazine.net/news/20240702-origin-mosaic-netscape/より引用
VMware Workstation
VMware Workstationに初めて出会ったのは、1999末〜2000年頃です。Ascend/Lucentにいた同僚の一人がVMware Workstationを使っていてその存在を知り、私も使ってみました。当時は私はFreeBSDを好んで使っていたので、会社支給のWindowsノートマシンの上でFreeBSDを動かして遊んでいました。まさに「遊んでいた」だけで、残念ながら「これが世界を変えるテクノロジーになる!」と感じ取ることはできませんでした。当時のノートPCのハードウェアは貧弱で(メモリ8MB)、Windowsの上でWindows、FreeBSD、Linuxなどが動くものの、動作はかなり遅く、本格的に使えるようなものには思えなかったのです。当時、あの速度で仮想化が動いていたことは驚くべきことなのですが、その頃の私はx86 CPUの仮想化の難しさを理解しておらず、この凄さの本質を見抜くことができませんでした。この時に気づいていれば、もっと早く(自らの意思で)VMwareに入る、なんてことがあったかも知れませんね(笑)
https://williamlam.com/2023/04/vmware-1-0-gsx-server-1-0-server-1-0-and-workstation-3-0-trip-down-memory-lane.htmlより引用
まとめ
技術を見極めることは難しいです。また、必ずしも素晴らしい技術が世界を席巻するとも限りません。その技術が花開くためには、しかるべきタイミングで世の中に出て、時流に乗る「運」も持ち合わせていなければなりません。我々は将来が見通せる水晶玉を持っているわけではないので、未来のことを正確に言い当てることはできませんが、少なくともアンテナを張っていないと気づけるものにも気がつけません。新しい技術には常に目を向けていきたいものです。