クロスプラットフォーム コンポーネント オブジェクト モデル( XPCOM ) は、Mozillaのクロスプラットフォーム コンポーネント モデルです。これは、コンポーネント オブジェクト モデル(COM)、共通オブジェクト リクエスト ブローカー アーキテクチャ(CORBA)、およびシステム オブジェクト モデル(SOM) に似ています。複数の言語バインディングとインターフェイス記述言語(IDL) 記述を特徴としているため、プログラマーはカスタム関数をフレームワークにプラグインし、他のコンポーネントに接続できます。
XPCOM の最も顕著な使用法は、 Firefoxウェブブラウザ内です。その内部コンポーネントの多くは、XPCOM インターフェースを介して相互作用します。さらに、Firefox はかつてアドオンに広範な XPCOM アクセスを許可していましたが、これは 2017 年に削除され、より制限されたWebExtensions APIに置き換えられました。[1] [2] (Firefox の 2 つのフォーク、 Pale Moon [3]とBasilisk [4]は、現在も XPCOM アドオン機能をサポートしています。)
モデル
XPCOM は、 Mozillaアプリケーション環境を実際のフレームワークにする主要な要素の 1 つです。これは、クロスプラットフォーム ソフトウェア開発者に次の機能を提供する開発環境です。
- コンポーネント管理
- ファイルの抽象化
- オブジェクトメッセージパッシング
- メモリ管理
このコンポーネント オブジェクト モデルにより、 Geckoのほぼすべての機能が一連のコンポーネント、つまり再利用可能なクロスプラットフォームライブラリとして利用できるようになります。これらのライブラリは、 Web ブラウザーからアクセスすることも、任意の Mozilla アプリケーションからスクリプト化することもできます。さまざまな Mozilla XPCOM ライブラリ (ネットワーク、セキュリティ、DOMなど) にアクセスする必要のあるアプリケーションは、ライブラリ インターフェイスをJavaScriptまたはその他の言語に反映するXPConnectと呼ばれる XPCOM の特別なレイヤーを使用します。XPConnect は、XPCOM のC++、C、またはRustプログラミング言語ベースのコンポーネントにフロント エンドを接着し、他の言語のスクリプト サポートを含めるように拡張できます。PyXPCOM [5]は既にPythonをサポートしています。wxWidgets [6]はPerlをサポートしており、XPConnect に共通言語インフラストラクチャ(CLI) とRuby言語のサポートを追加する取り組みが進行中です。
開発者にとって、XPCOM を使用すると、C++、C、JavaScript、Python、または特別なバインディングが作成されている他の言語でコンポーネントを作成し、これらのプラットフォームや Mozilla がサポートされている他のプラットフォームを含む数十の異なるプラットフォームでそれらのコンポーネントをコンパイルして実行できます。
Gecko ライブラリの XPCOM コンポーネントを再利用し、さまざまなプラットフォームで実行される新しいコンポーネントを開発できる柔軟性により、迅速なアプリケーション開発が可能になり、生産性が向上し、保守が容易なアプリケーションが実現します。たとえば、ネットワーク ライブラリは、任意の Mozilla アプリケーションからアクセスして使用できる XPCOM コンポーネントのセットです。ファイル I/O、セキュリティ、パスワード管理、およびプロファイルも、プログラマが独自のアプリケーション開発で使用できる個別の XPCOM コンポーネントです。
過去の過剰使用
XPCOM はオブジェクトをマーシャリングするためのコードを大量に追加し、Netscape時代には XPCOM は実際には必要のない内部インターフェースに過剰に使用され、ソフトウェアの肥大化を招きました。[7]これが、2001 年にApple がSafariブラウザ用のWebKitエンジンを作成するために Gecko ではなくKHTML をフォークした主な理由です。[8]
Mozillaはその後、XPCOMの肥大化の一部をクリーンアップしました。[9] 2008年までに、他の取り組みと相まって、 Geckoのパフォーマンスが大幅に向上しました。[10]
参考文献
- ^ Firefox 57 リリースノート
- ^ Kev Needham (2015-08-21). 「Firefox アドオン開発の将来」. blog.mozilla.org . 2018-04-02閲覧。
- ^ 「Pale Moon 今後のロードマップ」。Pale Moon . 2018年4月2日閲覧。
- ^ 「Pale Moon チームが Basilisk ブラウザの最初のバージョンをリリース」ghacks.net 2017-11-17 2018-04-02閲覧。
- ^ “PyXPCOM”. 2020年10月20日時点のオリジナルよりアーカイブ。2018年1月2日閲覧。
- ^ Perl ベースのクロスプラットフォーム開発[盗用]
- ^ Jorge O. Castro (2004-06-15). 「Ars Technica が Mozilla.org の Scott Collins 氏と対談」 Ars Technica . 2017-02-16閲覧。
- ^ Paul Festa (2003-01-14). 「Apple snub stings Mozilla」. CNET Networks . 2012-10-25時点のオリジナルよりアーカイブ。2017-02-16閲覧。
- ^ 「Gecko:DeCOMtamination」.
- ^ Ryan Paul (2008-09-09). 「WebKit の人気が高まる中、Mozilla が Gecko に注力する理由」 。2017年 2 月 16 日閲覧。
外部リンク
- XPCOM API リファレンス
- XPCOM ドキュメント
- 簡単な XPCOM チュートリアル
