XUL

XUL拡張子| .xul

|

MIMEタイプ| application/vnd.mozilla.xul+xml
開発者| Mozilla Foundation
派生元| XML
ウェブサイト| developer.mozilla.org/en-US/docs/Archive/Mozilla/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での検討課題に含められている[1]。

## 使い方

[編集]

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

* 表
* 話
* 編
* 歴

プロジェクト|

| Firefox|

| 種類|

* Mozilla Firefox
* Firefox for Mobile
* Firefox Focus

|

技術|

| レンダリングエンジン|

* Gecko

|

フレームワーク|

* Add-on(拡張機能)
* Rust
* Necko
* XBL
* XPCOM
* XPConnect
* XPInstall
* XUL
* XULRunner

コンポーネント|

* Servo
* WebRender
* Application Object Model
* Composer
* NSPR
* NSS
* Rhino
* SpiderMonkey
* Tamarin
* Venkman

系統|

* Mozilla Application Suite
* Netscape Navigator
* Netscape Communicator
* Netscape Communications
* Abrowser
* BurningDog
* Flock
* Gnuzilla
* IceCat
* Iceweasel
* Miro
* Netscape 9
* Portable
* Songbird
* Swiftfox
* Swiftweasel
* XeroBank
* SeaMonkey
* Pale Moon
* Waterfox

その他|

* Bespin
* Bonsai
* Bugzilla
* Jetpack
* Raindrop
* Thunderbird
* Mozilla VPN
* Tinderbox
* Ubiquity

開発終了|

* Camino
* ChatZilla
* Firefox Send
* Firefox Test Pilot
* Lightning
* Minimo
* Calendar Project
* Grendel
* Penelope
* Prism
* Sunbird
* Sync

公式|

| 本部|

* Mozilla Foundation
* Mozilla Corporation

|

支部|

* Mozilla China
* Mozilla Europe
* WebDINO Japan (旧名:Mozilla Japan)
* Mozilla Taiwan

コミュニティ|

* mozdev.org
* Mozilla Add-ons
* MDN Web Docs
* MozillaZine
* Spread Firefox
* もじら組

その他|

* Mozilla Public License
* The Book of Mozilla
* Common Voice

カテゴリ

* 表
* 話
* 編
* 歴

ウィジェット・ツールキット

低レベル|

* Macintosh Toolbox（英語版）/Carbon (API)
* Intrinsics
* Intuition（英語版）
* Windows API
* Xlib
* XCB

高レベル|

| AmigaOS対応|

* BOOPSI（英語版）
* Magic User Interface（英語版）
* ReAction GUI（英語版）
* Zune（英語版）

|

Mac OS/macOS対応|

* Cocoa (API)
* MacApp（英語版）
* MacZoop（英語版）
* PowerPlant（英語版）

Windows対応|

* Microsoft Foundation Class Library
* Object Windows Library（英語版）
* Silverlight
* SmartWin++（英語版）
* Visual Component Library
* Windows Forms
* Windows Presentation Foundation
* Windows Template Library
* WinRT XAML（英語版）

X11下のUnix対応|

* Athena/Xaw（英語版）
* InterViews（英語版）
* LessTif
* Motif

言語別
クロスプラットフォーム|

| CLI|

* Avalonia UI（英語版）
* Uno Platform（英語版）
* Gtk#
* Moonlight（英語版）
* Tao（英語版）

|

C/C++|

* CEGUI（英語版）
* Component Library for Cross Platform
* FLTK
* FOX toolkit（英語版）
* OpenGL User Interface Library（英語版）
* GTK
* Juce（英語版）
* Qt
* Wt（英語版）
* Tk
* TnFOX（英語版）
* Ultimate++（英語版）
* Visual Component Framework（英語版）
* wxWidgets
* YAAF（英語版）
* XForms
* XVT（英語版）

Objective-C|

* GNUstep

Flash|

* Apache Flex

Java|

| デスクトップ|

* Abstract Window Toolkit
* Swing
* Standard Widget Toolkit
* Qt Jambi（英語版）

|

ウェブ|

* Google Web Toolkit

JavaScript|

* Dojo Toolkit
* Echo（英語版）
* Ext JS
* Google Closure Tools
* jQuery
* jQuery UI
* MooTools
* Qooxdoo（英語版）
* script.aculo.us（英語版）
* YUI（英語版）

Common Lisp|

* CAPI
* Common Graphics
* CLIM（英語版）
* Ltk
* McCLIM（英語版）

Object Pascal|

* Component Library for Cross Platform
* fpGUI（英語版）
* IP Pascal（英語版）
* Lazarus

Perl|

* WxPerl（英語版）
* Perl/Tk

PHP|

* PHP-GTK（英語版）
* PHP-Qt（英語版）
* WxPHP（英語版）

Python|

* Pyjamas（英語版）
* PyQt
* PyGTK
* PyGObject（英語版）
* PySide
* Tkinter
* wxPython

Ruby|

* Shoes
* QtRuby（英語版）

XML|

* Ample SDK（英語版）
* CougarXML（英語版）
* GladeXML
* Lively Kernel（英語版）
* Pyjamas（英語版）
* Rialto Toolkit（英語版）
* XAML
* XML User Interface（英語版）
* XUL
* Wt（英語版）

* 一覧（英語版）
* カテゴリ

典拠管理データベース: 国立図書館 |

* フランス
* BnF data
* ドイツ
* イスラエル
* アメリカ

|