XPCOM

XPCOM (Cross Platform Component Object Model) は、Mozillaプロジェクトにおいて開発されているクロスプラットフォームなソフトウェアコンポーネント技術である。マイクロソフトのComponent Object Model (MS COM) のオープンソース実装に相当する。XPCOMはC++で実装されており、Linux、Windows、macOSという主要なプラットフォーム上で動作する。複数の言語バインディングが提供されており、C++の他に、JavaScript、Java、Python等の実装が存在する。XPCOMのインタフェースには、XPIDLと呼ばれるインタフェース記述言語 (IDL) が用いられている。

XPCOMにはコアとなるコンポーネントとクラス群が一緒に提供されている。例えば、ファイルやメモリの管理、文字列や配列などの基本データ構造などがこれに含まれる。しかし、ほとんどのXPCOMコンポーネントは、コア以外の部分で提供されている。たとえば、Geckoレンダリングエンジンなどがこれにあたる。

 MonoのCOM相互運用 
MonoにおけるCOM相互運用はMS COMおよびXPCOMを基盤としているThe Mono Runtime | MonoCOM Interop | Mono。

 XUL/XPCOMベースのアドオン 
MozillaはFirefoxやThunderbirdにおいて、XUL/XPCOMを利用したアドオン（拡張機能）のSDKを提供してきたが、XUL/XPCOMベースのアドオンの段階的な廃止を表明している。Firefox Quantum 57 では全面的に廃止されFirefox 57 (Quantum) for developers - Mozilla | MDNFirefox アドオン技術の現代化 | Firefox ヘルプPorting a legacy Firefox extension | Extension Workshop、。

Firefox Quantum の拡張機能では、XUL/XPCOMの代わりに Microsoft Edge、Google Chrome、Operaなどでサポートされている WebExtensionshttps://developer.mozilla.org/ja/Add-ons/WebExtensions を使用する。

 脚注 

 関連項目 
Mozilla
Gecko
XUL
XULRunner
XPConnect（JavaScript用XPCOMバインディング）
JavaXPCOM（Java用XPCOMバインディング）
PyXPCOM（Python用XPCOMバインディング）
RbXPCOM（Ruby用XPCOMバインディング）
PlXPCOM（Perl用XPCOMバインディング）

 外部リンク 
XPCOM - Mozilla | MDN
XPCOM reference - Mozilla | MDN
mozdev books:8.XPCOM
XPCOM
XPCOM資料
Gecko Embedding API Reference

Gecko組み込みの基礎
XPCOMリファレンス
まじらもじら:埋め込み用API

dW:XPCOM 第1回 XPCOM入門
dW:XPCOM 第2回 XPCOMコンポーネントの基本
dW:XPCOM 第3回 XPCOMのセットアップ
dW:XPCOM 第4回
dW:XPCOM Part 5: Implementation

Category:Mozilla
Category:API