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

本日 月間

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy