XUL(/ ˈzuːl / ZOOL )は、 XML User Interface Languageの略で、Mozillaによって開発されたユーザーインターフェースマークアップ言語です。XULは、グラフィカルユーザーインターフェースを作成するためのXML方言であり、開発者がWebページと同様の方法でユーザーインターフェース要素を作成できるようにします。
XULアプリケーションはMozilla のコードベースまたはそのフォークに依存しています。最も顕著な例はFirefoxウェブ ブラウザです。しかし、Mozilla はバージョン 57 でブラウザ エンジンを書き直した後、Firefox での XUL の使用を大幅に削減しました。[ 1 ] [ 2 ]これにより、XUL とXPCOMに依存していた従来のアドオンシステムが削除されました。XPCOM は、Mozilla が Firefox 57 のリリース直前に非推奨にすることを決定した別のクロス プラットフォーム テクノロジーです。Firefox は当初、アドオンがユーザー インターフェイスを大幅に変更することを許可していましたが、この機能は 2017 年に削除され、より制限の厳しいWebExtensions APIに置き換えられました。[ 3 ] [ 4 ] Firefox のいくつかのフォークは、XUL および XPCOM ベースのアドオンのサポートを維持しています。Waterfoxは、 Waterfox Classicブラウザ用に従来の Mozilla コード ベースのフォークを維持しています。[ 5 ] Pale Moonブラウザ、[ 6 ] Basiliskブラウザ、[ 7 ]および多数の小規模プロジェクトは、統合 XUL プラットフォーム (UXP) 実装を共同で使用および維持しています。

XULは、最終的にMozillaコードベースとなった開発作業の一環として、1997年にNetscapeで考案されました。[ 8 ] XULは、 Geckoレンダリングエンジンによって実装されたWebテクノロジーに似ています。XULが導入されたとき、当時の標準HTML 4を超える機能が追加されました。ドキュメントではなくアプリケーションで使用するためのHTMLの拡張として設計されました。[ 9 ]
XUL は、さまざまな Mozilla プロジェクト、 Mozilla プロジェクトのフォーク、および Mozilla と密接に関連するプロジェクトで使用されていました。Songbird、Komodo IDE、Zotero などの一部のソフトウェア プロジェクトは、XULRunnerを使用してUI をレンダリングおよび構成するデスクトップ アプリケーションとして始まりました。2000 年代初頭には、 Amazonなど他の関係者が XUL の使用に関心を示していましたが、[ 10 ]これらの関係者はHTML5に移行しました。[ 1 ] [ 2 ] HTML5、CSS3、ECMAScript 5+、WebGL、WebAssembly などの最新の Web テクノロジーの多くの機能は、Adobe Flash、Silverlight、Java、Shockwaveなどの従来のNPAPI / PPAPI / ActiveXブラウザ プラグイン テクノロジーを使用する必要なく、リッチで最新の Web アプリケーションを可能にしましたが、 XUL の多くも不要になりました。[ 9 ]
Mozilla は 2017 年 11 月に Firefox 57 (Firefox Quantum とも呼ばれる) をリリースしました。このリリースの一環として、Firefox はマルチプロセス アーキテクチャへの移行を完了しました。XUL アドオンはこのアーキテクチャでも動作しましたが、パフォーマンスに大きな問題を引き起こすことがよくありました。そのため、Mozilla はカスタム XUL コードの使用を含むレガシーアドオンのサポートを終了しました。 [ 3 ] [ 4 ] Mozilla は、ブラウザ拡張機能システムを、主に Chrome 拡張機能 API に基づくクロス ブラウザ WebExtensions API に切り替えました。2017 年後半には、Firefox にはネイティブ ブラウザ コンポーネント用の XUL バインディングが 289 個含まれていました。2019 年末までに、Mozilla はmozilla-centralリポジトリからすべての XUL ファイルを削除しました。[ 11 ] [ 1 ] [ 2 ]
Mozilla が Firefox のサポートを終了した時点でも、XUL を使用しているアプリケーションはいくつか残っていました。Mozilla はメールクライアント Thunderbird から XUL サポートを徐々に削除し始めました。2020 年に XUL ベースの拡張機能のサポートなしで Thunderbird 78 をリリースしました。[12] SeaMonkeyインターネットスイートはFirefox Quantum コードベースで XUL を再実装することを選択し、その後スイートの開発は減速しました。Pale Moon の開発者は、Mozilla の Firefox 52 ESR コードベース全体をフォークして、Goanna レンダリングエンジン用の Unified XUL Platform (UXP)を作成しました。UXP は従来の XUL 機能を維持しています。[ 13 ]その結果、Pale Moon やその他の UXP アプリケーションは、最新バージョンの Firefox や Thunderbird と比較して拡張性が高くなっています。[ 14 ]
XULはMozillaのコードベース(またはそのフォーク)でのみ使用できます。なぜなら、 Gecko(またはGoanna)エンジンがXULのレンダリングを行うからです。[ 15 ]
アプリケーションプログラマは、XULインターフェースを3つの独立したコンポーネントセットとして定義する必要があります。
XULは幅広い要素を定義しており、それらは概ね以下のタイプに分類されます。
XULウィジェットのデフォルトの動作は、XBLバインディングを使用して変更できます。
XML Binding Language ( XBL ) は、スクロールバーなどのXULウィジェットの動作を変更するためのXMLベースのマークアップ言語です。[ 16 ] [ 17 ] XBL ファイルにはバインディングが含まれており、それぞれが XUL ウィジェットの動作を記述します。XBL ファイルのルート要素は要素で、1 つ以上の要素が含まれています。各要素は 1 つのバインディングを宣言し、任意の XUL 要素に添付できます。また、属性を持つこともできます。バインディングは、CSS プロパティをバインディングのファイルのURLに設定することで要素に割り当てられます。 [ 18 ]例:<bindings><binding><binding>id-moz-binding
scrollbar { -moz- binding : url ( 'somefile.xml#binding1' ); }この例では、垂直ボックスコンテナ内に3つのボタンが積み重ねられている様子を示しています。[ 19 ]

