XAMLについて
WPFの特徴の1つは、XAML(Extensible Application Markup Language:ザメル/ザムル)と呼ばれる言語を用いてアプリケーションのUIを記述できる点にあります。XAMLはXMLベースの言語で、ボタンや2D/3D描画のためのコンポーネントを、XMLのタグを用いて表現します。
例えば、ウィンドウ内にチェックボックス・テキストボックス・ボタンを配置した状態のXAMLは次のようになります。
<Window x:Class="WindowsApplication1.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowsApplication1" Height="300" Width="300"> <Grid> <CheckBox Height="13" Margin="50.2366666666667,21,0,0" Name="checkBox1" Width="65.7633333333333"> CheckBox </CheckBox> <TextBox Height="26" Margin="50,46,142,0" Name="textBox1"> </TextBox> <Button Height="27" Margin="53,96,0,0" Name="button1" Width="75"> Button </Button> </Grid> </Window>
ここで使用しているCheckBox
、TextBox
、Button
といったXMLの要素はそれぞれ.NET Framework 3.0のクラスに対応します。Height
やName
といったXMLの属性はそれぞれのクラスのプロパティに対応します。
WPFでは、このようにXAMLファイルでUIを定義し、実際のイベント処理などはXAMLと連携して動作するコードビハインドのプログラムファイルに記述します。これはちょうどASP.NETのモデル(.aspxファイル内にASP.NETのタグを用いてさまざまなコンポーネントを配置し、イベント処理はコードビハインドの.aspx.cs/.aspx.vbファイルに記述する)に似ていると言えるかもしれません。
ASP.NETでは、コードビハインドモデル以外に、.aspxファイル内に直接プログラムを記述するページインラインモデルを用いることができますが、XAMLでも同様に、XAMLファイル内に直接プログラムを記述することができます。
<x:Code> <![CDATA[ private void button1_Clicked(object sender, RoutedEventArgs e) { //イベント処理 } ]]> </x:Code>
また、XAMLを単純にコンテンツ記述言語として考え、コードビハインドのプログラムを実装しないことも可能です。その場合は「Loose XAML」と呼びます。
WPFを採用する理由
「WPFを使えば3Dなどの新しい機能を使えることは分かった。でも当分3Dを使った開発の予定はないし、無理してWPFに移行する意味はあまりないのでは……」
もっともな意見ですが、開発者にとってのWPFのメリットは3Dなどの新機能を利用できること以外にも多くあります。とりわけ、Win16時代から設計がずっと変わっていないGDI(Windows XPでC++言語ベースのGDI+が採用されたものの、WPFほど抜本的な変更ではなかった)の枠組みを捨て、完全に新たな標準となったことで、開発者がWPF開発を覚える意義は大きいと言えます。
GDIを直接使うには大量のコードが必要だったため、GUIアプリケーションを作成するためにこれまでに多くのフレームワークが出てきました。言語は限定されますがVisual BasicやDelphiはGUIアプリケーション開発への1つの解でしたし、C++言語ではMFC・ATL/WTLなどのライブラリを使うのが一般的でした。こうしたフレームワークごとにUI部品の使い方は異なり、そのたびに学習し直す必要がありました。もちろんWPFでも新たな技術を覚える必要がありますが、基本的にはWindows Formsの延長上にある技術であり、.NET開発になじみがある開発者であれば、比較的短期間で習得することができるでしょう(ただしXAML自体の仕様はなかなか大きいので、すべてを把握するのはやや大変かもしれません……)。Windows Vistaの基盤として採用されたWPFは、Windows上の標準UIコンポーネントとして、今後もずっとサポートされることは間違いありません。当面廃れる心配がない技術ですので、安心して学習することができます。
また、XAMLというUI記述言語を採用することで、Webアプリケーション開発では一般的ながら、スタンドアロンアプリケーションではあまり重視されてこなかった、デザイナと開発者の連携が容易となります。例えば現状ではExpression Blendなどを利用することで共同作業できます。これまでのアプリケーション開発では、Windowsアプリケーションの標準的なUI作法にただ従っていればよかったかもしれませんが、きちんとデザインされたWebが浸透した現在では、いかに使いやすく魅力的なUIを提供するかという部分がアプリケーション開発の重要な側面となっています。これまでの、デザイナから上がってきたラフスケッチを見ながら開発者が(デザインに向いているツールとは言い難い)Visual Studioを用いて画面を作成し、またデザイナからのレビューを受けて開発者が修正、といった面倒な作業が不要となって、それぞれが自分の本業に集中できる環境となれば、作業効率・品質共に向上することでしょう。
手放しで褒めすぎた感もありますが、WPFが魅力的な技術であることは確かです。ぜひトライしてみてください。