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の登場を待つ必要がありそうだ。
関連記事 | ||
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」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|