|
|
|
開発者から見た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」 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |




Insider's Eye


