Windows の互換性の話。

Windows の互換性の話。

Windows は他のOSに比べて互換性がとても優れていると思います。例えば、Windows 95 用のアプリケーションでも、Windows 7でも問題なく動くこともよくあります。

これは、Windows が高いシェアを会得してきた大きな要因になっていると考えられます。Windows をバージョンアップしても古いアプリケーションが使えるので安心して、新しい Windows を買いますし、逆に 新しいアプリケーションでも古い Windows でも動くので、安心してアプリケーションをバージョンアップできる、そうやって Windows のエコシステムが繁栄してきたのだと思います。

イメージ

(Windows NT 4.0の『Windows NT 診断プログラム』は Windows 7 でも動作する。)

しかし、優れた互換性は、市場が成熟して進化が緩やかになると、逆に Windows エコシステムに悪影響を与える可能性もあります。つまり、新しいアプリケーションや Windows に明確なメリットがなければ古いものをそのまま利用されて、新しい製品が売れなくなってしまうという問題です。この最たる例が、未だに人気の Windows XP です。

そんな流れの中、最近ではこの互換性が以前よりも失われつつあるような気がします。もちろん、最新の Internet Explorer や Windows Live! のアプリケーションが古い Windows で使えないのはマーケティングの都合でしょうから仕方ないと思います。問題はもっと根本的な問題として、プログラムの互換性が低くなっている、言い方を変えれば互換性について注力されていないような様子が垣間見れるのです。

例えば、同じソースコードで作ったプログラムでも、 Visual Studio 2005 でコンパイルしたものは Windows 98/NT 4.0 でも動作しますが、現行の Visual Studio 2008 でコンパイルすると動作しなくなります。サポート外なのではなく、動かなくなるのです。来年登場するという Visual Studio 2010 では、Windows 2000 でも動作しなくなります。

イメージ

(Visual Studio 2008 で作成したアプリケーションは、Windows 98では動作しない。)

以前、Windows 2000 に搭載されていた mspaint.exe(ペイント) をWindows NT 4.0 上で実行したことがあるのですが、問題なく動作しました。しかし、Windows Vista に搭載された mspaint.exe(ペイント) を Windows XP で実行すると『有効な Win32 アプリケーションではありません。』のような表記がでてしまいます。

イメージ

(Windows Vista の mspaint.exe (ペイント)を Windows XP で実行したところ。)

もちろん、これはイレギュラーな例ですからこれが動かないこと自体は問題はないのですが、問題は『Win32 API で作成されたアプリケーション』がOSによって『有効なWin 32 アプリケーション』として見なされないということです。

以前にも、古いOS上でうまく動かないアプリケーションはありましたが、だいたい共有ライブラリ (Dll) のバージョンが違う(エントリポイント○○が、××.dllに見つかりません的なエラーメッセージがでてくる)とか、メモリアクセスの例外が発生するとか、アプリケーションを動作するにあたって問題が発生することがほとんどでした。しかし、これはもっと根本的な部分でエラーが発生しているようです(実行すらされていない?)。

余談ですが、その逆はできたりします。ライセンス的にはグレーだと思いますが、どうしてもリボンのペイントになじめない方はこういう解決方法もあるということで。

イメージ

(Windows 7 上で Windows Vista の mspaint.exe (ペイント)を実行したところ。)

これらを考えると、古い OS では新しく登場するアプリケーションが動かないように設計にしているように思えてきます。もちろん、技術的ななんらかの問題によって仕方なく互換性を犠牲にしている可能性も残されていますが、かの技術力をもつ Microsoft さまが本気になっても解決できないほどの問題でもないと思うわけです。

今後も Windows が独占に近いシェアを維持し続けていられるのであれば、ユーザーにとってはおもしろくなくても、これはこれで営業戦略的には問題ないのかもしれません。しかし、全く異なるビジネスモデルを持った Google が徐々に Microsoft の牙城を切り崩そうと虎視眈々と狙っている現状にこの対策はいただけません。Microsoft にあって、Google にないもの、それは膨大な過去の資産です。互換性の軽視は、これを自ら手放すようなもので、もったいないとしか言いようがありません。

現状のソフトウェア業界の停滞は、根本的な問題としてユーザーが新しいOSやアプリケーションの機能に魅力を感じていない点です。Microsoft は世界でもっとも多くの優秀な技術者を雇っている会社の一つだと思います。その素晴らしい技術力の使い方を誤ることなく、ユーザーがお金を出しても新しい OS やアプリケーションをアップグレードしたくなるような魅力的な機能に対して、使ってほしいと1マイクロソフトのファンは思うのです。