XUL

XUL（ズール、XML User Interface Language）はMozilla FirefoxやMozilla ThunderbirdなどのMozillaアプリケーションを作成するためのユーザインタフェースマークアップ言語である。UIMLのようなXMLアプリケーションの一つであり、ユーザインタフェースを記述するための言語である。

XUL自体は標準とはなっていないが、CSS、JavaScript、DOM、DTD、RDF等の既存の標準技術を多く利用しているため、すでにこれらの技術に親しんでいるプログラマやデザイナにとっては比較的習得しやすい言語となっている。

 概要 
XULによるインタフェースは3つの別個に独立したコンポーネントのグループによって記述される。
 Content（コンテント）   ユーザインタフェースのレイアウトを規定するXUL本文。
 Skin（スキン）  アプリケーションの視覚的な表現を行うためのCSSや画像。
 Locale（ロケール）  ソフトウェアのローカライズを容易にするための実体テキストを記述するDTD。

XULの持つ最も大きな利点は単純でポータブルなウィジェットの記述が可能であることである。これは第四世代言語 (4GL) がソフトウェア開発の場で果たしたのとよく似た労力の削減に繋がっている。

 XULのエレメント（要素） 
XULの仕様はたくさんの種類の要素を規定している。これらは大まかに以下のように分類できる。
 トップレベル要素  ウィンドウ、ページ、ダイアログ、ウィザードなど
 ウィジェット  ラベル、ボタン、テキストボックス、リストボックス（コンボボックス）、ラジオボタン、チェックボックス、ツリー、メニュー、ツールバー、グループボックス、タブ、カラーピッカー、スペーサー、スプリッターなど
 ボックスモデル  ボックス、グリッド、スタック、デッキなど 
 イベントとスクリプト  スクリプト、コマンド、キーボード、ブロードキャスター、オブザーバなど
 データソース  テンプレート、ルールなど
 その他  オーバーレイ（クライアントサイドで行われるServer Side Includes）、インラインフレーム、ブラウザ、エディタなど

XULの記述の中にXHTMLやMathMLのような別のXMLアプリケーションによる要素を含めることも可能となっている。

一般的なウィジェットの中でもたとえばスピンボックス、スライダー、キャンバスなどは現在のXULの仕様では使用できないがこれらはXUL 2.0での検討課題に含められている。

使い方
XULは主にMozillaやFirefox本体やこれらの拡張のために使われているが、HTTPで転送されるウェブアプリケーションに使うこともできる。例えば、XULアプリケーションとしてMozilla Amazon Browserという、Amazon.comで本を探すためのリッチクライアントソフトにも使われている。しかしながら、Mozillaの強力な特徴であるXPCOMオブジェクトを使う権限は、セキュリティの観点から、リモートのXULドキュメントには与えられない（署名がされていない限り権限が与えられない）。また他の制限もあり、例えば他ドメインの外部のXULやDTDやRDFドキュメントを読み込むことができない。

映画との関連
 THERE IS NO DATA.THERE IS ONLY XUL.
XULという名前は映画『ゴーストバスターズ』に由来する。映画にて古代シュメール人の女神ズール (Zuul) の亡霊は、シガニー・ウィーバー演ずるデーナ・バレット (Dana Barrett) に憑依し、「There is no Dana, only Zuul（デーナはいない。ズールしかいない）」と宣言している。XULでは、本来文書やデータの構造などを記述するための言語であるマークアップ言語（を創るための仕様であるXML）をインタフェースを定義するために利用していることから、XULの開発者は映画のセリフをもじって「There is no data, only XUL（データはない。XULしかない）」というスローガンを掲げている。そしてこれはXULアプリケーションでXML名前空間の宣言記述に用いられるURI：https://www.mozilla.org/keymaster/gatekeeper/there.is.only.xulに記述された文章でもある。XULが使用可能なアプリケーションでこのアドレスを開くと、（図のように）このスローガンが画面中央に大きな文字で表示されるようになっている。

"keymaster" や "gatekeeper" も同作品のシナリオに由来する。『ゴーストバスターズ』からのもじりはMozillaの他のプロダクトでも見られ、例えばJavaScriptにはVenkmanというデバッガコンポーネントがあるが、これは同作品の主人公の1人、ピーター・ヴェンクマン博士に由来する。

 関連項目 
XULRunner
レイアウトマネージャ
Extensible Application Markup Language（XAML）

外部リンク
Mozilla XUL - Mozilla.orgのXUL公式ホームページ（英文）
Xul Runner - An attempt to run XUL applications in a light-weight container.
XUL Wiki - XULアプリケーションや拡張機能開発関係に関する日本語の情報
Xul and Xul Dev project

Category:ウェブブラウザ
Category:XMLベースの技術
Category:コンピュータのユーザインタフェース
Category:Mozilla