元麻布春男の週刊PCホットライン

ついにGDIがレガシーサポートになるWindows 7




 PDCで公開されたWindows 7のプレビュー版(Build 6801)は、海外のメディアにも好意的に受け取られているようだ。その評価の多くが安定している、というもので、おそらくは初期のWindows Vistaと比較してのことだろうと思う。そうこうしているうちに、Build 6801では無効にされていたWindows 7の新機能のいくつかを有効にする非公式なパッチがリリースされたりもしている。

【図1】Blue Badgeは、マイクロソフトの社員証を表す

 このパッチはRafael Rivera Jr.氏が作成したBlue Badgeツールと呼ばれるもので、起動すると図1のような警告が表示される。以前は一度Blue Badgeツールを適用すると、元に戻す方法はなかったが、現在のrev.02では変更を加えたファイルのオリジナルファイルを.originalという拡張子で保存してくれるから、元に戻すことも可能になった。

 Blue Badgeツールの目的は、Build 6801時点で実装されていたにもかかわらず、無効にされていたWindows 7の新ユーザーインターフェイス、特にタスクバーの拡張を有効にすることだ。Build 6801時点と断ったのは、Blue Badgeツールを利用したからといって、PDCやWinHECで公開されたBuild 6933(現時点でスクリーンショットが公開されている最新版)と同じになるわけではないからである(たとえばJumpListを表示するのにアイコンの右クリックではなく、アイコン横の矢印を左クリックしなければならないなど)。それでも、Blue Badgeツールを利用し、Aero Glassを有効にすることによって、Build 6801の雰囲気は、かなりWindows 7っぽくなる。

 図2はBuild 6801をインストールし、コントロールパネルのシステムを開いたところだが、パッと見にはWindows Vistaと何が違うのやら、という感じだ。これがBlue Badgeツールを適用すると図3のように変わる。このままではまだ、スタートボタンの右にクイック起動の小さなアイコンが表示されているが、これを無効にしてやると、かなりそれらしくなる。さらに壁紙をプレビュー版に添付されていた写真にすると(図4)、気分はWindows 7となる。

 たぶん海外、特に英語圏のメディアであれば、この状態でそれなりに満足のいく完成度(もちろんプレビューとして、であるが)ではないかと思う(ネットワークは、Vistaの初期ほどではないものの、若干問題がある)。だが、残念ながら日本人にはそうはいかない。このBuild 6801では日本語表示の問題が存在するからだ。

【図2】Build 6801をインストールしたばかりの状態。タスクバーがWindows Vistaと同じこともあって、パッと見では区別がつきにくい 【図3】Blue Badgeツールを使うと、タスクバーのアイコンが大きくなり、かなりそれらしく見えてくる。サムネイルの右上にある閉じるボタン(赤で示されている)をクリックすることで、アプリケーションを終了することができる 【図4】添付されていた写真を壁紙にして、かなりそれらしくなったプレビュー版。すぐにでも日本語環境で使えそうな気がしてくる

 PDCから帰ってきて、まず試みたのはプレビュー版に日本語環境を構築することであった。日本人である以上、日本語が使えなければ、その価値はグンと下がる。幸い、Windows XP以降、英語版のWindowsで日本語を利用するハードルはずいぶんと低くなった。あまり苦労をしなくても、日本語を表示したり、入力することができる。

 基本的にはプレビュー版のWindows 7においても、日本語を利用することは可能だった。しかし、1つだけ大きな問題がある。それはAero Glassと日本語表示が必ずしも共存しないことだ。

 図5はおなじみの日本語エディタ、秀丸をWindows 7のプレビュー版で起動したところだ。見れば分かるように、メニューの表示がおかしい。「その他」のメニューの途中から日本語表示が普通なのは、まだカーソルがこのエリアまで至っていないことを意味している。カーソルを下に持って行くと、それに連れてメニュー上部のように日本語表示がおかしくなっていく。なお、この画面はBlue Badgeを適用した後のものだが、この現象はBlue Badgeの適用如何を問わない。こうした日本語表示の乱れは、メニューだけでなく、たとえばアプリケーションをインストールする際のライセンス条項等のダイアローグ、あるいはIMEでの変換中でも見られる。

 さすがにこれでは、日本語が使えなくもない、と言っても使う気にはなれない。が、これを修正する手段が存在する。それはAero Glassを無効にし、Aero Basicにすることだ。図6は、図5のシステムのままAero Basicに切り替えたものだが、日本語の表示は完全に復旧している。通知領域にATOKのアイコンが見えるが、もちろんATOKの動作(この例はATOK2007だが)もほぼ問題ない。

