Microsoft Windowsの最新版である「Windows Vista」は,どのようなOSでしょうか。OSの基本機能を紹介した「Part1 今さら聞けないOSの疑問」に続くPart2では,最新Windowsの実態をプログラマ向けに明らかにします(注:記事内容は2006年中旬時点の情報に基づいています)。

 Windows Vistaは,高速な検索,より強固なセキュリティ対策,RSS(Really Simple Syndication)を扱うAPI,新しいInternet Explorerなど,数多くの新機能が搭載され,Windows XPとはかなり違った印象のOSです。

 数ある新機能の中で,プログラマに最も関係が深いのは,新しいアプリケーション開発/実行環境である「.NET Framework 3.0」です。開発段階では,既存のWin32 APIを置き換える新しいAPI(開発コード名:WinFX)になると言われていましたが,その後スケールダウンして最終的には.NET Framework 2.0への追加コンポーネントとして提供されます(図1)。

図1●.NET Framework 3.0の位置付け。肌色の部分が3.0で新たに登場する要素。基本クラスライブラリやCLRといった基盤の部分は.NET Framework 2.0と共通のものを使う。3.0対応アプリケーションから2.0のライブラリを使うことも可能
図1●.NET Framework 3.0の位置付け。肌色の部分が3.0で新たに登場する要素。基本クラスライブラリやCLRといった基盤の部分は.NET Framework 2.0と共通のものを使う。3.0対応アプリケーションから2.0のライブラリを使うことも可能
[画像のクリックで拡大表示]

 .NET Framework 3.0が2.0の機能追加として実装されるということは,Windows Vistaには .NET Framework 2.0の実行基盤も搭載されるということです。つまり,ADO.NETやASP.NETなどの2.0が提供する機能もそのまま使えます。また,既存の.NET Framework 2.0向けに作成したアプリケーションはほとんどの場合,そのままWindows Vistaでも動作します。

 では,.NET Framework 3.0は新たに何を提供するのでしょうか。.NET Framework 3.0は,大きく4種類のコンポーネント群に分けられます。一つ目は,柔軟なユーザー・インタフェース構築を可能にする「Windows Presentation Foundation(WPF)」。二つ目は,Webサービスなどを使った分散アプリケーションの構築を容易にする「Windows Communication Foundation(WCF)」。三つ目は,アプリケーションの処理の流れを「ワークフロー」という形でとらえ,アプリケーション構築を省力化する「Windows Workflow Foundation(WF)」,最後はWebサイトの認証などを楽にする,新しいオンライン認証の仕組みである「Windows CardSpace(WCS)」です。

 中でもWPFは,従来のWindowsアプリケーションのユーザー・インタフェース構築法をがらっと変えてしまうほど大きなインパクトを持っています。表現力の幅が大きく広がったと同時に,従来とは全く異なる手法が要求されます。この記事では,Windows Vistaの目玉であるWPFを,新しいWindowsフォーム・アプリケーションの構築方法を具体的に示しながら解説します。

XMLベースの言語でUIを開発する

 WPFを簡単に言うと,今までのWindowsフォームとは全く違う見た目のユーザー・インタフェースを提供するための仕組みです。そしてWPFには,ユーザー・インタフェースのデザインをプログラム・コードから分離するという目的もあります。

 ユーザー・インタフェースというと,Windows Vistaが新たに搭載するGUI「Aero Glass」を思い浮かべる方もいるかもしれません。Vistaのデモなどで,アルファ・ブレンディング(アルファ値を使った合成)を利用して半透明表示させたウィンドウをご覧になった方も多いでしょう。また,デスクトップ上に開いた複数のウィンドウを3D空間に浮かぶ板としてとらえ,立体的に並べる「Windowsフリップ3D」も見た目に印象的な新機能です。このようにAero Glassは,ウィンドウを透過したり,合成したりすることで見た目の効果を実現する仕組みです。

 それぞれユーザー・インタフェースがらみの技術ですが,WPFとAero Glassは直接関係するものではありません。開発者の観点から見ると,Aero Glassはプログラミングに直接影響するものではないのです。従来と同じようにアプリケーションを作って,Windows Vista上で実行すれば,自動的にAero Glassのウィンドウで表示されます(図2)。

