Extensible Application Markup Language

Extensible Application Markup Language（XAML、ザムルと発音する）は、オブジェクトやプロパティ、あるいはそれらの関係や相互作用を定義するために用いられる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と呼ばれる標準化プロジェクトも立ち上げられている。

WPFにおける仕様 
XAMLにおける要素 (element) はCLRにおけるオブジェクトインスタンスに、属性 (attribute) はCLRにおけるプロパティやイベントに対応する。典型的には、XAMLファイルはMicrosoft Expression Blend、Microsoft Visual Studio、XAMLPadのような開発ツールによって生成される。XAMLファイルは.bamlファイル（バイナリファイル）にコンパイルされ、リソースとして.NET Frameworkアセンブリに含められる。実行時には、CLRがアセンブリのリソースから.bamlファイルを抽出・解析し、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: 仕様書

マークアップ言語
ベクターグラフィックス・マークアップ言語
XMLベースの技術
コンピュータのユーザインタフェース
.NET Framework
長大な項目名