Extensible Application Markup Language(XAML、ザムルと発音する第1回 Hello Worldとテキスト・エディタで始めるXAML - @IT)は、オブジェクトやプロパティ、あるいはそれらの関係や相互作用を定義するために用いられるXMLベースの宣言的言語である。XAMLという略語はもともと「Extensible Avalon Markup Language」に由来していた。AvalonとはWindows Presentation Foundation (WPF) のコードネームである。
適用領域 XAMLは.NET Framework 3.0以降のテクノロジーにおいて広範囲にわたって使われている。とりわけ、Windows Presentation Foundation (WPF) および Silverlightにおいてユーザーインターフェイス要素やデータバインディング、イベント処理、などを定義するために、また、Windows Workflow Foundation (WF) においてワークフローそのものを定義するために用いられる。なお、Windows 8およびWindows RTで利用できるWinRT APIを使用したWindowsストアアプリでは、.NETアプリケーションに限らずC++ネイティブアプリケーション通例、と呼ばれるマイクロソフト独自の拡張が施された言語を用いる。でもXAMLを使ってUIを構築することが可能となっている。後発のWindows 10にて対応したユニバーサルWindowsプラットフォーム (UWP) アプリもまたWinRTベースであり、XAMLを利用して開発する。クロスプラットフォームな.NETアプリケーション開発に利用可能なXamarin.Formsでは、UIの記述にXAMLを用いる。
これらのXAMLを利用するテクノロジー間で、個別のXAML要素の互換性については確保されておらず、名称が違っていたり、サポートされていなかったりする要素もあるが、いずれのフレームワークもほぼ同じ要領で開発できることが大きな利点となる。マイクロソフト固有のXAMLは主にWindowsプラットフォームに特化したものだが、XAML Standardと呼ばれる標準化プロジェクトも立ち上げられているMicrosoft/xaml-standard: XAML Standard : a set of principles that drive XAML dialect alignmentXAML Standardとは:特集:Microsoftテクノロジーの現在と未来 - @IT。
WPFにおける仕様 XAMLにおける要素 (element) はCLRにおけるオブジェクトインスタンスに、属性 (attribute) はCLRにおけるプロパティやイベントに対応する。典型的には、XAMLファイルはMicrosoft Expression Blend、Microsoft Visual Studio、XAMLPadのような開発ツールによって生成される。XAMLファイルはファイル(バイナリファイル)にコンパイルされ、リソースとして.NET Frameworkアセンブリに含められる。実行時には、CLRがアセンブリのリソースからファイルを抽出・解析し、WPFのユーザーインターフェイス要素やワークフローを作成する。
WPFにおいては、XAMLはAdobe Flashのように表現豊かなユーザーインターフェイスを記述することができる。他のXMLベースのユーザーインターフェイス記述言語にはXULやがある。XAMLは単純な2Dグラフィックスだけでなく3Dオブジェクトも記述することが可能で、さらに回転・拡大縮小といった変形に加えて、アニメーションやその他の多彩な効果を表現することができる。
XAMLで記述可能なあらゆるものはまた、C#やVB .NETなどといった.NET言語によるコードビハインドでも記述することができる。しかし、重要な相違点として、XAMLはXMLベースであるがゆえに、開発ツール(RADツール)の設計が容易であるという点が挙げられる。その結果、特にWPFにおいて、XAMLファイルを生成するためのさまざまなツールが開発されている。また、XMLであるために分析者・デザイナー・開発者がそれぞれの立場から製品に関与することが容易になっている。
脚注
関連項目 XUL Adobe Flash レイアウトマネージャ Windows Presentation Foundation Silverlight Microsoft Expression Blend Xamarin
外部リンク Intoroducing "Longhorn" for Developers 第3章 コントロールとXAML MSDN Library XAML Overview Download Extensible Application Markup Language (XAML) from Official Microsoft Download Center: 仕様書