<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?><window id= "vbox example" title= "例 3...." xmlns= "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <layout> <button id= "yes1" label= "はい" /> <button id= "no1" label= "いいえ" /> <button id= "maybe1" label= "たぶん" /> </layout> </window>XULには、1984年の映画『ゴーストバスターズ』への言及が含まれています。[ 20 ]この映画の敵役は、架空の神であるゲートキーパーのズールです。[ 21 ]ズールはダナ・バレットというキャラクターに取り憑き、「ダナはいない。あるのはズールだけだ」と宣言します。 [ 22 ] [ 20 ]ズールと同じ発音のXULの作成者は、[ 23 ]「データはない。あるのはXULだけだ!」というスローガンを作りました。[ 24 ]このスローガンとゲートキーパーとしてのズールは、XULのXML名前空間URIで参照されており、以前はすべてのFirefoxアドオンに存在していました。[ 20 ]
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul
— Mozilla [ 20 ]
Mozilla Amazon Browser は、いくつかの理由から興味深いケーススタディです。まず、これは技術を実証するためだけに構築された例ではなく、実際に動作するプロトタイプ アプリケーションです。次に、リモート開発に対する Mozilla のサポートの多くの領域を実践しており、リモート XUL アプリケーションの機能、可能性、および制限を示しています。最後に、Web アプリケーション開発にとって重要な新興技術である Web サービスに対する Mozilla のサポートを示しています。
計画は、Pale Moon を現在のプラットフォームから UXP (長期計画) に切り替えることです。なぜなら、開発され維持されている XUL ベースのプラットフォームは、Mozilla がこのテクノロジーを放棄したため、Pale Moon のような XUL アプリケーションが陳腐化せずに生き残る唯一の方法だからです。これが、私がそもそもこのプラットフォームで作業を開始しようと決めた主な理由です。いずれにせよ、このプラットフォームは Pale Moon の将来の潜在的な使用のためだけに開発されるのではなく、そうでなければ行き詰まってしまうであろう将来の XUL アプリケーションのために開発されます。基本的に、あらゆる種類の XUL アプリケーション用のプラットフォームの開発と維持において、Mozilla からバトンを引き継いでいます。Mozilla は「上流」ではないので、そう見なされるべきではありません。