Windows の主要技術は DLL というやつだが、これはメモリやディスクを節約するための技術で、反面管理は大変になるという代物なのだ。
DLL の仲間には VBX とか OCX とか DRV とか FON とかあって、どれもがトラブルの元で、やれバージョンが違うとか、やれローディングできないとか、やれ不正なアクセスが発生しましたとか、まぁこんなメッセージを何度も見たことがあるでしょう。
本来リンクというのは静的(Static)で、プログラムのコンパイル後ライブラリと組み合わせて実行モジュールを作成するのが一般的だったが、DLL はプログラムの実行時にライブラリをメモリに呼び出すことで、リンクに相当する処理を行うようにしたものだ。そのため複数のプログラムで同時に使用するモジュールを、DLL にしておけばディスクも節約できるし、メモリも節約できるし、プログラムのメンテナンスも(開発者が混乱しなければ)簡単になるのだ。(DLL が一般的になったのは OS/2 で採用された以後だと思われる。) しかし、Windows は標準的に提供される DLL や 半標準的に提供されている DLL が数多くあって、そのバージョンの違いに開発者はヒイヒイ言ってるのが現状だ。
DLL のメリットはメモリとディスクの節約ということだが、しかしその割には Windows ってメモリを喰のよね。アプリの造りにもよるのでしょうが、たかだか文章を書くためだけのツールであるワープロでも一太郎で 32MB、MS Word でも 20MB以上のメモリを喰うんだから、大飯喰らいもいいところ。フォトレタッチの様に物理的にメモリを消費するアプリは納得できるのだが。
結局、ユーザが使いもしないような機能だらけのヘビー級のアプリケーションを好んで買うような現状や、それを盛り上げるパソコン雑誌や流通が悪いのでしょうが。
(さらに C や C++ などのプログラム言語が、動的なメモリ管理を苦手としているのがメモリの増大の原因でもあるようだ。)
DLL の管理は技術的には何とかなるものだが、マイクロソフト社の管理のいい加減さによってトラブルが引き起こされているというのも不満の元だ。MS Excel、MS Access、MS Internet Explorer 3.0、MS Plus、Win95 サービスパックなどが勝手に Windows のシステムを書き換えてしまい、開発社の環境と微妙に異なる環境にしてしまう。まったく。マイクロソフトのアプリ間でもその整合性が取れていないのだから、呆れるよりしょうがない。
まぁかく言う私もマイクロソフトのおこぼれにあずかる、しがないコンピュータ屋ですので愚痴を言うだけで、何の力もないのですが。(苦笑)
結構前から対策は考えられているが、あまり捗々しくない。OLE や OpenDoc などのコンポーネントウェアと NC(Network Computer) や Java Terminal などのネットワーク端末だろうか。
しかし OLE なんて(今は過渡期ということもあるのだろうが) DLL 以上に複雑で管理が大変そうだし、NC なんかも線が太くなければ使いものにならない。(線が太い=高速な回線に接続されていること)
しばらくは安定しない Windows と付き合っていく必要がありそうだ。