特集
.NET Framework 3.0概説(前編)

.NET Framework 3.0がソフトウェア開発にもたらす価値とは?

マイクロソフト株式会社 中原 幹雄
2006/11/15
Page1 Page2 Page3 Page4

2. WPF(Windows Presentation Foundation)

 WPFは、Windows Vista時代の新しいUIの世界をもたらすべく設計された、新しいGUIのアプリケーション開発のためのフレームワークだ。

●Windows GUIテクノロジの統合と統一プログラミング・モデル

 UIはアプリケーションの「顔」であり、アプリケーションの良しあしに直結する極めて重要な要素だ。ユーザーのUIに対する要求は高まる一方であり、より使いやすく、より直感的なUIの実現は、今後も大きな課題になると考えられる。

 現在、Windows上でUIを表現するためのテクノロジとしては以下のものがある。

  • 標準的なWindows UIコントロール
  • 2Dグラフィックス
  • 3Dグラフィックス
  • イメージ(静止画)
  • ビデオ(動画)
  • アニメーション
  • ドキュメント

 もちろんこれらの要素をやみくもに組み合わせて使用しても、使いやすく、直感的なUIを作れるわけではないが、効果的に活用することで、いままでにないユーザー・エクスペリエンスを実現するUIを構築することは可能だ。ただ、こうした多種多様なUIテクノロジを扱う一貫性のあるアプローチが存在しなければ、そのようなUIを実現することは難しい。現にいままでは、上記の要素は異なるAPIによって扱わなければならず、効果的に組み合わせることは容易ではなかった。

 WPFは、こうしたさまざまなUIの表現に対応するための統一されたテクノロジ基盤とプログラミング・モデルを提供し、多種多様なUIテクノロジの扱いに一貫性のあるアプローチを与えてくれる。

WPFアプリケーションのUI
この画面はWPFで実装されている医療システムのデモ・サンプルであり、3Dやアニメーションを効果的に活用したUIの例だ。モニタしているグラフを合成し、3D空間で表現している。また、左隅の斜めに表示されているメニュー領域もクリックすることが可能。

 WPFは、WebアプリケーションのUI記述言語であるHTMLのメリットも、プログラミング・モデルの中に積極的に取り入れている。例えば、後述するXAML(ザムル)と呼ばれるUI記述言語が提供されており、UIを宣言的*1にプログラミングしていくことが可能だ。また、HTMLのようなフロー・ドキュメントを表現することが可能になっている。さらに、CSSのようなスタイルの概念もサポートしており、UIのレイアウトとスタイルを分離し、複数のUIに対して共通のスタイルを適用することが可能になっている。

 WPFのUIの描画処理については、Direct3Dを経由したベクター・ベースの解像度非依存なものになり、GPUをフルに活用するようになる。

*1 “宣言的”なプログラミングとは、「プログラムで実行されること」(=宣言)を記述していくスタイルのプログラミングのことである。例えば「UIに表示されるグラフ」というような内容を記述する。ちなみに、宣言的の逆の意味で使われる“命令的”なプログラミングとは、「プログラムで実行される命令の手順」を記述していくスタイルのプログラミングのことで、例えば「グラフを作成する」「どこの位置に表示する」といった命令の手順を記述することだ。

●新UI記述言語“XAML”

 先ほども述べたようにWPFでは、XMLベースのXAML(eXtensible Application Markup Language)という新しいUIの記述用言語が提供されている。このXAMLはWPFのUI要素(UIコントロールなど)と1:1に対応しており、開発時にはXMLタグによって宣言的に記述していくが、ビルドや実行時には実行コードにコンパイルされる。

 XAMLを使わなくてもC#やVisual BasicのコードだけでWPFのUIを作成することも可能だが、XAMLを使うことでUIデザインを宣言的に行い、ビジネス・ロジックを呼び出すイベント・ハンドラのコードをパーシャル・クラスに分離してUIを構築していくことが可能だ。

 また、UI要素にほかのUI要素を入れ子にして複合化することが可能なコンテンツ・モデルが採用されており、複合的なUIを非常に簡単に構築することができる(例えば、ボタンの中にイメージや2Dグラフィックスを入れ子にするなど)。

 Webアプリケーションの世界では、UIデザインを担うHTMLやCSSをデザイナーが作り、Webページの動作や処理を担当するJavaScriptやサーバ・サイド・ロジックを開発者が作る、といった分業化が進んでいるが、XAMLによってWindowsアプリケーションにおいても同じようなデザイナーと開発者の分業が可能になる。そのためのデザイナー向けツールとして「Expression Interactive Designer」が提供される予定だ。

 Expression Interactive Designerでは、必ずしもプログラミングが得意ではないが高いUIデザインの専門スキルを持ったデザイナーが、UIのデザインを担当できるようになるため、より高度なユーザー・エクスペリエンスを持つWindowsアプリケーションの提供が期待できる。また、デザイナーと開発者の並行開発が可能になることによって、アプリケーションの開発期間の短縮も見込める。

●WPFアプリケーションの形態と展開

 WPFがサポートする主なアプリケーション形態は以下の2つであり、システムの要件に応じて使い分けることができる。

  • セルフ・ホスト型アプリケーション(スタンドアロン)
  • XBAP(XAML Browser Application):Webブラウザ・ホスト型アプリケーション

 セルフ・ホスト型アプリケーションの場合は、WPFならびに.NET Framework 3.0の機能をフルに活用することができるが、(クライアントPCがWindows Vistaでない場合には)何らかの方法でそれらを事前にクライアントPCにインストールする必要がある。WPFは.NET Framework 2.0から登場したアプリケーション配置技術であるClickOnceを利用可能であるため、アプリケーション自体はClickOnceによって展開することが可能だ。

 XBAPはWebブラウザ上でホストされて実行されるWPFアプリケーションであり、セキュリティ・サンドボックス上で実行されるため、スタンドアロンに比べると若干機能的な制約があるが、アプリケーションのインストールが不要であるため、展開が容易だ。

 もっとも、XBAPにおいてもクライアント側にWPFの実行環境である.NET Framework 3.0が必要になるため、イントラネット環境ではXBAPの採用を検討する価値は十分あるが、不特定多数のプラットフォームでの展開が求められるインターネット環境での使用は現時点では難しい。しかし現在、Mac OSやモバイル・デバイスなどの非Windows PC環境上でのWPFアプリケーション実行環境である、“WPF/E”という開発コード名で呼ばれているWPFのサブセット・ランタイムの提供が計画されている。このWPF/Eがリリースされれば、XBAPはインターネット環境においても活用していくことが可能になる見込みだ。


 INDEX
  [特集] .NET Framework 3.0概説(前編)
  .NET Framework 3.0がソフトウェア開発にもたらす価値とは?
    1..NET Framework 3.0とは何か?
  2.WPF(Windows Presentation Foundation)
    3.WCF(Windows Communication Foundation)、WF(Windows Workflow Foundation)
    4.対応プラットフォームと開発環境
 
  [特集] .NET Framework 3.0概説(後編)
  .NET Framework 3.0新技術の使い分け指針
    1.WPF活用時の考慮点
    2.WCF活用時の考慮点
    3.WF活用時の考慮点
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間