連載:XAMLの基礎知識

第1回 Hello Worldとテキスト・エディタで始めるXAML

デジタルアドバンテージ 遠藤 孝信
2007/11/06
Page1 Page2 Page3

 Windows Vistaに標準搭載されている.NET Framework 3.0には、新しいプレゼンテーション技術である、

WPF(Windows Presentation Foundation)

が含まれています。これはDirectXをベースにした描画エンジンと、Windowsアプリケーションを構築するためのフレームワーク(簡単にいえばクラス・ライブラリ)などで構成されています。

 そしてさらに、WPFには、XMLベースの言語である、

XAML(Extensible Application Markup Language)
(「ザムル」あるいは「ザメル」と発音)

が含まれています。XAMLは主に、Windowsアプリケーションや、IEなどのブラウザ内で動作するSilverlightアプリケーションなどのGUIを記述するために使用されます。

 本連載では、Windowsアプリケーション構築での利用をメイン・ターゲットとして、XAMLの基本的な利用方法や記述方法について解説していきます。

特集:.NET Framework 3.0概説
Expression Blendで始めるWPFアプリケーション

 なお、記事中では実際に動作するいくつかのサンプル・プログラムを作成しますが、本連載ではその基本構造が分かりやすいように、すべてテキスト・エディタとコマンド・プロンプトで行うつもりです。Visual Studio(以下、VS)やExpression Blendといった製品ツールは使用しません。

なぜWPF/XAML?

 ところで、.NET Framework 3.0以前(1.1や2.0)では、Windowsアプリケーションを構築するのに、

Windowsフォーム(Windows Forms)

と呼ばれるフレームワークを利用してきました。

 .NET Framework 3.0からは、WPFかWindowsフォームかを選択して(あるいは両者を混在させて)Windowsアプリケーションを作成することができるというわけです。


WPFアプリケーションとWindowsフォーム・アプリケーション
.NET Framework 2.0では、WindowsフォームによりWindowsアプリケーションを作成していた。.NET Framework 3.0は.NET Framework 2.0を包含しているため、WPFかWindowsフォームかを選択して(あるいは両者を混在させて)Windowsアプリケーションを作成する。

 では、Windowsフォームがあるにもかかわらず、なぜWPF/XAMLが必要になったのでしょうか? ここで、WPF/XAMLの代表的な特徴を簡単に列挙してみましょう。

■XMLベースなXAML

 Windowsフォームでは、画面のデザインはすべてC#やVBのコードのみで記述しました。VSなどを使えば、デザイナによりGUIを構築できますが、これは裏でVSがC#やVBのコードを自動生成するためです。しかし、その自動生成されたコードに開発者が手を加えることは基本的にできませんでした。

 XAMLは画面デザインをXMLフォーマットで記述するので、あいまいさが排除され、コンピュータにとって(そして恐らく開発者にとっても)扱いやすくなっています。このことは、デザイン・ツールなどの開発も容易にします。すでに発売されているExpression BlendはXAMLを出力するデザイン・ツールです。

■統合されたAPI

 これまでのWindowsアプリケーション開発では、2DグラフィックスにはWindowsのGDI/GDI+を、GUIの部品にはWindowsフォームのコントロールを、3DグラフィックスにはDirect3Dを、といったように、異なるいくつかのテクノロジが存在していました。.NETではそれぞれに対応したクラス・ライブラリが用意されていますが、それらを混在させて扱うことは容易ではありません。

 WPFやXAMLでは、2D、3Dグラフィックスやコントロール、さらには動画、アニメーションなどを標準でサポートしており、すべて一貫した1つのモデルで開発できます。つまり、どれも同じ仕組み、同じ考え方で扱うことができます。そしてそれらを合成(コンポジション)して表示させることも可能です。

■ベクタ・グラフィックス

 WPFではベクタ・グラフィックスが採用されています(対してWindowsフォームはラスタ・グラフィックスです)。これにより、コントロールをはじめとするさまざまな要素は回転や拡大/縮小、変形が可能で、それを行っても斜めの線や曲線はギザギザになりません。

 今後はますますディスプレイの高解像度化が進むと予想されます。さまざまな表示環境に対応するために、大きさを変えても品質が変わらないベクタ・グラフィックスは非常に重要です。

■画面設計とロジックの分離

 WPFでは、画面設計をXAMLで記述し、イベント処理やビジネス・ロジックなどはC#やVBのコードで記述します(このような形態は「コードビハインド」と呼ばれます)。この形態はちょうどASP.NETによるWebアプリケーションと同じです。ASP.NETでは画面設計をHTMLで記述し、それ以外をC#やVBで記述します。

 そしてXAMLでは、コントロールの配置といった静的な画面設計だけでなく、グラフィックス描画やコントロールの合成、アニメーション、UI要素とデータのデータバインディング(データ連結)といった動的な処理までも記述することができます。このため、画面まわりの処理の多くをコードビハインド側のコードから排除でき、コードビハインド側のコードでは、よりロジックに専念できます。

 以上、WPF/XAMLの代表的な特徴をいくつか挙げましたが、こういったことをキレイに実現するために、(Windowsフォームの拡張ではなく)WPFそしてXAMLが新たに導入されたといえるでしょう。

[コラム]XAMLを学ぶ必要はあるのか?

 XAMLについてまったく知らなくても、VSやExpression Blendなどのデザイナを使えば画面設計を行え、XAMLのコードを自動生成することができます。ではXAMLを学ぶ必要はないのでしょうか。これは、HTMLを知らずしてWebアプリケーションを開発できるのかという問いと同じだと思います。

 また、XAMLをある程度マスターしておけば、ツールで画面設計を行う際にも、その挙動を理解しやすく、作業も効率的に行えるはずです。


 

 INDEX
  XAMLの基礎知識
  第1回 Hello Worldとテキスト・エディタで始めるXAML
  1.なぜWPF/XAML?
    2.XAML版Hello World
    3.WPF/XAMLの開発環境と実行環境
 
インデックス・ページヘ  「XAMLの基礎知識」


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 記事ランキング

本日 月間