クライアントアプリケーションにおいて、グラフィカルユーザーインターフェイス(GUI)は必須の要素です。そして、このGUIをサポートするのがプレゼンテーションプラットフォームです。サーバーで動作するサービスは(設定時以外は)ユーザーインターフェイスは不要ですが、クライアントアプリケーションはそれなしでは役に立たないでしょう。
Windowsクライアントアプリケーション用のプレゼンテーション技術は、Win32、MFC、Visual Basic、さらに.NET Frameworkの Windows Formsと発展し、現在の.NET Framework(バージョン3.0以降)ではWindows Presentation Foundation(WPF)がその役を担っています。
プレゼンテーション プラットフォーム |
Win32 | MFC | Visual Basic | Windows Forms | WPF |
---|---|---|---|---|---|
API、フレームワーク | Win32 | C++ | Visual Basic | .NET Framework2.0まで | .NET Framework3.0以降 |
この歴史において、プレゼンテーションプラットフォーム(※1)は、それぞれのAPIやフレームワークによって、(1)さらに豊富で柔軟な「コントロール(※2)」、(2)さらに高速な描画、(3)さらに高い生産性、(4)プレゼンテーションとビジネスロジックとの分離、などを実現できるよう発展を遂げてきました。
※1 Win32 APIのプレゼンテーションプラットフォームには、これら以外に、高速な描画に特化したDirect3Dがあります。これは主にWindowsおよびXbox360用のゲーム開発のAPIとして標準的に使われています。
※2 コントロール(ユーザーインターフェイス(UI)コントロールとも呼ばれる)は、標準的なUIのビューや機能をカプセル化したもので、ボタン、スライダー、メニューなどがあります。
これらテクノロジの多くは現在でも使用可能ですが、今回は、この長い歴史の中で登場するプレゼンテーション開発技術のすべてを網羅的に述べることはしません。.NET Frameworkバージョン3.0以降で追加された最新技術であるWPFを中心に、その考え方やポイントを述べていきます。
一方で、ブラウザのプレゼンテーションプラットフォームは、HTMLや JavaScriptの拡張(たとえばAJAX)や、Flashや Silverlightのようなブラウザプラグインとして発展してきました。
Windows Presentation Foundation(WPF)とアプリケーション構築
WPF以前のプレゼンテーションプラットフォームでは、コントロールはかなり充実してきたものの、そのカスタマイズは容易ではなく、描画は決して高速とは言えず、またアニメーションというUIとしての重要な機能も個別にプログラミングする必要がありました。さらに表示データと内部データとの結び付け(バインディング)も個別にプログラミングが必要でした。
クライアントアプリケーションでは、昨今、顧客により高いユーザーエクスペリエンス(UX)(※3)の実現が要求されますが、それに十分対応できるだけの柔軟性や生産性は実現できていませんでした。また、デザインとロジックの分離、高度なUI構築を行う専門のデザイナと開発者の共同作業を行うことも容易ではありませんでした。
※3 ユーザーインターフェイス(UI)とユーザーエクスペリエンス(UX)との違いは、前者はユーザーが操作する対象で、後者はユーザーが体験する内容であることです。たとえば、あるゲーム機のUIは体重計ですが、ユーザーの体験(UX)はスポーツやヨガなどさまざまです。
WPFは、上記のような問題点を解決すべくWindows Vistaと同時にリリースされた.NET Frameworkのプレゼンテーションプラットフォームであり、以下のような特徴を持っています。
- 従来のWindows Formsとは異なるまったく新しいアーキテクチャ
- XAML(eXtensible Application Markup Language)と呼ばれるマークアップコードによるデザインとロジックの分離、及び共有
- データバインディング機能
- 豊富なコントロール
- テンプレートやスタイルによる容易なカスタマイズ
- GPUベースの高速なグラフィックス(2Dおよび3D)とメディア再生
- 自動レイアウトドキュメント
- デザイナ向けオーサリングツールであるExpression Blendによる、UIおよびアニメーションのデザイン