連載:XAMLの基礎知識第1回 Hello Worldとテキスト・エディタで始めるXAMLデジタルアドバンテージ 遠藤 孝信2007/11/06 |
|
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の基本的な利用方法や記述方法について解説していきます。
|
なお、記事中では実際に動作するいくつかのサンプル・プログラムを作成しますが、本連載ではその基本構造が分かりやすいように、すべてテキスト・エディタとコマンド・プロンプトで行うつもりです。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の基礎知識」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|