OLE(Object Linking and Embedding)とは
OLE(Object Linking and Embedding、オーレ、オブジェクトのリンクと埋め込み)は、
マイクロソフトが開発した、異なるアプリケーション間でオブジェクトをやり取りするための仕組みであり、規約です。OLEは、開発者向けには、カスタムユーザーインターフェイス要素の開発と利用を可能にするOLEコントロール拡張(OLE Control Extension, OCX)などの技術を提供します。技術的な側面では、OLEオブジェクトは、`IOleObject`インターフェースを実装したオブジェクトとして定義されます。必要に応じて他のインターフェースも実装します。
OLEの概要
OLEの主な特徴は、文書の一部を他のアプリケーションで編集し、その結果を元の文書に反映できることです。例えば、
DTPソフトで作成された文書内のテキストは
ワープロソフトで、図形はペイントツールやドローツールで編集できます。さらに、OLEは文書内に他のデータへの参照を含めることができ、参照元のデータが変更された場合、その変更が即座に文書に反映されます。初期のOLEは複合文書の管理を目的としていましたが、現在ではドラッグアンドドロップや
クリップボードを通じたアプリケーション間でのデータ転送にも利用されています。OLEオートメーション機能は、
JScriptや
VBScriptなどのスクリプト言語を通じて、アプリケーションの動作を自動化するスクリプティングにも活用されています。OLEを活用しているソフトウェアとしては、
Microsoft Office製品や、Adobeクリエイティブ製品のExtendScriptなどが挙げられます。
OLEの歴史
OLE 1.0
OLE 1.0は、1990年に
動的データ交換(Dynamic Data Exchange, DDE)の後継として登場しました。DDEがアプリケーション間の限定的なデータ転送を担っていたのに対し、OLE 1.0は文書間の連携や、ある文書への別の文書の埋め込みを管理する機能を提供しました。OLE
サーバーとクライアント間の通信には、システムライブラリを介して仮想関数テーブル(vtable, VTBL)が使用されました。VTBLには、OLEシステムが
サーバーやクライアントとの通信に使用する関数へのポインタが、所定の構造に従って格納されていました。初期のOLE 1.0では、
サーバーとクライアントに対応するシステムライブラリであるOLESVR.DLLとOLECLI.DLL間の通信に、`WM_DDE_EXECUTE`メッセージが使われていました。OLE 1.0は、後にCOM(
Component Object Model)やDCOM(Distributed
Component Object Model)といったソフトウェアの部品化アーキテクチャへと発展しました。OLEオブジェクトが
クリップボードやドキュメントに埋め込まれる際には、ビットマップとメタファイルの2つのWindowsネイティブな表現形式も保存されています。これにより、オブジェクトを作成するアプリケーションをロードすることなく、画面表示が可能になります。さらに、適切なアプリケーションがインストールされていれば、オブジェクトの編集も可能です。
OLE 2.0
OLE 2.0は、OLE 1.0の改良版として登場しました。OLE 1.0と同様の目的を持ちながらも、実装面では生のVTBLではなくCOMを使用するように変更されました。これにより、OLEの機能がより洗練されました。また、OLEオートメーション、ドラッグアンドドロップ、インプレースアクティベーションなどの新機能が導入され、ユーザーエクスペリエンスが大幅に向上しました。
関連項目
Component Object Model (COM)
ActiveX
Windows Script Host
Active Scripting
Microsoft Office
Bonobo,
KPart
OLE for Process Control
スクラップ (Windows)
外部リンク
*
OLE Concepts and Requirements Overview - ウェイバックマシン.aspx) (2015年2月21日アーカイブ)