更新履歴(3件・最終更新 2026年08月02日)
この記事に加えた変更の記録です。アーカイブした更新前のバージョンは、DOI付きの固定URLから読めます。
- 記事の冒頭に「この記事の知識マップ」節を追加しました。本文で扱っている概念とその関係を、要約・図・詳細ページへのリンクにまとめたものです。本文の主張は変えていません。
- 外部レビュー(1283件)への対応として本文を更新しました。個々の変更内容は、この下の履歴を参照してください。
- 用語の一行メモを新設しました(`IUnknown`、`QueryInterface`、参照カウント、CLSID、IID、ProgID、アパートメントなど)。何を使って調べるかの節を追加し、`dumpbin /exports`、`regsvr32`の登録と解除、32bitと64bitで実体パスが違うこと、`WOW6432Node`を挙げました。IEモードの時間軸も追記しています。
- 初版公開
この記事を引用する(DOI: 10.5281/zenodo.21589627)
この記事はZenodoにアーカイブされています。常に最新版へ解決されるDOIと、いま表示している版に固定されたDOIの両方を下に示します。
小村 豪(2026)「COM / ActiveX / OCX とは何か - 違いと関係をまとめて解説」合同会社小村ソフト. https://doi.org/10.5281/zenodo.21589627 https://staging.comcomponent.com/blog/2026/03/13/000-what-is-com-activex-ocx/
- DOI(最新版)
- 10.5281/zenodo.21589627
- DOI(この版)
- 10.5281/zenodo.21732654
COM / ActiveX / OCX という 3 つの単語は、Windows のレガシー案件でだいたいセットで出てきます。
- ベンダーから
.ocxが送られてくる - Access や VB6 の画面に謎の部品が乗っている
- 「これは COM です」と言われた直後に「ActiveX ですね」と言われる
- そのあと
regsvr32、32bit / 64bit、IE モードあたりの単語が一斉に走ってくる
この流れになると、会話はだいたい噛み合わなくなります。用語が近い上に、歴史的にも重なりが大きいからです。 逆に言えば、ここを分けて理解できると、調査、移行、説明のしやすさがずいぶん変わります。
この記事では、COM とは何か、ActiveX とは何か、OCX とは何か を、違いと関係が見える順番で整理します。
特に、どれが土台で、どれが部品で、どれがファイルなのか をはっきりさせます。
目次
- まず結論(ひとことで)
- この記事でいう COM / ActiveX / OCX
- まず一枚で整理
- 3.1. 関係図
- 3.2. 用語の最短整理
- COM とは何か
- 4.1. ひとことで言うと
- 4.2. COM で重要なもの
- 4.3. 用語の一行メモ
- ActiveX とは何か
- 5.1. ひとことで言うと
- 5.2. ActiveX はブラウザ専用ではない
- OCX とは何か
- 6.1. ひとことで言うと
- 6.2.
.dllとどう違うのか
- 違いを表で整理
- どこで使われていたのか
- なぜ混同されやすいのか
- いまの実務でどう捉えるべきか
- よくある誤解
- 調べるときのチェックポイント
- まとめ
- 参考資料
この記事の知識マップ
COMはWindowsでコンポーネント同士がバイナリ契約でやり取りするための土台であり、ActiveXはCOMとOLE/Automationを基盤にした、ホストやコンテナへ埋め込んで使う再利用可能な部品の文脈である。OCXはそのActiveXコントロールの実装としてよく使われるファイル拡張子にすぎず、概念そのものではない。VB6やMFC、WinFormsからのCOMラッパー利用など、ActiveXはブラウザ専用ではなくWindowsアプリ側でも長く使われてきた。CLSIDとProgID、型ライブラリ、STA/MTAのアパートメントモデルがCOMの識別と呼び出しを支え、regsvr32による管理者権限での登録と32bit/64bitのビット一致がOCXの配置を左右する。ブラウザ側のActiveXは、後方互換の橋であるIEモードを前提に動き続けている。
flowchart LR
accTitle: COM・ActiveX・OCXの知識マップ
accDescr: COMを土台にOLE/AutomationとActiveXが積み重なりOCXという実装ファイルに至る関係、CLSID・ProgID・型ライブラリ・アパートメントモデルというCOMの識別と呼び出しの仕組み、regsvr32による管理者権限での登録とビット一致の制約、ブラウザ側ActiveXがIEモードに依存する構図を示す図です。
com["COM(コンポーネントオブジェクトモデル)"]
activex["ActiveX"]
ocx["OCX"]
ole_automation["OLE/Automation"]
clsid["CLSID(Class ID)"]
progid["ProgID(Programmatic Identifier)"]
vb6["Visual Basic 6.0(VB6)"]
type_library["型ライブラリ(TLB)"]
dotnet[".NET(Core以降)"]
com_apartment_model["COMアパートメントモデル(STA/MTA)"]
regsvr32["regsvr32"]
admin_rights["管理者権限"]
bitness_match_requirement["bitness一致要件"]
ie_mode["IEモード"]
mfc["MFC(Microsoft Foundation Classes)"]
windows_forms["Windows Forms"]
dumpbin["dumpbin"]
activex -->|"利用する"| com
ocx -->|"実装を担う"| activex
ole_automation -->|"利用する"| com
activex -->|"利用する"| ole_automation
com -->|"利用する"| clsid
progid -->|"利用する"| clsid
vb6 -.->|"利用する"| type_library
dotnet -.->|"利用する"| type_library
com -->|"利用する"| com_apartment_model
regsvr32 -->|"自動化する"| com
regsvr32 -.->|"前提とする"| admin_rights
ocx -->|"で構成できる"| regsvr32
ocx -->|"前提とする"| bitness_match_requirement
activex -.->|"前提とする"| ie_mode
vb6 -->|"利用する"| activex
mfc -.->|"利用する"| activex
windows_forms -.->|"利用する"| activex
ocx -->|"で確認できる"| dumpbin
図の実線は常に成り立つ関係、破線は条件付きの関係です(成立条件は詳細ページの各関係の説明に記載)。関係すべての一覧(全18件、根拠・確度つき)と主要概念の定義は知識マップ詳細ページにまとめています。データ: JSON-LD / Turtle
1. まず結論(ひとことで)
先に雑だけれど役に立つ言い方をすると、こうです。
- COM は土台です。Windows でコンポーネント同士がやり取りするためのバイナリ契約です
- ActiveX は COM ベースの部品文脈です。特に、ホストに埋め込んで使うコントロールとして出てきやすいです
- OCX は ActiveX コントロールでよく見る実装ファイルです。ファイル拡張子として遭遇します
- つまり、COM = 仕組み、ActiveX = 部品の文脈、OCX = ファイル くらいで捉えると見通しがよくなります
ActiveX = 昔のブラウザの危ないやつという記憶は半分正しく、半分足りません。ActiveX はブラウザ専用ではありませんOCX = ActiveXとほぼ同義で話されることは多いですが、厳密には概念とファイル拡張子を混ぜています- いま新規開発で主役に据える技術ではありませんが、既存の Windows アプリ、Office、Access、機器 SDK、社内 Web ではまだ遭遇します
まずはこの 3 つを分けて考えるところから始まります。
- それは COM の話なのか
- それは ActiveX コントロールの話なのか
- それは単に
.ocxファイルを見てそう呼んでいるだけなのか
ここが分かると、かなり霧が晴れます。
2. この記事でいう COM / ActiveX / OCX
この 3 つは、実務ではしばしば雑に同居します。 なので、この記事ではまず意味を固定します。
- COM: Windows のコンポーネントモデルそのもの。インターフェース、GUID、登録、呼び出しの土台
- ActiveX: COM を基盤にした、埋め込み可能なコントロールやその利用文脈。実務では特に ActiveX コントロール を指すことが多い
- OCX: ActiveX コントロール実装でよく見るファイル拡張子。
.ocx
少しだけ補足すると、歴史的には ActiveX という言葉はもう少し広く使われた時期があります。
ただ、今の実務で ActiveX と言ったときに困る場所の多くは、だいたい コントロール、埋め込み、ホスト、ブラウザ、登録 あたりです。
なので、この記事でも基本は ActiveX = ActiveX コントロール寄りの話 として進めます。
3. まず一枚で整理
3.1. 関係図
まずは、全体像を 1 枚で見るのが早いです。図が表示されない環境の方は、図のすぐ下の箇条書きが同じ内容になっているので、そちらを読んでください。
flowchart LR
COM["COM<br/>バイナリ契約の土台"] --> OLE["OLE / Automation<br/>埋め込み・自動化の仕組み"]
OLE --> AX["ActiveX<br/>COM ベースのコントロール文脈"]
AX --> CTRL["ActiveX コントロール"]
CTRL --> OCX["OCX (.ocx)<br/>実装ファイルでよく見る形"]
HOST["ホスト / コンテナ<br/>IE / Access / VB6 / MFC / WinForms"] --> CTRL
ここで大事なのは、COM と ActiveX は同じ言葉ではない という点です。
- COM は土台です
- OLE / Automation は埋め込みや自動化のための仕組みです
- ActiveX は、その上で使われるコントロール文脈として出てきます
- OCX は、そのコントロール実装でよく見るファイルです
なので、ActiveX は COM のことですか と聞かれると、答えは 土台は COM だが、ActiveX は COM そのものではない になります。
3.2. 用語の最短整理
| 言葉 | まずの理解 |
|---|---|
| COM | 仕組み、契約、土台 |
| ActiveX | COM ベースの埋め込み部品の文脈 |
| ActiveX コントロール | 実際にホストへ載る部品そのもの |
| OCX | ActiveX コントロールでよく見るファイル拡張子 |
| OLE / Automation | 埋め込み、自動化、連携の仕組み |
最短で覚えるなら、これで十分です。
- COM は仕組み
- ActiveX は部品の文脈
- OCX はファイル
4. COM とは何か
4.1. ひとことで言うと
COM は Component Object Model の略で、Windows 上でコンポーネント同士がやり取りするための バイナリ契約 です。
ここでいうバイナリ契約とは、ソースコードの都合や言語仕様ではなく、コンパイル後の形でも約束が保たれるインターフェース のことです。 C++ で作った部品を、別の言語や別のアプリケーションから利用できるのは、この契約があるからです。
実務の感覚に寄せると、COM は 便利なライブラリの配り方 というより、実装を隠して契約だけでつなぐ仕組み です。
たとえば、このあたりが COM の典型です(それぞれの単語の意味は 4.3 に一行ずつまとめてあります)。
IUnknownによる参照カウントQueryInterfaceによるインターフェース探索IIDやCLSIDといった GUID ベースの識別- DLL によるインプロセス利用
- EXE によるアウトプロセス利用
要するに、COM は Windows の部品化文化の土台 です。
4.2. COM で重要なもの
基本だけを押さえるなら、COM では次が重要です。
- インターフェース中心
- 実装より先に、何を公開するかを決めます
- GUID による識別
- クラスやインターフェースを一意に識別します
- ホストと実装の分離
- 呼び出す側は内部実装を知る必要がありません
- プロセスをまたげる
- 同一プロセスだけでなく、別プロセスの部品としても使えます
このへんが、COM をただの古い技術で終わらせない理由です。 かなり早い時代から、契約ベースで再利用する設計 をしっかり持っていました。
4.3. 用語の一行メモ
COM の話では、説明なしに次の単語が飛んできます。ここでは概念の入口として、まず一行ずつだけ押さえておきます。設計としての面白さまで踏み込みたい方は COM とは何か - Windows COM の設計が今でも美しい理由 をどうぞ。
| 用語 | 一行での意味 |
|---|---|
| インターフェース | 部品が「これを呼べます」と約束する関数の並びです。実装とは切り離されています |
IUnknown |
すべての COM インターフェースの土台になるインターフェースです。QueryInterface / AddRef / Release の 3 つだけを持ちます |
QueryInterface |
手元の部品に「このインターフェースも持っていますか」と尋ねるメソッドです。持っていれば、そのポインターが返ります |
| 参照カウント | 利用者の数を数えるカウンターです。AddRef で増え、Release で減り、0 になった時点で部品が解放されます |
| GUID | Globally Unique Identifier の略で、{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} の形で書かれる 128 bit の識別子です。名前の衝突を避けるために使われます |
| CLSID | Class ID の略で、「どの部品(クラス)か」を指す GUID です。レジストリの登録もこの値で引きます |
| IID | Interface ID の略で、「どのインターフェースか」を指す GUID です |
| ProgID | CLSID に付けた人間向けの別名です。Excel.Application のような文字列で、スクリプトなどから部品を指すときに使われます |
| Type Library | 部品が公開するインターフェースやメソッドの型情報をまとめたデータです。VB6 や .NET が部品を参照するときに読みます |
| Apartment(STA / MTA) | COM のスレッドの流儀です。STA は「その部品は 1 本のスレッドからだけ呼ぶ」、MTA は「複数スレッドから同時に呼んでよい」という取り決めで、UI 部品はほぼ STA 側です |
この記事は概念の整理までなので、各項目の詳細には踏み込みません。実装の話が必要になったときは、この表の単語をそのまま検索語にすると当たりを付けやすくなります。
5. ActiveX とは何か
5.1. ひとことで言うと
ActiveX は、COM を基盤にした 再利用可能なソフトウェア部品、特に ホストやコンテナに埋め込んで使うコントロール として理解するのが分かりやすいです。
実務で ActiveX と言うと、かなりの確率で ActiveX コントロール の話です。
たとえば、ボタン、グリッド、グラフ、カレンダー、ビューア、機器連携部品のようなものが該当します。
ActiveX は 単独で偉そうに立っている巨大技術 というより、何かのホストの中に埋め込んで働く部品 として捉えると外しにくいです。
5.2. ActiveX はブラウザ専用ではない
ActiveX = Internet Explorer のやつ という印象はかなり強いです。
これは間違いではないのですが、それだけではありません。
ActiveX コントロールが使われてきた場所を挙げてみます。
- Access フォーム
- VB6(Visual Basic 6.0)アプリケーション
- MFC(Microsoft Foundation Class ライブラリ)のコンテナ
- Office / VBA 周辺
- WinForms からの COM ラッパー利用
- Internet Explorer やその互換運用文脈
つまり、ActiveX は ブラウザ専用技術ではなく、Windows アプリ側でも長く使われてきた部品技術 です。
ここが分からないと、社内 Web で見つけた ActiveX と、Access 画面に埋まっている ActiveX を別物に見てしまいます。 実際には、どちらもかなり COM 寄りの親戚です。
6. OCX とは何か
6.1. ひとことで言うと
OCX は、ActiveX コントロール実装でよく使われるファイル拡張子 です。
Windows の現場で .ocx を見つけたら、まず 埋め込みコントロール系の COM 部品 を疑ってよいです。
出てくる場面はだいたいこのあたりです。
- ベンダー SDK の配布物
- VB6 / Access / MFC の古いプロジェクト
- インストーラーに含まれる登録対象ファイル
regsvr32が必要な部品
押さえておきたいのは、OCX はファイルの形であって、概念そのものではない という点です。
なので、OCX とは何か を雑に言うなら、ActiveX コントロールの実体としてよく遭遇するファイル です。
6.2. .dll とどう違うのか
ここも混乱しやすいところです。
.ocxは、ActiveX コントロールであることをかなり強く匂わせます.dllは、普通のライブラリかもしれないし、COM サーバーかもしれないし、ActiveX 周辺の依存 DLL かもしれません
.ocx を見ればほぼ ActiveX 寄りの話だと当たりを付けられますが、.dll を見ただけではまだ何者か分かりません。
実務でありがちなのは、
vendorcontrol.ocxvendorhelper.dllvendorcore.dll
のように並んでいて、主役は OCX、脇を DLL が支える パターンです。
なので、OCX = DLL の一種なのか と聞かれたら、感覚としては近いですが、調査の場では 役割を分けて見る のが安全です。
7. 違いを表で整理
| 言葉 | 何者か | 実務でよく見る単語 | よくある実体 |
|---|---|---|---|
| COM | コンポーネントモデル、バイナリ契約の土台 | IUnknown, QueryInterface, CLSID, IID, Apartment |
.dll, .exe, 登録情報 |
| ActiveX | COM ベースのコントロール文脈 | コンテナ、埋め込み、プロパティ、イベント | ActiveX コントロール |
| ActiveX コントロール | 実際に配置される再利用部品 | グリッド、カレンダー、ビューア、機器連携 | .ocx, .dll |
| OCX | ActiveX コントロールでよく見るファイル拡張子 | regsvr32, ツールボックス, 32bit / 64bit |
xxx.ocx |
| OLE / Automation | 埋め込みや自動化の仕組み | Office 連携、プロパティページ、オートメーション | COM ベースの各種機能 |
この表で覚えるなら、まずはこうです。
- COM は基礎工事
- ActiveX はその上に載る部品文化
- OCX は現場で拾うファイル
8. どこで使われていたのか
ActiveX / OCX は、ブラウザの記憶が強すぎて 昔の Web 技術 に見えがちです。
ただ、実際にはもっと広く使われていました。
具体的にはこういう場所です。
- デスクトップアプリ
- VB6
- MFC / C++
- Access フォーム
- Office / VBA 周辺
- ブラウザ / 社内 Web
- Internet Explorer に埋め込むビューア
- 署名部品
- ファイル転送部品
- 周辺機器連携部品
- 既存 .NET アプリ
- WinForms からラップして使う既存 ActiveX コントロール
- 既存 COM 資産を UI 部品として延命しているケース
ここでも結局、ActiveX はインターネット専用ではない という話に戻ってきます。 IE で派手に目立ったので Web 技術っぽく見えるだけで、実態としては Windows の埋め込み部品技術 と見るほうが実務ではしっくりきます。
9. なぜ混同されやすいのか
9.1. 言葉の階層が違うのに、同じ会話に出てくる
- COM は 土台 の話です
- ActiveX は 部品の文脈 の話です
- OCX は ファイル の話です
そもそも階層が違うのに、実務では同じ現場で同時に出てくるので、会話がぐちゃっとなりやすいわけです。
9.2. ActiveX という言葉が少し広い
COM は比較的意味が固定されています。
一方 ActiveX は、歴史的にも実務的にも少し広く使われます。
人によって、
- コントロールそのもの
.ocxファイル- IE で動く古い部品
- COM ベースの埋め込み部品全般
のどれを指しているかがズレます。 この時点で、もう会話は噛み合っていません。
9.3. .ocx を見た瞬間に全部 ActiveX と呼びたくなる
これは気持ちは分かります。 普段はそれでだいたい通じます。
ただ、移行や調査の場面では、
- それは UI 部品なのか
- どのホストで動くのか
- 登録が必要なのか
- 32bit / 64bit はどうなっているのか
- ブラウザ依存があるのか
を分けて見ないと、あとでちゃんと転びます。
10. いまの実務でどう捉えるべきか
まず、COM / ActiveX / OCX を見つけたからといって、すぐに全面否定する必要はありません。 ただし、全部を同じ温度で扱うのも危険です。
ブラウザ側の ActiveX 依存
これは優先的に厳しめに見るほうが安全です。
- 現代のブラウザ開発の主流ではありません
- 互換運用の文脈では IE モードが話題になりますが、これは 後方互換のための橋 と見たほうがよいです
- 新規の前提技術として握るのはおすすめしにくいです
判断には時間軸も要ります。IE11 デスクトップアプリはすでに退役しており、いま残っている足場は Microsoft Edge の IE モードです。その IE モードについて Microsoft は、少なくとも 2029 年まではサポートし、廃止する場合は 1 年前に告知するという方針を出しています。つまり、2029 年は「そこまで放置してよい期限」ではなく、そこまでに剥がし終える期限 として逆算する対象です。剥がす手順そのものは IEモード依存システムの脱却ガイド に分けて書いてあります。
Web 側の ActiveX は「どう延命するか」より「どこから剥がすか」 で考えるほうが現実的です。
デスクトップ側の ActiveX / OCX 依存
こちらはもう少し現実的に判断できます。
- 既存ホストの中で安定稼働している
- 配布先が限定されている
- ベンダー保守か自社保守の見通しがある
- 登録、依存 DLL、bitness の前提が把握できている
この条件が揃うなら、残す 判断は普通にあります。
一方で、
- 32bit OCX を 64bit 側へそのまま読み込みたい
- 周辺だけ .NET 化したい
- 配布と登録で毎回こける
- ブラウザ依存が残っている
なら、残す / 包む / 置き換える を分けて考えるのが安全です。
いまの実務で問われるのは ActiveX だから悪 かどうかではなく、どこに境界を作るか です。
古い技術というより、既存システムの接合面 として見ると扱いやすくなります。
11. よくある誤解
誤解 1: COM = ActiveX
違います。 COM は土台で、ActiveX はその上で使われるコントロール文脈です。
誤解 2: ActiveX = Internet Explorer
違います。 IE で有名になったのは事実ですが、ActiveX はブラウザ専用ではありません。
誤解 3: ActiveX = OCX
実務ではかなり近い意味で使われますが、厳密には違います。 ActiveX は文脈や部品の話で、OCX はファイル拡張子として遭遇する実体です。
誤解 4: OCX はただの DLL でしょ
雑に言えば近いですが、調査では雑にしないほうがよいです。
.dll だけでは役割が読めませんが、.ocx はかなりコントロール寄りの匂いがします。
誤解 5: COM はもう死んだ技術
少なくとも Windows の世界では、そういう言い方は乱暴です。 表舞台から少し下がって見えるだけで、設計や相互運用の文脈では今も出てきます。
12. 調べるときのチェックポイント
COM / ActiveX / OCX を見つけたら、このあたりを順に確認していくと迷子になりにくいです。
- それは何の部品か
- UI コントロールか
- ビューアか
- 機器連携か
- Office / Access 連携か
- どこで動くか
- Access / VBA か
- VB6 / MFC か
- WinForms か
- IE / IE モードか
- ファイルと識別子は何か
.ocx/.dll/.exe- ProgID
- CLSID
- Type Library
- 登録と配布はどうなっているか
regsvr32が必要か- 依存 DLL はあるか
- 管理者権限は必要か
- bitness は合っているか
- 32bit か
- 64bit か
- 同一プロセスで動く必要があるか
- 将来どう扱うか
- そのまま残すか
- 境界を作って包むか
- 置き換えるか
12.1. 何を使って調べるか
上の 6 点は「何を見るか」なので、「どこを開くか」も並べておきます。ここを知らないと、チェックリストがあっても最初の一歩で止まります。
| 調べたいこと | 使う道具・見る場所 |
|---|---|
その .dll / .ocx が自己登録できる COM サーバーか |
Visual Studio 付属の dumpbin /exports ファイル名 で、DllRegisterServer がエクスポートされていれば自己登録型の COM サーバーです。regsvr32 はこの関数を呼んでいます |
| 登録と解除のやり方 | regsvr32 ファイル名 で登録、regsvr32 /u ファイル名 で解除です。管理者権限が要ります。64bit Windows では %SystemRoot%\System32\regsvr32.exe が 64bit 用、%SystemRoot%\SysWOW64\regsvr32.exe が 32bit 用で、部品の bitness に合わせて選びます |
| CLSID から実体ファイルを引く | レジストリの HKEY_CLASSES_ROOT\CLSID\{CLSID}\InprocServer32 の既定値が、インプロセスサーバー(DLL / OCX)のパスです。アウトプロセスの部品なら LocalServer32 を見ます |
| ProgID から CLSID を引く | HKEY_CLASSES_ROOT\ProgID名\CLSID の既定値が CLSID です。逆に CLSID 側から ProgID サブキーを見ることもできます |
| 32bit 部品の登録先 | 64bit Windows では、32bit 用の登録は HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID 配下に入ります。64bit 側だけ見て「登録されていない」と判断しないようにします |
| 公開しているインターフェースを一覧する | Windows SDK に含まれる OLE/COM Object Viewer(oleview.exe)があれば、登録済みクラスと Type Library を一覧できます。SDK のバージョンによっては同梱されないので、無ければレジストリと、開発環境側の参照設定から追います |
| ホスト側の bitness | タスクマネージャーの「詳細」タブで、列見出しを右クリックして「プラットフォーム」列を追加すると、プロセスごとに 32 ビットか 64 ビットかが分かります。32bit の OCX は 64bit プロセスへ直接は読み込めません |
| 登録や依存 DLL の解決に失敗している | Process Monitor でレジストリとファイルのアクセスを追うと、どのキーやどの DLL を探して失敗したかが見えます。使い方は Process Monitor(ProcMon)実践ガイド にまとめてあります |
このへんを見ずに、ActiveX があるので全部新規実装します と走ると、昔の罠をきれいに踏みます。
まずは上の 6 点と道具の対応を埋めてから、10 章の「残す / 包む / 置き換える」を決めるほうが安全です。
13. まとめ
COM / ActiveX / OCX の違いを、いちばん雑に、でも実務で役立つ形で言うならこうです。
- COM は土台
- ActiveX は COM ベースの埋め込み部品の文脈
- OCX は ActiveX コントロールでよく見るファイル
この 3 つを分けて考えられるようになると、
- これは単なる
.ocxなのか - COM 全体の問題なのか
- ブラウザ依存の ActiveX なのか
- デスクトップで残せる部品なのか
がかなり見えやすくなります。
レガシー技術は、名前が古いから難しいのではなく、土台、部品、ファイルが同じ会話に出てくるからややこしい のです。 ただ、構造が見えれば、意外と扱える問題になります。
14. 参考資料
- COM とは何か - Windows COM の設計が今でも美しい理由
- ActiveX / OCX を今どう扱うか - 残す・包む・置き換える判断表
- コンポーネント オブジェクト モデル (COM) - Microsoft Learn
- ActiveX コントロール - Win32 apps - Microsoft Learn
- ActiveX Controls - MFC - Microsoft Learn
- ActiveX Control - Access VBA - Microsoft Learn
- Internet Explorer (IE) モードとは - Microsoft Learn
- IE と Edge のライフサイクル FAQ - Microsoft Learn(IE モードを少なくとも 2029 年まで支える方針)
- regsvr32 - Windows コマンド - Microsoft Learn
- CLSID キー - Win32 apps - Microsoft Learn
- レジストリ リダイレクター - Win32 apps - Microsoft Learn
- DevTools を Internet Explorer モード (IE モード) で使用する - Microsoft Learn
関連する記事
同じタグを共有する最新の記事です。さらに近い話題で知識を深められます。
COM/OCX/ActiveX開発でハマる登録とbitnessの罠
COM、OCX、ActiveX開発でハマりやすい32bit/64bit、Visual Studio 2022、regsvr32/Regasm、管理者権限、HKCR、STA/MTAを実務目線で整理します。
ActiveX / OCX を今どう扱うか - 残す・包む・置き換える判断表
ActiveX / OCX を見つけたときに、残す・包む・置き換えるのどれを選ぶべきかを、32bit / 64bit、登録、ブラウザ依存、ベンダー保守まで含めて整理します。
Windowsアプリ 外注・受託開発を依頼する前に整理したいこと
Windowsアプリの外注・受託開発を依頼する前に、既存ソフト改修、装置連携、COM/ActiveX、配布・更新、保守の整理ポイントを解説します。
Reg-Free COMとは - 登録不要でCOMを使う仕組み
Reg-Free COM の基本、アクティベーション コンテキストとマニフェストの役割、メリット、限界、実務での判断軸を整理します。
COM とは何か - Windows COM の設計が今でも美しい理由
COM とは何かを、Windows COM のインターフェース設計、IUnknown、GUID、バイナリ互換性の観点から整理し、今でも通用する理由を解説します。
関連トピック
このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。
Windows技術トピック
Windows 開発、不具合調査、既存資産活用の技術トピックをまとめた入口です。
ActiveX / 移行テーマ
COM / ActiveX / OCX を残すか、包むか、置き換えるかを整理するトピックです。
このテーマがつながるサービス
この記事は次のサービスページにつながります。近い入口からご覧ください。
既存資産活用・移行支援
COM / ActiveX / OCX の違いを整理する話は、既存資産をどう活かしてどう移行するかを考える入口として相性がよいです。
技術相談・設計レビュー
まず用語と境界の意味を揃えてから方針を決めたい案件なら、技術相談・設計レビューとして整理を進められます。
よくある質問
この記事のテーマについて、相談時によくある質問をまとめています。
- OCXファイルとは何ですか?
- OCX は、ActiveX コントロールの実装でよく使われるファイル拡張子です。Windows の現場で .ocx を見つけたら、まず埋め込みコントロール系の COM 部品を疑ってよいです。ベンダー SDK の配布物、VB6 / Access / MFC の古いプロジェクト、インストーラーに含まれる登録対象ファイル、regsvr32 が必要な部品として出てくることが多いです。OCX はファイルの形であって概念そのものではない、という点を押さえておくと混乱しにくくなります。
- COMとActiveXは何が違いますか?
- COM は Windows でコンポーネント同士がやり取りするためのバイナリ契約、つまり土台です。ActiveX は COM を基盤にした再利用可能なソフトウェア部品で、特にホストやコンテナに埋め込んで使うコントロールの文脈を指すことが多いです。「COM = 仕組み、ActiveX = 部品の文脈、OCX = ファイル」と捉えると見通しがよくなります。ActiveX の土台は COM ですが、ActiveX は COM そのものではありません。
- ActiveXはInternet Explorer専用の技術ですか?
- 違います。IE で有名になったのは事実ですが、ActiveX コントロールは Access フォーム、VB6 アプリケーション、MFC のコンテナ、Office / VBA 周辺、WinForms からの COM ラッパー利用など、Windows アプリ側でも長く使われてきた部品技術です。ブラウザ専用技術ではなく、Windows の埋め込み部品技術として見るほうが実務ではしっくりきます。なおブラウザ側の ActiveX 依存は、現代では「どう延命するか」より「どこから剥がすか」で考えるほうが現実的です。
- OCXとDLLはどう違いますか?
- .ocx は ActiveX コントロールであることをかなり強く匂わせる拡張子ですが、.dll は普通のライブラリかもしれないし、COM サーバーかもしれないし、ActiveX 周辺の依存 DLL かもしれません。実務では vendorcontrol.ocx を主役に、vendorhelper.dll などの DLL が脇を支えるパターンがよくあります。OCX は DLL の一種かと聞かれれば感覚としては近いですが、調査や移行の場面では役割を分けて見るのが安全です。