マイクロソフトの次期クライアントOS「Windows Vista」には,「.NET Framework」の最新版「3.0」が内蔵される。.NET Framework 3.0は,現在使われている「.NET Framework 1.0/1.1/2.0」と互換性を持っているが,完全という訳ではない。Windows Vistaで既存の.NETアプリケーションを使う際の注意点を紹介しよう。

 .NET Frameworkは,2002年に「.NET Framework 1.0」として初登場した後,2003年に「.NET Framework 1.1」が,2005年に「.NET Framework 2.0」がリリースされた。Windows Vistaの登場と同時に「.NET Framework 3.0」がリリースされ,Windows Vistaに内蔵される。.NET Framework 3.0は,Windows XPやWindows Server 2003にも提供される予定だ。

 .NETアプリケーションは,徐々にではあるが増加している。筆者が確認した限りでも,マカフィーのセキュリティ対策ソフトの最新版「マカフィー・インターネットセキュリティスイート2007」やシマンテックの「Norton Ghost 10.0」,デルのサーバー管理ツールやカナダATI Technologiesのグラフィック・ボード管理ツールといった商用ソフトが,.NETアプリケーションだった。また米NASAの地球儀ソフト「World Wind」など,フリーソフトでも.NETアプリケーションが増えている。

.NETの基本は「同じバージョンで動かす」

 .NET Frameworkにおけるバージョン間の互換性問題は,Windows OSにおける互換性問題と事情がやや異なるので注意が必要だ。マイクロソフトは,.NET Frameworkには下位互換性(backward compatibility,新しい実行環境で古い実行環境用アプリケーションが動作すること)があると主張する一方で,特定バージョン用の.NETアプリケーションは,同一バージョンの.NET Frameworkで実行するように推奨している。Windows OSと異なり,.NET Frameworkは1つのOS内に複数のバージョンを混在してインストールできる。

 .NET Frameworkの互換性問題を理解するために,まずは現行のWindows XPやWindows Server 2003で.NETアプリケーションがどのように実行されるのか,簡単に説明しよう。

 OSに複数のバージョンの.NET Frameworkがインストールされている場合,.NETアプリケーションは「サイド・バイ・サイド」で動作する。つまり,同じバージョンの.NET Frameworkが存在する場合,同じバージョンの.NET Frameworkを呼び出し,同じバージョンの.NET Frameworkが存在しない場合,最新の.NET Frameworkを呼び出す(表1)。

表1●Windows 2000/XP/Server 2003で.NETアプリケーションを起動した場合
.NET 1.0だけ .NET 1.1だけ .NET 2.0だけ .NET 3.0だけ .NET 1.0/1.1 .NET 1.1/2.0 .NET 1.1/2.0/3.0
VS .NET 2002(.NET 1.0) ▽(.NET 1.1) ▽(.NET 2.0) ▽(.NET 3.0) ▽(.NET 2.0) ▽(.NET 3.0)
VS .NET 2003(.NET 1.1) △(.NET 1.0) ▽(.NET 2.0) ▽(.NET 3.0)
VS 2005(.NET 2.0) × × ×
※○:バージョンが一致する,▽下位互換,△上位互換,( )内は呼び出される実行環境のバージョン
注:下位互換(backward compatibility)は,新しい実行環境で古い実行環境用アプリケーションが動作すること。上位互換(forward compatibility)はその逆

 まず.NET 1.1アプリケーションについて考えてみよう。.NET Framework 1.1が存在する場合は,.NET 1.1アプリケーションは.NET Framework 1.1上で動作する。.NET Framework 2.0しか存在しない場合,.NET 1.1アプリケーションは.NET Framework 2.0上で動作する。

 ただし,.NET Framework 1.1と2.0には完全な互換性がない。そのため,.NET 1.1アプリケーションを.NET Framework 2.0で実行すると問題が生じる可能性がある。よって,.NET 1.1アプリケーションを実行したいのであれば,.NET Framework 1.1をインストールするのが望ましい。

 次に,.NET 2.0アプリケーションについて説明する。.NET Framework 1.1と.NET Framework 2.0には上位互換性(forward compatibility,古い実行環境で新しい実行環境用アプリケーションが動作すること)がない。そのため,.NET 2.0アプリケーションは.NET Framework 1.1上では動作しない。.NET 2.0用アプリケーションが動作するのは,.NET Framework 2.0が存在する場合だけである。

