諸農 和岳(もろのう かずたか)

ハヤトエンタープライズ所属。15年ぶりに格闘技の世界に再突入しました。道着に袖を通すと気持ちは20代,でも体力や柔軟性は40代のままという現実。稽古の時,ミットを打つ私の掛け声が「そんなのかんけーねー」だったりするのは秘密。

 マイクロソフトは2007年12月14日に,次期開発ツールであるVisual Studio(VS)2008日本語版をMSDN会員向けに提供開始しました。VS 2008を心待ちにしていた日本の開発者の中には,さっそくMSDNサイトからダウンロードして使い始めたという人もいるのではないでしょうか。

 その半面,新しい開発環境にすぐさま移行することをためらっている方も多いと思います。果たして新版のVSはこれまで構築してきた資産を有効に活用することができるのか,それとも全く視点を変えて新しく取り組む必要があるのか。そうした疑問が少なからずあることでしょう。ここでは,VS 2005からVS 2008への移行を検討している人にとっての注意点を,いくつか検証してみたいと思います。

マルチターゲット機能を備えたVS 2008

 .NETに対応した最初の統合開発環境として登場したVS.NETは,先行してリリースされていた.NET Framework 1.0に対応していました。続いて出荷されたVS .NET 2003は,.NET Frameworkのマイナー・バージョンアップである1.1に,2005年に出荷開始されたVS 2005は,.NET Framework 2.0に対応していました。

 このようにVSは,.NET Frameworkの各バージョンに個別に対応するかたちでバージョンアップを続けてきました。しかし,Windows Vistaと同時に出荷された.NET Framework 3.0に対応した新しいVSは,出てきませんでした。開発ターゲットにVistaを選択したい場合には,VS 2005にアドインを追加することで,3.0対応のアプリケーション開発を可能とする状況を作ったのです。

 なぜこのようなことが可能だったのかを理解するためには,.NET Framework 2.0~3.5の構成を知る必要があります。図1は,VS 2008と同時に出荷公開された.NET Framework 3.5のイメージ図です。

図1●.NET Frameworkの構成
図1●.NET Frameworkの構成

 この図の下段にある「CLR」(Common Language Runtime:共通言語ランタイム)が.NET Frameworkの核となります。実は.NET Framework 3.0と3.5は,2.0の共通言語ランタイム上に構築されているのです。つまり,2.0をベースにしてWindows Vistaの目玉機能であるWPF(Windows Presentation Foundation)などに対応する開発・実行機能が追加されたのが3.0,さらにASP.NET AJAXの開発機能を追加したのが3.5というわけです。

 こうした環境だからこそVS 2005への追加モジュールのアドオンで,.NET Framework 2.0と3.0の双方を開発ターゲットにすることができたのです。そして今回新しく登場したVS 2008には,同時に出荷開始された.NET Framework 3.5への対応に加えて,2.0~3.5までの各フレームワーク・バージョンに合わせた開発環境を提供する「マルチターゲット機能」が搭載されました。

 VS 2008の「新しいプロジェクト」ダイアログを見ると,右上に.NET Frameworkのバージョンを選択するコンボボックスがあるのがわかります(図2)。ドロップダウンでターゲットにしたい.NET Frameworkのバージョンを選択すると,ダイアログ内で選択できるアプリケーション・プロジェクトのテンプレートが変化します。

図2●「新しいプロジェクト」ダイアログでは.NET Frameworkのバージョンを選択できる
図2●「新しいプロジェクト」ダイアログでは.NET Frameworkのバージョンを選択できる
[画像のクリックで拡大表示]

 図3は現在の主流である2.0ベースで開発が行えるテンプレートですが,図4のようにWindows Vista対応となる3.0を選択することで,「WPFアプリケーション」のテンプレートを選択できます。このように2.0,3.0,3.5で提供されている機能をプロジェクト・テンプレートから選択できるのがマルチターゲット機能です。

図3●.NET Framework 2.0ベースで選択できるテンプレート
図3●.NET Framework 2.0ベースで選択できるテンプレート
[画像のクリックで拡大表示]

図4●.NET Framework 3.0にするとテンプレートの内容が変わる
図4●.NET Framework 3.0にするとテンプレートの内容が変わる
[画像のクリックで拡大表示]

 マルチターゲット機能は,単にプロジェクト選択だけの機能ではありません。プロジェクトの種類に応じて,ビルド時に参照するアセンブリのバージョンは,各プログラムのプロジェクト・ファイル内で管理されています。