| XUL | |
|---|---|
| パラダイム | 宣言型(マークアップ言語) |
| 開発者 | モジラ財団 |
| 実装言語 | C++ |
| プラットフォーム | ヤモリ |
| OS | クロスプラットフォーム |
| ライセンス | MPL |
| ファイル名拡張子 | .xulMIMEタイプ:application/vnd.mozilla.xul+xml |
| Webサイト | https://wiki.mozilla.org/XUL:ホームページ |
| 主要な実装 | |
| モジラ | |
| 影響を受けた | |
| HTML、XML | |
XUL(/ ˈz uː 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 ]および多数の小規模プロジェクトが共同でUnified XUL Platform(UXP)実装を使用し、保守しています。

XULは、後にMozillaコードベースとなる開発の一環として、1997年にNetscapeで考案されました。[ 8 ] XULは、 Geckoレンダリングエンジンによって実装されたWeb技術に類似しています。XULが導入された際、当時の標準HTML 4を超える機能が追加されました。XULは、ドキュメントではなくアプリケーションで使用されるHTMLの拡張機能として設計されました。[ 9 ]
XULは、様々なMozillaプロジェクト、 Mozillaプロジェクトのフォーク、Mozillaに関連のあるプロジェクトで使用されていました。Songbird 、Komodo IDE、Zoteroなどのソフトウェアプロジェクトは、UIのレンダリングと構成にXULRunnerを使用するデスクトップアプリケーションとして始まりました。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にはまだネイティブブラウザコンポーネント用の289個のXULバインディングが含まれていた。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はGecko(またはGoanna)エンジンがXULレンダリングを行うため、 Mozillaコードベース(またはそのフォーク)でのみ使用できます。 [ 15 ]
アプリケーション プログラマは、XUL インターフェイスを 3 つの個別のコンポーネント セットとして定義する必要があります。
XUL は幅広い要素を定義しており、それらはおおよそ次のタイプに属します。
XUL ウィジェットのデフォルトの動作は、XBLバインディングを使用して変更できます。
XML バインディング言語 ( XBL ) は、スクロールバーなどのXULウィジェットの動作を変更するための XMLベースのマークアップ言語です。[ 16 ] [ 17 ] XBL ファイルには、XUL ウィジェットの動作を記述するバインディングが含まれています。XBL ファイルのルート要素は要素で、この要素には 1 つ以上の要素が含まれます。各要素は 1 つのバインディングを宣言し、このバインディングは任意の XUL 要素に関連付けることができます。また、属性を持つこともできます。バインディングは、 CSS プロパティをバインディングのファイルのURLに設定することによって要素に割り当てられます。 [ 18 ]例えば、次のようになります。 <bindings><binding><binding>id-moz-binding
スクロールバー{ -moz-バインディング: 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
— モジラ[ 20 ]
Amazon Browserは、いくつかの理由から興味深いケーススタディです。第一に、これは実際に動作するプロトタイプアプリケーションであり、技術のデモンストレーションのみを目的として構築された例ではありません。第二に、Mozillaのリモート開発サポートの多くの領域を検証することで、リモートXULアプリケーションの機能、可能性、そして限界を示しています。最後に、Webアプリケーション開発における重要な新興技術であるWebサービスに対するMozillaのサポートを実証しています。
Moonを現在のプラットフォームからUXPに移行する計画(長期計画)です。Mozillaがこの技術を放棄した今、XULベースのプラットフォームを開発・保守することが、XULアプリケーション(Pale Moonなど)が陳腐化することなく生き残る唯一の方法だからです。これが、私がこのプラットフォームで開発を始めることにした主な理由です!いずれにせよ、このプラットフォームはPale Moonの将来の使用のみを目的として開発されるのではなく、そうでなければ行き詰まってしまうであろう将来のXULアプリケーションのために開発されます。基本的に、私たちはあらゆる種類のXULアプリケーションのためのプラットフォームの開発と保守において、Mozillaからバトンを受け継いでいるのです。Mozillaは「上流」ではありませんので、そうではありません。