Metro Styleのすべては
エクスプローラーが管理する
Windows 8ではスタートメニューがなくなり、Start Screenができた。このStart Screenには、アイコンではなく通知機能などを持つ「タイル」が配置されて、これをタップすることでアプリが起動する。しかしこのStart Screenは、Windowsのシェルであるエクスプローラーが作り出しているのだという。Windowsのデスクトップも実体はエクスプローラーであるから、Windows 8でのエクスプローラーは両Styleのアプリの表示を制御しているようだ。実際に、デスクトップ側でエクスプローラーをタスクマネージャーから停止させてしまうと、Start Screenも消えてしまう。
おそらく前述のApp Containerなども、エクスプローラーがある程度管理に関与しているのだと考えられる。Metro Styleアプリはダブルクリックしても起動せずに、「App Containerが必要だ」というメッセージが表示される。なお、Metro Styleのアプリも実行ファイルなどは従来のDesktop Styleと同じであり、例えばCLR(Common Language Runtime)を使うマネージドコードの場合も、実行ファイルは従来同様にEXE型式になっている。
また、HTML+JavaScriptで作られたMetro Styleアプリは、HTMLやJavaScriptのファイルがそのまま見えて、少なくともアプリがインストールされた状態では普通のファイルである。標準でインストールされるMetro Styleアプリは、「C:¥Program Files¥Applications」以下にある。ただし、ここが正式な置き場所というわけではなく、ほかの場所にあってもアプリを正しく配置(Visual Studioを使う)すれば、起動は可能だ。Metro Styleアプリはインストールされると、Start Screenにタイルを置く。標準の場所は、Start Screen最後の位置(右端)になる。
Metro StyleアプリはApp Container内で動くと述べたが、実際にはエクスプローラーがタイルのタップを検出すると、内部の「Activation System」がレジストリから、当該アプリの情報を引き出す。その後は「RCPサーバーサービス」を経由して、「DCOM Launchサービス」がアプリを起動する。
型式的にいえば、Metro Styleアプリ(またはWWAHost.exe)は、EXE型式のCOMオブジェクトになっている。DCOM Launchサービスがそれをメモリーにロードして、メソッドを呼び出すことで、実行が開始されるわけだ。
オブジェクトライブラリとしてのWinRT
WinRTはさまざまな機能を持つオブジェクトを提供する「オブジェクトライブラリ」となることで、APIとして機能する。だが実体は、既存のCOMオブジェクトを拡張したものだ。
WinRTの技術基盤が既存のCOMベースというのは、ちょっと意外な感じがある。だがMetro Styleに対して、Desktop Styleと同様の(アンマネージドコードも利用できる)開発の自由さを提供するなら、仮想コードをベースにした.NET Frameworkのオブジェクトよりも、機械語コードそのものであるためベースにしやすい。
また、実行のオーバーヘッドを軽減することもできる。特にWindows 8では、ARM系のプロセッサーも使われることになる。ARM系プロセッサーは通常のパソコン用CPUに比べると性能が劣る部分があるため、API側は機械語コードで最適化したものを使いたい、という考えもあったのだと考えられる。
このCOMベースのWinRTオブジェクトの仕組みは、今後のWindowsの標準APIとなるのではないかと想像される。今回のDeveloper Preview版では、Desktop Style側には何も手を付けていないが、WinRTのオブジェクトが利用できる「New Desktop Style」とでも言うべき環境を、作れない理由はないと思われる。しかしこちらは、かなり大仕事になるので、あるいはWindows 8の次のバージョンで実現させるのではないだろうか。
この連載の記事
-
第13回
PC
ARM版Windows 8実現の布石となったWindows 7の「MinWin」 -
第12回
PC
アプリがWindowsの機能を使うには? APIとDLLの仕組み -
第11回
PC
マルチコアCPUの消費電力はスケジューリングで変わる? -
第10回
PC
AMD FX向けにパッチで修正 スケジューラーが抱える難題 -
第9回
PC
マルチコアCPUを賢く使いこなす スケジューリングの秘密 -
第8回
PC
意味の違いがわかる? タスクとプロセスとスレッド -
第7回
PC
Windowsのメモリー管理をx86の仕組みから読み解く -
第6回
PC
メモリー不足を根本的に解決する64bit OSの仕組み -
第4回
PC
Windowsを動かすデバイスドライバーの仕組み 前編 -
第3回
PC
OSの仕事はハードウェアをアプリから「隠す」こと? - この連載の一覧へ