Object Linking and Embedding
Object Linking and Embedding (OLE、オーレ、オブジェクトのリンクと埋め込み)は、マイクロソフトが開発した、オブジェクトをやり取りするための仕組み・規約である。
開発者に対しては、OLEコントロール拡張(OLE Control Extension, OCX)のような、カスタムユーザーインターフェイス要素の開発と利用をもたらす。
技術詳細的には、OLEオブジェクトは、IOleObject
インターフェイス[1]を実装した何らかのオブジェクトである(オブジェクトの要求仕様によっては、他のインターフェイスをともに実装していることもある)。
概要
編集OLEは文書の一部分を他のソフトで編集させ、それを元の文書に取り込むことも可能にしている。たとえば、DTPでは、テキストをワープロソフト、図をペイントツールやドローツールで編集するといった具合である。また、他のデータへの参照を文書に含めることもでき、その場合参照先のデータが変更されると、参照が含まれる文書にも即座にその変更が反映される。
OLEの初期の用途は複合文書の管理のためであるが、ドラッグアンドドロップやクリップボードによるアプリケーション間でのデータの転送のためにも使われている。また、OLEによるオートメーションは、JScriptやVBScriptを経由して、アプリケーションの動作を自動化するスクリプティングにも使われている。
OLEを活用しているソフトウェア実例としては、Microsoft Office製品のほか、Windows版Adobeクリエイティブ製品のExtendScript[2]が挙げられる。
歴史
編集OLE 1.0
編集OLE 1.0は1990年、動的データ交換 (Dynamic Data Exchange, DDE) の後継として公開された。DDEが2つのアプリケーションの間で限定的なデータ転送を行う仕組みだったのに対し、OLEは2つのドキュメント間の連携(リンク)や、あるドキュメントに別のドキュメントを埋め込みを管理する機能を持った仕組みであった。
OLEサーバとクライアント間の通信には、システムライブラリを介するが、これには仮想関数テーブル (vtable, VTBL) が用いられた。VTBLには、OLEシステムがサーバやクライアントとの通信に用いる関数へのポインタが所定の構造に従って収められている。サーバとクライアントに対応するシステムライブラリは、OLESVR.DLLとOLECLI.DLLで、当初はこの2つの間の通信にWM_DDE_EXECUTE
メッセージが利用されていた。
OLE 1.0は後にCOMやDCOMとしてソフトウェアの部品化を実現するアーキテクチャとなっていった。
OLEオブジェクトがクリップボードやドキュメントに埋め込まれる形で存在するとき、2つのWindowsネイティブな表現形式(ビットマップとメタファイル)も保存されている。これにより、オブジェクトをメモリ上に作成するアプリケーションをロードすることなく画面表示が可能になる。さらに、そのOLEオブジェクトに対応する適切なアプリケーションがインストールされていれば、オブジェクトを編集できる。
OLE 2.0
編集OLE 1.0の改良版として現れたOLE 2.0は、その目指すところはOLE 1.0と大きな違いはないが、実装面では、生のVTBLではなくCOMを使って実装し直されたという大きな違いがある。また、OLEオートメーション、ドラッグ・アンド・ドロップ、インプレースアクティベーションなどの新機能が加わった。
関連項目
編集脚注
編集外部リンク
編集- OLE Concepts and Requirements Overview - ウェイバックマシン(2015年2月21日アーカイブ分)