Insider's Eye

新世代Windows、Windows XPを初体験(4)

デジタルアドバンテージ 小川 誉久
2001/02/21

開発者から見たWindows XP

 前編で述べたとおり、Windows XPでは、テーマによるデスクトップのカスタマイズ機能が強化されている。ここでは、Windows XPのグラフィカル・スタイルを系統的・統一的に管理可能にする内部的なしくみについて解説しよう。

 周知のとおりWindowsのグラフィカル・スタイルは、ウィンドウ・デザイン(タイトル・バーやウィンドウの枠など)に加え、プッシュ・ボタンやエディット・コントロールなどのコントロール(ユーザー・インターフェイスの部品)などによって決定付けられている。従来のWindows(Windows Me/Windows 2000)では、これらはWindowsのユーザー・インターフェイスを司るカーネル・モジュールの1つであるUSER32.DLLと、コントロールを制御するCOMCTL32.DLLという2つのDLL(Dynamic Link Library)によって描画・制御されていた。具体的にUSER32.DLLは、ウィンドウの枠やタイトル・バー、メニュー領域などの非クライアント領域の描画に加え、プッシュ・ボタンやリスト・ボックス、エディット・コントロールなどといった基本的なコントロールの描画と制御を担当する(クライアント領域は、アプリケーションが描画を受け持つ領域)。これに対しCOMCTL32.DLLは、リスト・ビューやタブ・コントロール、ツール・バー、ツール・ヒント、ツリー・ビューなど、主にWindows 95以降に追加されたコントロールの描画と制御を担当する。つまり従来は、Windowsのグラフィカル・スタイルを司るコンポーネントが、主に歴史的な事情から分散されていたわけだ。

 これに対しWindows XPでは、過去との互換性を維持しながら、スタイルを集中的に管理・描画できるように内部機構が改良された。具体的には、これまでは渾然一体となっていたコントロールの制御と描画を明確に分け、またコントロールによって分散していたDLLの処理を1つにまとめた。コントロールの描画を集中的に行うために、Windows XPでは、「テーマ・マネージャ」(UXTHEME.DLL。「UX」はUser eXperienceの略だと思われる)と呼ばれるコンポーネントが新たに追加された。またすべてのコントロールの制御は、COMCTL32.DLLにまとめられた。ただし互換性を維持するために、従来どおり、USER32.DLLにもコントロールの制御と描画を行うコードは残されており、旧来のアプリケーションは、USER32.DLLのコードで従来どおりにコントロールを操作できるようにしている。

 このようにWindows XPでは、コントロールの制御と描画がそれぞれCOMCTL32.DLLとUXTHEME.DLLに一元化されているため、テーマの系統的・統一的な管理と運用が可能になっている。

side-by-sideコンポーネント共有

 伝統的にWindowsアプリケーションは、Windowsシステムが提供する各種のDLLを呼び出すことで、さまざまな処理を行うようになっている。これらのDLLは、Windows OSのバージョン・アップや、サービス・リリースの公開に伴って、新しいバージョンに置き換えられる。問題は、DLLのバージョン・アップによって、古いアプリケーションが正常に機能しなくなるケースがあることだ。こうした互換性問題を回避する最も簡単な方法は、従来のDLLはそのまま残して、新しいDLLを並行して提供することだ。しかし同一のファイル名で新しいDLLを提供すると、古いDLLが上書きされてしまい、従来のアプリケーションが動かなくなる場合がある(Windows MeやWindows 2000では、システム用のDLLが不用意に上書きされないようにする機能が追加されている)。このような状態を指してWindowsプログラマは、「DLL地獄(DLL HELL)」と呼んでいる。

 このDLL地獄を解決するために導入されたのがside-by-sideコンポーネント共有である(side-by-side component sharing。“side-by-side”は「並んで」という意味)。これと同等の機能は、すでにWindows 2000やWindows 98 SE、Windows Meでも導入されているが、Windows XPではさらにそれが強調されている。

 例えば、従来のWindowsで使用されていたCOMCTL32.DLLのバージョンはVersion.5だが、Windows XPではこれがVersion.6にバージョン・アップされる。ただし、従来のCOMCTL32.DLL Version.5も残されており、旧来のアプリケーション(Windows XPにネイティブに対応していないアプリケーション)はこちらを使い続けることが可能だ。そしてVersion.5を呼び出す古いアプリケーションと、Version.6を呼び出す新しいWindows XP対応アプリケーションは同時に実行することが可能である(2つのDLLを同時に実行することが可能である)。

2つのCOMCTL32.DLL
Windows XP環境では、COMCTL32.DLLがVersion.6にバージョン・アップされるが、従来と同じVersion.5のCOMCTL32も並行して提供される。これら双方のDLLを呼び出すアプリケーションを同時に実行することが可能である(2つのDLLを同時に実行することが可能である)。

 アプリケーションが古いCOMCTL32.DLLを使用するか、新しいCOMCTL32.DLLを使用するかは、そのアプリケーション用のマニフェスト・ファイル(manifest file)が存在するかどうかで決まる。マニフェスト・ファイルは、アプリケーションが使用するコンポーネントなどの情報を記述したXMLファイルである(必要なら、アプリケーションのコンパイル時に、マニフェスト情報をアプリケーション自身に埋め込むことも可能なようだ)。ちなみに、次世代のWindowsアプリケーション環境である.NET Frameworkでは、すべての実行ファイルとDLLファイルの内部にマニフェストが組み込まれ、DLL地獄からの脱却が図られている。

さらなる大衆化に一歩を踏み出すWindows

 以上、マイクロソフトが現時点で公式に提供している情報から、Windows XPのほんの一部分をかいま見た。残念ながら現時点では、公式に得られる情報は極めて限定的である。正直なところ、現Windows 2000のヘビー・ユーザーである筆者にとっては、Whistlerスタイルの新しいユーザー・インターフェイスはピンとこない。しかしWindowsが、さらなる大衆化に向かって1歩を踏み出そうとしていることは間違いないだろう。

 Windows XPが、私と読者の皆さんにもたらすインパクトを知るには、ベータ2の登場を待つ必要がありそうだ。End of Article

関連記事
  Insider's Eye:マイクロソフト、Windows XP日本語版ベータ2を報道関係者に披露(Windows Server Insider)
   
  関連リンク
  ビル・ゲイツ、新しいWindowsであるWindows XPを披露(米リリースの参考訳)(マイクロソフト)
  Windows XPの発表デモンストレーションのスピーチ内容(英文)(米Microsoft)
  開発者にとってのWindows XP(MSDNオンラインの記事、英文)(米Microsoft)
  Windows XPのスクリーン・ショットが公開された米MicrosoftのWindows XPのホームページ (米Microsoft)
     
 

 INDEX
  [Insider's Eye]
    1.新世代Windows、Windows XPを初体験(1)
    2.新世代Windows、Windows XPを初体験(2)
    3.新世代Windows、Windows XPを初体験(3)
  4.新世代Windows、Windows XPを初体験(4)
 
「Insider's Eye」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間