技術は進歩しているか?
何を今さら。そんなの当たり前に決まっている。でも、よく考えてみるとコンピュータの世界において次から次へと登場している新しい概念も、過去の概念の焼き直しだったり、目先が変わっていたりするだけのことも実際にはありそうだ。とは言っても、この目先の変わった技術に対して、何か画期的な名前を与えることで、市場に対する訴求力を一層増すようになるのも事実である。
昨今の技術の世界におけるキーワードとして「仮想化」というのが目立つように感じられるが、これはどうも画期的な新概念というわけではなさそうだ。古くからコンピュータの歴史と共にあって、その実態を変化させながら現在に至っているのではあるまいか。自分の会社のシステムで恐縮なのであるが、いくつか例を見てみよう。
僕の理解が正しければ、1960年代に登場したIBMのシステム360という汎用機にも仮想化の概念は適用されていた。このシリーズには様々なモデルがあったが、プログラミングという観点から見ると、ハードウェア(プロセッサー)の構造が違うにも関わらず同じプログラムがそのまま稼動するという特徴があった。これはそれまでに存在していたコンピュータの常識からすると、画期的だったそうである。ハードウェアの違いを、マイクロコードというソフトウェア(のようなもの)が吸収していたからこんなことが可能になった。すなわちマイクロコードはハードウェアの違いを覆い隠すための、仮想化技術だったわけだ。
僕が担当しているSystem i という1988年に登場したコンピュータも仮想化のマシンである。ハードウェアとは別に、ソフトウェア的にマシンを定義しているので、ハードウェアの技術の変化がプログラムに影響を及ぼさないという、摩訶不思議な仕組みを実現している。ソフトウェア・マシンは、一時点に留まらず歴史的なハードウェアの違いや変化を吸収する仮想化技術であると言える。だから一度作ったプログラムは、修正することなく後の世代のマシンにおいてもそのまま稼動させることができるわけだ。
現代の仮想化は何だろう?一台のマシンの上で様々なOSを全く独立して動かすことで、複数のマシンのように見せかけるのも仮想化だろう。逆に複数種類の様々なOSが存在するネットワーク全体が、単一のシステムであるかのように見せかけるのも仮想化である。
要するに仮想化と言ったところで、人間の都合の良いように、違ったものを同一に、複雑なものを単純に、少ないものを数多く、見せかけているに過ぎないわけだ。決して理解困難な概念ではなさそうだ。実現するには多くの技術の蓄積が前提にあるのは事実だろうけれども。