はじめに
COM は Component Object Model
の略語であり、
DCE RPC (オープンスタンダード) の最上位のオブジェクト指向レイヤーです。
COM はコール手順を共通化し、あらゆる言語でコードを記述し、
(COM に対応した)他の言語で書かれたコードをコール、相互運用することを可能にします。
あらゆる言語で書くことを可能にするだけではなく、
同じ実行形式の一部となることすら不要です。
コードは、同じマシンで実行される他のプロセスのコードである DLL からロードしたり、
または、リモートマシン上の他のプロセスにあるコードを DCOM (分散 COM) で
利用することができます。
この場合、コードの中では、コンポーネントの存在する場所を意識する必要はありません。
OLE オートメーションと呼ばれる COM のサブセットがあります。
これは、COM オブジェクトに疎な結合を行うことができる COM インターフェイスを
提供します。これにより、コンパイル時にオブジェクトの動作を知ることなく、
実行時にコールを行うことができるようになります。
PHP COM 拡張モジュールは、OLE オートメーションを使用して
スクリプトから互換性のあるオブジェクトを作成/コールすることができます。
技術的に述べると、
全ての COM オブジェクトが OLE 互換であるというわけではないため、
実際には、この拡張モジュールは "PHP の OLE オートメーション
拡張モジュール
" と呼ばれるべきものです。
ところで、なぜ COM を使用する必要があるのでしょう? COM は、 Windows 環境でアプリケーションとコンポーネントを結び付ける代表的な手法の一つで、 COM を使用して Microsoft Word を起動し、 ドキュメントテンプレートを埋めて、Word 文書として結果を保存し、Web サイトの 訪問者に送信することができます。 また COM を使用して、ネットワークの管理タスクを処理したり IIS を設定したりすることができます。これらは最も一般的な使用法にすぎません。 COM でできることはまだまだたくさんあります。
さらに Microsoft により提供された COM との相互運用レイヤーを用いて .Net アセンブリのインスタンス化と生成をサポートしました。