マイクロソフトは,建前と本音をとても奇妙な形で使い分けてきたメーカーだ。例えばWindowsのEULA(使用許諾契約書)には「アプリケーションの互換性を保証する」など一切書かれていない。しかしこれは「建前」であって,「本音」では「古いアプリケーションを新しいOSで使ってほしい」と思っており,互換性のために相当の努力をしていたのが実情だった。最近はやりのネット・スラングでいうと「ツンデレ」みたいなものである。

 マイクロソフトの互換性維持に関する努力に関して,記者は以前本当はすごいWindowsの互換性維持という記事を書いたので,そちらをご覧頂きたい。また,元マイクロソフトの技術者である中島聡氏が,「(この)記事で蘇った記憶に刺激されて書いた」と仰るWindows95と地上の星というブログのエントリを読むと,実情がさらによく分かる。アプリケーション側のバグだと投げ出さずに,OSの側で互換性を維持した開発者らの努力には,正直頭が下がる思いだ。

 ところが最近,マイクロソフトの本音と建前の使い方に,少しばかり疑問を感じるニュースに出会った。マイクロソフトが「『.NET Framework 1.0』をWindows Vistaでサポートしない」と言い出したのである。

 Windows Vistaには,「.NET Framework」の最新版である「.NET Framework 3.0」が内蔵される。.NET Frameworkには下位互換性(backward compatibility,新しい実行環境で古い実行環境用アプリケーションが動作すること)があるので,既存の.NET 1.0/1.1/2.0用アプリケーションは,Windows Vistaの.NET Framework 3.0で動かないことはない。ただし,互換性は完全ではないので,不具合が生じることもある。

 バージョン間における互換性問題はWindows OSも同じだ。米国「Windows IT Pro Magazine」のPaul Thurrott氏によれば,Windows Vistaの「RC1」では,「Adobe Photoshop Elements 4.0」で互換性問題が発生したという。しかしWindows Vistaの「RC2」では,Photoshop Elements 4.0が問題なく動いた。Photoshop Elements 4.0は変わっていないのだから,OSの側で何らかの対応をしたと考えるのが自然だ。従来からのマイクロソフトの伝統が,Windows Vistaでは生きている。

 ところが.NET Frameworkでは,Windows OSで行っているような「泥縄的な互換性維持の努力」(アプリケーション側の問題にOSが対処する手法)は,初めから放棄されている。「古いバージョンの.NETアプリケーションは,なるべく同じバージョンの.NET Frameworkで動作させる」というのが.NET Frameworkの基本である。実は,2002年の.NET Frameworkの登場以来,この基本は全く変わっていない。

 よって記者も,.NET Frameworkの原則を問題視しているわけではない。.NETアプリケーションを新しいバージョンの.NET Frameworkで動かして問題が発生したのであれば,古いバージョン(アプリケーションと同じバージョン)の.NET Frameworkをインストールすればいいからだ。

 つまり,Windows Vistaの.NET Framework 3.0で.NET 1.1アプリケーションが動かないのであれば,Windows Vistaに.NET Framework 1.1をインストールすればいいだけの話である。.NET 2.0アプリケーションは,.NET Framework 2.0ではなく.NET Framework 3.0で動かすのが正解だ。.NET Framework 2.0と3.0は,フレームワークの本体である仮想マシン「「CLR(Common Language Runtime)」のバージョンが同一だからだ。詳しくはWindows Vistaにおける.NETアプリケーションの互換性問題という解説記事をご覧頂きたい。

.NET 1.0アプリケーションは.NET 3.0で動かすしかない

 問題なのは,.NET Framework 1.0がWindows Vistaでサポートされていないことだ。.NET Framework 1.0をWindows Vistaにインストールしようとすると,図1のような画面が表示される。一応インストールはできるのだが,それは「サポート対象外」となる。つまり,.NET 1.0アプリケーションは,Windows Vistaの.NET Framework 3.0で動かすしかない(.NETアプリケーションは同じバージョンの.NET Frameworkが存在しない場合「最新」のバージョンで動くことになっている)。

図1●NET Framework 1.0をWindows Vistaにインストールしようとすると表示されるメッセージ

 記者はこの問題に,納得しがたい感情を抱いている。確かに,現在流通している.NETアプリケーションのほとんどは,.NET 1.1/2.0アプリケーションであり,.NET 1.0アプリケーションがWindows Vista上で完全に動かなくても,ほとんど誰も困らないだろう。

 しかし「誰も困らない」というのは,あくまでもユーザー側の本音である。マイクロソフトには「.NETアプリケーションは同じバージョンの.NET Frameworkで動かす」という「建前」を,Windows Vistaでも維持し続けてほしかった。何しろ2002年に登場した.NET Framework 1.0は,まだ「メインストリーム・サポート・フェーズ」の製品だからだ。

 もちろん「建前を守っても得られるものは少ない」という理屈は,よく理解できる。ユーザーも本音では「マイクロソフト製品はバージョン3にならなければアテにならない」と思っている。.NET Frameworkは,実質的には1.0が「バージョン1」,1.1が「バージョン2」,2.0と3.0が「バージョン3」なので,ユーザーは「またバージョン3の法則か」と思うだけで,今まで以上にネガティブな印象は持たないかもしれない。

 それでも,マイクロソフトが律儀に建前を守れば,ユーザーからの信頼は増すはずだ。マイクロソフトが目指す「Trustworth Computing」(信頼できるコンピューティング)も,より強固になっただろう。

 Windows Vista全体に関しても,同じことが言える。ユーザーは本音では「新しいWindowsはService Packが出るまでは“人柱”用」と思っているから,Windows Vistaで不具合が頻発しても「いつものこと」と思うだけで,Windowsそのものを見捨てることはまれかもしれない。

 だがマイクロソフトには,「ユーザーの本音」に妥協してほしくない。自分が設定した建前を愚直なまでに守っている姿を,できれば見たかった。ユーザーとしても「マイクロソフトはけしからん」と「ツンツン」するばかりではなく,たまには「マイクロソフトもよくやってる」と「デレデレ」してみたいはずだ。