WisdomSoft - for your serial experiences.

1.3 Windows Presentation Foundation

Windows Presentation Foundation の概要と .NET Framework 3.0 における位置づけ、全体の構造を説明します。

1.3.1 .NET Framework 3.0

Microsoft は、Windows XP に続く新しいバージョン Windows Vista を 2006 年末に発売しました。この最新の Windows は、Windows XP と比べても革新的な機能が数多く追加されています。Windows Vista の機能の詳細は省略するとしても、そのリッチなグラフィックスやユーザ インターフェイスには驚かされることでしょう。

Microsoft は、Windows Vista に搭載する新機能の目玉の 1 つに WinFX と呼ばれるコードネームの新しい API を掲げていました。WinFX は、.NET Framework に追加される高度な機能を持つクラスライブラリとして開発が進められてきました。WinFX は、.NET Framework 3.0 と名付けられ、正当な .NET Framework の次期バージョンとして発表されることになりました。

.NET Framework 3.0 は Windows Vista で標準搭載されるほか、Windows XP SP2 や、Windows Server 2003 上にインストールすることも可能です。本書では .NET Framework 3.0 を使って学習を進めますが、Windows Vista は必須ではありません。Windows Vista または Windows XP SP2 があれば、本書を用いて学習していただくことができます。

.NET Framework 3.0 では、従来のプログラミングで複雑化していた様々な機能を統廃合し、より効率的に最先端のプログラミングを記述できる環境を整えています。.NET Framework 3.0 で追加された高度な機能は、以下の 4 つにまとめることができます。

  • Windows Presentation Foundation (WPF)
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation (WF)
  • Windows CardSpace (WCS)

新しいユーザ エクスペリエンスを提供する Windows Presentation Foundation は、ウィンドウや図形、イメージなど、グラフィックスに関連した API であり、本書が解説対象としている新機能です。開発当時は "Avalon" というコードネームで呼ばれていました。

Windows Workflow Foundation は、何らかの処理の流れを記述した図形を処理するロジックをサポートする API です。WWF と省略することもできますが、世界自然保護基金 (World Wide Fund for Nature) の略である WWF が一般的に普及しているため、WF と略すのが一般的です。

Window Communication Foundation は、かつては "Indigo" というコードネームで呼ばれていた、分散されたサービス指向のアプリケーションを構築するための API。Windows CardSpace は、"InfoCard" というコードネームで開発されていた認証システムです。本書は WPF を専門に解説することを目的としているため、WF、WCF、WCS については割愛させていただきます。

図01 .NET Framework 3.0 の構造
.NET Framework 3.0 の構造

.NET Framework 3.0 は、従来の .NET Framework 2.0 の機能に加えて上記のような新しい機能を加えた形になります。.NET アプリケーション開発用のプログラミング言語や、仮想マシンである共通言語ランタイム、中間言語などに変更はありません。そのほかに機能はすべて .NET Framework 2.0 をそのままに、WPF などの機能を加えたのが .NET Framework 3.0 です。

従来の .NET Framework 2.0 を対象としたプログラムは、そのまま .NET Framework 3.0 環境でも動作します。アプリケーションが .NET Framework 3.0 に対応するということは、単に .NET Framework 3.0 で追加されたクラスライブラリを利用するアプリケーションという意味になります。

1.3.2 全て遠き理想郷

新しい .NET Framework で追加された様々な機能の中で、グラフィックスやユーザ インターフェイスに関連した一連の新機能を Windows Presentation Foundation (WPF) と呼んでいます。WPF は元々 Avalon という名前のコードネームで進められたグラフィックス API で、.NET Framework 3.0 の新しい機能の 1 つです。

WPF は、従来の GUI 関連 API に比べ、極めて高い柔軟性と高度な演出能力を持ち、よりリッチなアプリケーション開発を実現します。本書では、この WPF の詳細を解説します。

WPF を用いることによって、これまで以上に高度な演出力を持った GUI アプリケーションを構築することができます。従来のクラスライブラリでは分散されていた様々な機能が統合され、開発者やデザイナはより自由に、柔軟に GUI を設計できるようになるのです。

これまでの Windows アプリケーション開発と同様に、WPF の場合も基礎となっているのは Win32 API ですが、従来のクラスライブラリとは異なり GDI を利用していないのが大きな特徴です。これまでの .NET Framework で Windows アプリケーションを開発する場合は System.Windows.Forms 名前空間のクラスを使ってきましたが、この名前空間が提供するコントロールや描画ロジックは、全て Win32 API と GDI をパッケージ化したラッパークラスとしての性質が色濃く残されていました。

WPF は、System.Windows.Forms 名前空間に取って代わる新しいグラフィックス API です。WPF は GDI ではなく DirectX をベースとした新しい描画ロジックを採用しているため、より高度な演出が可能となっています。プログラミング モデルも大幅に変更されているため、従来は非常に複雑な仕組みで作らなければならなかった高度なプレゼンテーションも、WPF を用いることで洗練された設計の元に開発を進めることができます。

1.3.3 エクスペリエンス

WPF を使って開発したアプリケーションは、これまでの Windows アプリケーションと何が違うのでしょうか。WPF は、これまで存在していなかったすばらしい概念や技術を提供してくれるのでしょうか。

正しくは、WPF は新しい概念や技術を提供するものではありません。洗練された部分は多々あれども、WPF を使わなくても、Windows Vista のアプリケーションを開発することは可能です。WPF は、これまでの API で作れなかったものを作ることができるようにするというような、特別な技術ではないのです。

では、WPF に移行するメリットとは何かと思うかもしれません。WPF は、新しい概念や技術を提供するのではなく、新しいユーザ エクスペリエンスを提供するのです。

ユーザ エクスペリエンスとは、得られる結果ではなく、その結果に到達するまでの過程や、その間の操作に感じるユーザの体験を意味しています。例えば、鉛筆を削るという結果が同じであっても、ナイフを使って鉛筆を削る場合と、鉛筆削りを使って鉛筆を削る場合とでは、ユーザ エクスペリエンスが異なるのです。得られる結果(作られた物)が同じでも、その家庭はまったく異なります。鉛筆削りを使ったほうが、はるかに効率的で、最適であると感じることができるでしょう。

WPF の場合も同じです。一度 WPF を体験すれば、古い API よりも圧倒的に効率的であることを理解することができます。本書を通じて WPF の理解を深めていただければ、WPF の魅力を感じていただけるはずです。