.NET 3.0の「中身」は.NET 2.0と同じ

 それでは,今後リリースされる「.NET Framework 3.0」をWindows XP/Server 2003にインストールした場合はどうなるだろう。

 実は,.NET Framework 3.0は,.NET Framework 2.0に「Windows Presentation Foundation(WPF)」(開発コード名:Avalon)と「Windows Communication Foundation(WCF)」(開発コード名:Indigo)などを追加しただけものである。.NET Framework 3.0の仮想マシン「「CLR(Common Language Runtime)」のバージョンは,.NET Framework 2.0のCLRと全く同一だ。そのため,.NET 2.0アプリケーションを.NET Framework 3.0上で実行しても,互換性問題は発生しない。.NET 1.1アプリケーションを.NET Framework 3.0上で実行するのとは,全く事情が異なる(.NET 1.1アプリケーションを.NET Framework 3.0上で実行すると互換性問題が発生する可能性がある)。

 なおWPFやWCFを使用するアプリケーション(.NET 3.0アプリケーション)を実行するには,.NET Framework 3.0が必要だ。

既存.NETアプリケーションをVistaで動かしたい場合

 それでは,Windows Vistaで.NETアプリケーションを実行する場合に,どのような注意が必要になるだろうか(表2)。

表2●Windows Vistaで.NETアプリケーションを起動した場合
.NET 1.0/3.0 .NET 1.1/3.0 .NET 2.0/3.0 .NET 3.0だけ
VS .NET 2002(.NET 1.0) 共存不可 ▽(.NET 3.0) 共存不可 ▽(.NET 3.0)
VS .NET 2003(.NET 1.1) ▽(.NET 3.0)
VS 2005(.NET 2.0)
※○:バージョンが一致する,▽下位互換,△上位互換,( )内は呼び出される実行環境のバージョン
注:下位互換(backward compatibility)は,新しい実行環境で古い実行環境用アプリケーションが動作すること。上位互換(forward compatibility)はその逆

 Windows Vistaには,.NET Framework 3.0が初めからインストールされている。前に述べたように,.NET Framework 3.0のCLRは.NET Framework 2.0と同一なので,.NET 2.0アプリケーションはWindows Vistaでそのまま動作する。ただしマイクロソフトデベロッパー製品部の近藤和彦シニアプロダクトマネージャは「OSのバージョンが変わっているので,Windows XP/Server 2003上で動作する.NET 2.0アプリケーションが,Windows Vistaで確実に動作するとは限らない。Windows Vista RC1などを使用して,今から動作検証をしてほしい」と指摘する。

 もっとも,現在流通している.NET 2.0アプリケーションはごく少数だ。.NETアプリケーションの多くは,.NET 1.1アプリケーションである。

 Windows Vistaに内蔵される.NET Framework 3.0には下位互換性があるので,.NET 1.1アプリケーションはWindows Vistaでそのまま動作しなくはない。ただし.NET 3.0と.NET 1.1に完全な互換性はないので,問題が生じる恐れがある。よって,.NET 1.1アプリケーションを使いたいのであれば,Windows Vistaに.NET Framework 1.1をインストールするのが望ましい。現在配布されている.NET Framework 1.1のランタイム・パッケージは,問題なくWindows Vistaにインストールできる。

.NET 1.0はWindows Vistaのサポート対象外

 残念なのは,.NET Framework 1.0と.NET 1.0アプリケーションが,Windows Vistaでサポート対象外になったことである。.NET 1.0アプリケーションを使うのであれば,.NET Framework 1.0が存在するのが望ましい。しかしマイクロソフトの近藤氏は「.NET Framework 1.0はWindows Vistaでサポートしない」という。実際に.NET Framework 1.0のランタイム・パッケージをWindows Vistaにインストールしようとしたところ,図1のような警告画面が表示された。

図1[画像のクリックで拡大表示]

 実際にはその後,.NET Framework 1.0のインストールは継続でき,.NET 1.0アプリケーションがWindows Vista上の.NET Framework 1.0で動作できたのだが,これは「サポート対象外」の行為になるだろう。

 .NETアプリケーションは,同じバージョンの.NET Frameworkが存在しない場合,最新の.NET Frameworkを呼び出す。よって,Windows Vistaで.NET 1.0アプリケーションを利用する場合,.NET Framework 3.0が呼び出されることになる。

 マイクロソフトは,Visual Basic 6.0で作成したVBアプリケーションのWindows Vistaでの動作をサポートしているが,. VB6よりも新しい.NET 1.0をWindows Vistaでサポートしなかった。実際のところ,.NET 1.0アプリケーションはほとんど存在しないため,ユーザーにとっての実害は大きくないだろうが,プラットフォームを提供するメーカーとして,残念な対応であると言えるだろう。