全ての始まりはOLEからの様な気がする。当時OLEはとてもシンプルかつ効率的なプログラム・オブジェクトの実装方法だったと思う。


リンクして当時、プログラムとして完結した実行モジュールをそのまま利用できる価値と可能性にエンジニア達は興奮を覚えたのを覚えています。


しかしですね、きっとOLEについて話をする前にDDE(Dynamic Data Exchange)について少し話しておかなければいけないのだろうな~ぁ。これは1980年代の中盤から後半・・16ビットコンピュータとOS展開されていたプロセス間通信のプロトコルです。


この頃の話は、PCの過渡期という事もあり、時代の経過と共に忘れさられていく技術の一つでしょう(皆が試行錯誤の時代で生まれてきた物です)。


DDEが生まれたのは、CicagoがWindows 95となって出る少しもっともっと以前の時代です・・・MS-DOS(PC-DOS)が少し成長してWindows 1.0(PC-98 640k の上で立派に動いていたんですよ、タイルドウィンドウでした)そしてWindows 2.0が出て実行モジュールが仮想マルチタスクのサポートを始めた頃の話でした。


PC上で動作する実行モジュール(プロセス)同士は、やっとWindows OSを通してデータたコマンドが相互に実行できるようにダイナミックな通信ができるようになりました。


これはMS-DOSというOSでは実現できなかったことでした。Windows上で動作する実行モジュール同士が通信して相手に機能を実行させ、その結果を返す事ができるようになったのです。


それまでUNIXのように当時ハイスペックなCPU(MC68020など・・リニアなアドレス空間を扱うCPU)で動くマルチタスクOSでは実装されていた技術が、Windowsの世界へやってきたのです。


ある意味、WindowsはUNIX技術の真似でしたが、それでも、いままでPC上のDOSの世界でアプリケーションを書いていた人にとってはとても画期的な事でした(UNIXの人達からはずいぶん見下されていたような気がします)。


それまでセマホを駆使して静的なデータを介してデータでデータ交換を実現してきたプログラマにとってWindows 2.0でDDEがサポートされ、ダイナミックにデータが交換できる技術を凄い事だったと興奮した事を覚えています(プログラマの仲間を交えて熱く語り合ったような記憶がありますね)。


私達はこれをプロセス間通信と呼び「名前付きパイプ」を利用して16bitのOS上のメモリ空間で動作するプロセス同士で通信が可能になりこれを利用したアプリケーションを作りました。


その後、DDEの技術はWindows 3.1そのものにもフレームワークとして実装されていきました。このDDEアーキテクチャを利用してWindows3.1にOLEサーバやOLEコントロール(OCX)として実装されたのがOLE1なのです。


OLE1.0は、DDEのみでは実装できなかったEmbededが実装されていました。


Windowsが実用的になったのがEMSメモリー(結局はウィンテルの弊害に長い間プログラマは悩まされた時代です)をサポートしたWindows 3.1(その後Windows 3.1a,3.1b, 3.1と進化します)


そして本格的なプリムエンティティブなOSとしてWindows 95が発表されました。OLE2では、OLE1.0のDDE技術からCOMと呼ばれるプロトコル利用してオブジェクト間の通信を定義し、Windows 95やWindows NT 3.5の標準機能として実装されました。


OLE2では、本格的な埋め込み型の機能をサポートし、アプリケーション相互の機能利用等を容易にしている。また、OLEはObject Linking and Embedingの略だったがOLE2ではこれらの機能は重要視されなりOLE1.0から実装が変化してきました。


また、VBA等のスクリプトを利用してOLE2のオブジェクトを利用可能にしたOLEオートメーションと呼ばれるスクリプトによる処理制御を実現、オブジェクト内のメソッドやプロパティをスクリプト内から利用して自動化できるようになりました。


そしてOLE2は、さらに進化し、1996年にネットワークの機能を実装し、OLEコントロールはActiveXと呼ばれるようになり、ネットワーク化とオブジェクト化が進みプログラムコンポーネントとして利用されるようになったのです。
これが、PCプログラミングでの分散化の序章です。


メラメラ・・・やれやれ・・・