図2●.NET Framework 2.0対応アプリケーションをWindows Vista上で実行したところ。特別修正することもなく,半透明のタイトルバーなどWindows Vistaの標準的なスタイルで表示される
図2●.NET Framework 2.0対応アプリケーションをWindows Vista上で実行したところ。特別修正することもなく,半透明のタイトルバーなどWindows Vistaの標準的なスタイルで表示される

 WPFの最大の特徴は,ユーザー・インタフェースの形を定義するマークアップ言語「XAML(eXtensible Application Markup Language),ザムルと読む」を導入した点にあります。サンプルを使って説明しましょう。例えば,図3のような簡単なWindowsフォームのアプリケーションがあります。実行するとテキストボックスをもつフォームが現れ(図3(a)),名前をテキストボックスに入力して,[OK]ボタンを押すと,入力した名前を含むメッセージを表示します(図3(b))。通常こうしたアプリケーションは,Visual Studio(VS)でフォームをデザインして,ボタンのイベント・ハンドラにコードを入力するといった手順で作ります。

図3●WPFの機能を利用して作成した簡単なアプリケーション。テキストボックスに名前を入力して,[OK]ボタンを押すと(a),入力した名前を含むメッセージを表示する(b)
図3●WPFの機能を利用して作成した簡単なアプリケーション。テキストボックスに名前を入力して,[OK]ボタンを押すと(a),入力した名前を含むメッセージを表示する(b)

 WPFを利用すると,アプリケーションの構成や作り方がちょっと変わります。このプログラムはリスト1リスト2の二つのファイルから成り立っています。

リスト1●図3のアプリケーションの画面レイアウトを定義したファイル。XAMLというXMLベースの言語で記述されている
リスト1●図3のアプリケーションの画面レイアウトを定義したファイル。XAMLというXMLベースの言語で記述されている
[画像のクリックで拡大表示]

リスト2●図3のアプリケーションのロジックを実装したC#のコード
リスト2●図3のアプリケーションのロジックを実装したC#のコード
[画像のクリックで拡大表示]

 リスト1はXAMLのコードです。ファイルの拡張子は「.xaml」です。XAMLはXMLベースの言語で,画面レイアウトなどのユーザー・インタフェースの記述に利用します。では,XAMLコードの中身をちょっと見てみましょう。

 (1)のWindowタグ(<Windows>)はウィンドウに相当します。(2)や(3)は,フォーム上のテキストボックスやボタンをそれぞれ表しています。「Margin」や「Height」という属性から,大きさや位置を指定していることがわかるでしょう。このようにWPFでは,タグを利用した記述でフォームを表現します。実際,Windows Vista上で,.xamlファイルを直接ダブルクリックすると,「Windows Presentation Foundation Host」と呼ばれるアプリケーションが起動して,.xamlに定義された通りの画面をInternet Explorer上に表示します。

 一方,リスト2はC#を使ったロジックの実装です。簡単なコードなので,すぐに読み解けると思います。(1)の「Window」という名前のクラスは,WPFが提供する新しいクラスです。WPFでは,新しいユーザー・インタフェースを提供するクラスライブラリが用意されています。(2)ではメッセージボックスを表示しています。ただし,これは従来からある .NET Framework 2.0のライブラリを使用しています。このように .NET Framework 3.0のプログラムでは2.0のライブラリを併用することが可能です。

 この二つのファイルは,実行時にそのまま使うわけではありません。.xamlファイルは,C#やVisual Basic(VB)のソースコードにいったん変換され,ロジックのファイルとともにコンパイルされます。その結果,.NET対応のEXEやDLLファイルが出力されます。