.NET Framework 3.0 のユーザーインターフェース

.NET Framework 3.0においてユーザーインターフェースを担うWinodws Presentation Foundation (WPF) が.NET Framework 3.0 の一部として昨年11月に正式にリリースされてから3ヶ月が経ちますが、現状では開発ツールがないということもあり、本格的な開発はまだこれからという方が多いかもしれません。

開発ツールとしては、現在ベータが提供されている Expression Blend などが近々リリースされるのを筆頭に、現在CTPが提供されているVisual Studio の将来バージョンにもWPFアプリケーションの開発機能が盛り込まれ、徐々に環境が整備されてくることになります。

カンファレンスなどで、短いデモに多くの機能を盛り込み、かつインパクトのあるものを作成しようとすると、ついつい派手なグラフィックスになってしまうせいでしょうか、WPFというと派手なグラフィックスに目が行きがちなようです。

もちろん、DirectXの機能を簡単に使えるという点も含めて、高いグラフィックスの表現能力はWPFの最大の売りの一つではありますが、それだけではありません。むしろ、これらのグラフィックス機能は、どんな要求にも答えることができるための潜在能力としてとらえた方が良いのかもしれません。機能が豊富なことに越したことはありませんが、何を使うかは開発者次第ですし、作るものによっても多く左右されると思います。

派手なグラフィックスに押されて、いまひとつ注目度が高くない部分に目を向けると、大きな利点としてXMLであるExtensible Application Markup Language (XAML)による記述があります。

XAML にはUIの静的な設計だけでなく、ロジックを含めることもできますので、UIの動的な情報も含めて、XAMLに含めることができますし、つまり、動的な情報も含めてUIの一部としてまとめることができ、業務ロジックとは明確に分離して開発することができるようになります。

また、XAMLではWebページのようにページからページへとナビゲートすることができ、画面遷移を中心としたUI設計が可能になります。一方でWebのようにまったく関連無く作成されたページ間がリンクされるモデルの場合には利点となるステートレスなモデルも、WPFアプリケーションでは、ステートの管理が煩雑になるなど必ずしも適しているわけではありません。そこで、WPFでは、新しいイベントモデルを導入し、Webのようにページ間を移動できるようにしつつも、イベントは一括して処理できるようになり、またコードやステートを共有することが可能なモデルになっています。

最後に、配布形態の面でも自由度が非常に高められています。ブラウザアプリケーションとして、Webブラウザ内で動作するアプリケーション作成することもできますし、従来のクライアントアプリケーション同様、Windowsから直接起動するアプリケーションを作成することもできます。また、クリックワンスもXAMLの使用により起動時間を短縮することが可能になりました。他にも、ここに挙げきれないほどWPFには革新的な機能が盛り込まれています。

日本語の取り扱いに関しても、Text Services FrameworkもSystem.Windows.Inputとして標準で組み込まれていますので、IMEをコントロールする場合にもPlatform Invokeは必要なくなるのが大きな利点でしょう。

開発ツールに加えて、(決して派手という意味でなく)WPFの表現能力やその他のメリットを活用したコントロール群などがリリースされていくにしたがって、本格的なWPF時代が到来するのも、そう遠い将来の話ではないという気がします。