Component Object Model
Component Object Model（COM、コンポーネント オブジェクト モデル）とは、マイクロソフトが提唱するソフトウェアの再利用を目的とした技術のことである。COMは相互作用するバイナリソフトウェアコンポーネントを作成するための、プラットフォーム非依存・分散型・オブジェクト指向のシステムであると説明されている。具体的にはアプリケーションソフトウェア間の通信や、オペレーティングシステムとアプリケーションソフトウェアとのインターフェイス（API）に用いられる。

COMを使用して開発されたソフトウェア部品をCOMコンポーネントと呼ぶ。COMコンポーネントの開発は、特定のプログラミング言語に依存せず、C言語やC++、Visual Basic、Smalltalk、Javaなど、様々な言語により開発することができる。COMという用語は、OLE、OLEオートメーション、ActiveX、COM+、DCOMの総称としてよく使われる。COMコンポーネントは、他ソフトウェアと通信するためのインターフェイスを有している。アプリケーションソフトウェア（COMクライアント）は、通信インターフェイスを表現する抽象型として公開されているCOMインターフェイスを介してCOMコンポーネント（COMサーバー）と通信をし、それらを組み合わせることでサービスを提供する。言語によるメモリやその他計算資源の割り付けの違いは、参照カウントを利用してオブジェクトの生成と破棄をそのオブジェクト自身の責任とすることにより解決する。オブジェクトがサポートする、異なるインターフェイス間の型変換は、言語固有のキャスト構文ではなく、言語非依存のcodice_1メソッドで行う。メソッド呼び出しをデリゲート（委譲）する形でサブオブジェクトの集合（アグリゲーションと呼ぶ）を生成する方法がCOM内における最適な継承方法である。

COMはプロトコルなどの仕様が公開されており、XPCOMのようなクロスプラットフォーム実装も存在するが、COMが主に利用されているのはMicrosoft Windows環境である。MonoにおけるCOM相互運用もMS COMおよびXPCOMを基盤としているが、機能およびサポート環境はまだ限定されている。

COMの前身はOLEである。COMは.NET Frameworkに置き換えられているものも多い。たとえば.NETはDCOMの代替として、Windows Communication Foundation (WCF) を通じてWebサービスをサポートする。WCFがXMLベースのSOAPメッセージを利用するのに対し、ネットワークで接続されたDCOMはバイナリの独自仕様フォーマットを利用する。しかし、Microsoft DirectXなどに代表されるように、ネイティブC++での利用を前提としたパフォーマンス重視のAPIは、依然として.NETではなくCOMが使われる傾向にある。

COMはまたソフトウェアコンポーネントシステムとしてCORBAやJava Beansと競合関係にある。
Q2283
マイクロソフト
ORG
Q771245
ソフトウェアの再利用
Concept
Q17176533
ソフトウェアコンポーネント
Concept
Q2011845
オブジェクト指向
Concept
Q166142
アプリケーションソフトウェア
Concept
Q9135
オペレーティングシステム
Concept
Q165194
API
Concept
Q9143
プログラミング言語
Concept
Q15777
C言語
Concept
Q2407
C++
MEDIA
Q2378
Visual Basic
MEDIA
Q235086
Smalltalk
MEDIA
Q251
Java
Concept
Q848314
OLE
UNK
Q302022
ActiveX
MISC
Q906328
DCOM
MISC
Q23808
インターフェイス
Concept
Q166142
アプリケーションソフトウェア
Concept
Q65237627
インターフェイス
UNK
Q1092142
計算資源
UNK
Q1352761
参照カウント
Concept
Q1333515
型変換
UNK
Q815844
メソッド
Concept
Q1584993
プロトコル
UNK
Q1141188
XPCOM
UNK
Q174666
クロスプラットフォーム
Concept
Q1406
Microsoft Windows
Concept
Q722656
Mono
MISC
Q5289
.NET Framework
MISC
Q261595
Windows Communication Foundation
MISC
Q193424
Webサービス
Concept
Q2115
XML
ORG
Q189620
SOAP
MEDIA
Q188695
Microsoft DirectX
MISC
Q17176533
ソフトウェアコンポーネント
Concept
Q691593
CORBA
MEDIA
Q259322
Java Beans
MISC
Q662200
Component Object Model
MISC
2020-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
1
DATE
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
developer
manufacturer
instance of
instance of
developer
instance of
instance of
instance of
developer
operating system
developer
instance of
programming language
GUI toolkit or framework
programming language
operating system
influenced by
developer
operating system
developer
operating system
developer
operating system
based on