XPCOM

クロスプラットフォーム・コンポーネント・オブジェクト・モデル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アプリケーション環境を真のフレームワークとして確立する重要な要素の一つです。クロスプラットフォームソフトウェア開発者向けに以下の機能を提供する開発環境です。

このコンポーネントオブジェクトモデルにより、 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++CJavaScriptPython、または特別なバインディングが作成されている他の言語でコンポーネントを作成し、これらのプラットフォームや 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 ]

参考文献

  1. ^ Firefox 57 リリースノート
  2. ^ Kev Needham (2015年8月21日). 「Firefoxアドオン開発の将来」 . blog.mozilla.org . 2018年4月2日閲覧。
  3. ^ 「Pale Moon 今後のロードマップ」 Pale Moon 2018年4月2日閲覧
  4. ^ 「Pale MoonチームがBasiliskブラウザの最初のバージョンをリリース」 ghacks.net 2017年11月17日2018年4月2日閲覧
  5. ^ "PyXPCOM" . 2020年10月20日時点のオリジナルよりアーカイブ2018年1月2日閲覧。
  6. ^ Perlベースのクロスプラットフォーム開発
  7. ^ Jorge O. Castro (2004年6月15日). 「Ars TechnicaがMozilla.orgのScott Collins氏にインタビュー」 . Ars Technica . 2017年2月16日閲覧。
  8. ^ Paul Festa (2003年1月14日). 「Appleの冷遇がMozillaを苦しめる」 . CNET Networks . 2012年10月25日時点のオリジナルよりアーカイブ2017年2月16日閲覧。
  9. ^ 「Gecko:DeCOMtamination」 .
  10. ^ Ryan Paul (2008年9月9日). 「WebKitの人気が高まる中、MozillaがGeckoに注力する理由」 . 2017年2月16日閲覧