【図5】日本語アプリケーションを起動すると、一部日本語表示が乱れてしまう 【図6】Aero Glassを切ることで、日本語表示が正しく行われるようになる 【図7】Aero Glassをあきらめれば日本語表示は問題なくなるが、Windows 7で特徴的なグラフィックス効果も失われる

 ただ、Aero Basicにしてしまうと、起動中のアプリケーションのサムネイルが表示されなくなる(図7)など、Windows 7の魔法(新UI)が少なからず解けてしまう。これはこれで微妙な感じだが、現状ではやむを得ない。

 どうして日本語の表示がうまくいかないのか。ハッキリと言えることは、フォントそのものはシステム中に存在するし、そのフォントを正しく読み出すこともできている、ということだ。そうでなくては、Aero Basicでも日本語が表示できなくなる。おそらく問題があるのはフォントのレンダリングとリフレッシュだろう。

 基礎的な部分の多くでWindows Vistaを継承するWindows 7だが、更新される部分も少なからず存在する。その1つが、2Dグラフィックスとテキスト出力だ。Windows Vistaまでの画面表示(あるいはグラフィックスAPI)は、Direct3Dを用いた3Dグラフィックス(Aero GlassやMedia Centerを含む)部と、従来からのグラフィックスAPIであるGDI/GDI+が共存する環境だった。Windows 7では、2DグラフィックスにDirect2D、テキスト出力にDirectWriteが導入されるなどして、GDI/GDI+へ依存しないグラフィックス環境が整備される(図8)。

 もちろん、既存のアプリケーションとの互換性を維持するため、GDI/GDI+はAPIとして引き続きサポートされるものの、直接的なハードウェアアクセラレーションがなくなる(図9)など、将来的な主流からは外れる。ローレベルの高性能APIとしてのDirectXと、ハイレベルの高機能APIであるWPFへの移行が始まることになる。図10は、Windows Vistaから継承するグラフィックスAPI(濃い紫)と、Windows 7で追加される新しいグラフィックスAPI(赤)を図にしたものだが、右側のGDI/GDI+はレガシーAPI的な扱いになっている。

【図8】Windows 7環境でのグラフィックスAPI。GDI/GDI+に依存する処理は基本的になくなる 【図9】Windows 7ではGDI/GDI+に依存する必要がなくなると同時に、GDI/GDI+に対する直接的なハードウェアアクセラレーションもなくなる 【図10】Windows 7で新しく追加されるグラフィックスAPI(赤い部分)。DXGIはDirectX Graphics Infrastructureで、ハードウェア設定などのデバイスコントロールを行なう

 もともとDirectXは、GDIを補うゲーム向けの2DグラフィックスAPIであったGameSDKの発展形として'95年に誕生した。それが15年目(Windows 7が当初の予定通り2010年にリリースされるとすると)にして主役になり、GDIがDirectXを補う存在になるわけだ。

 さて日本語表示の問題に話を戻すと、このWindows 7で追加されるDirectWriteが、まだ開発途上であることが原因なのではないか、という気がする。DirectWriteでは、従来のClearType技術に加え、Y軸方向のアンチエイリアスがサポートされ、フォント表示がさらに改善される見込みだ。しかし、同時にこれはフォントレンダラが変更されるということであり、このBuild 6801のDirectWriteはマルチバイト言語への対応が十分ではないのだろう。図10で示したように、DirectWriteはDirectX/DWMの上に成り立っており、Aero Glassを無効にすることで、フォントレンダラの新しい機能も無効になるのではないかと思う。

 というわけで、Build 6801のリソースを変更して日本語版のプレビュー版を作成することは難しそうだ。日本語版が提供できるのは、次の公開版になるであろうベータ1まで待たねばならないのではないかと思われる(残念ながらPDCで公開されたBuild 6933で日本語表示が改善されているのかどうかは分からない)。12月に日本版のWinHECが開催される予定だが、ここでベータ1をリリースするのは難しいだろう。

 この日本語表示の問題で浮かび上がるのは、今もWindowsの開発がシングルバイナリを前提にしたものではない、ということだ。Microsoftは今でもシングルバイナリ化を目指していると述べるものの、それは最終的な目標でこそあれ、前提ではないのだろう。キーボードの問題も含め、シングルバイナリ化への道は遠い。

 もう1つ知っておくべきなのは、もうMicrosoftはWindows XPへは戻れない、ということだ。ここで取り上げたグラフィックスAPIに限らず、すでにWindowsは、Windows XPのアーキテクチャを越えて前に進んでいる。先日、正式に規格がリリースされたUSB 3.0も、ドライバサポートはWindows Vista以降になる見込みだ(USBドライバは、Windows Vistaにおける変更点の1つ)。GPUやUSB関連のベンダーに限らず、ハードウェアベンダはMicrosoftの後に続いている。もう後へ引き返すことはできない。

【11月26日12時追記】

【図11】Vista用ドライバで可能になった日本語表示とAero Glassとの共存

 その後、ディスプレイドライバ(GeForce 8400M GS用)をテスト機のベンダであるDellがWindows Vista用に提供している古いもの(2009年9月8日付け)に変更したところ、Aero Glass表示と日本語表示が両立することが分かった。本文で用いたドライバは、Windows 7向けにMicrosoftがWindows Update経由で提供しているものであり、日付も新しい(2008年9月18日付け)。また、WDM1.1ドライバとも明記されている。

 これが単なるドライバのバグなのか、あるいは新しいドライバがWindows 7でサポートされる固有の機能をサポートしたことによる副作用なのかは、現時点では分からない。ただ、Vista用のドライバでとりあえず日本語の表記が正しくなったことだけは間違いない。まだ、Windows 7自身もドライバもベータ版の段階なのだということだろう。

□関連記事
【11月1日】【元麻布】基本方針が変わったWindows 7のユーザーインターフェイス
http://pc.watch.impress.co.jp/docs/2008/1101/hot579.htm
【10月30日】【本田】改善されたWindows 7のデスクトップ
http://pc.watch.impress.co.jp/docs/2008/1030/mobile430.htm

バックナンバー

(2008年11月26日)

[Reported by 元麻布春男]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2008 Impress Watch Corporation, an Impress Group company. All rights reserved.