そのためにマイクロソフトが用意したのが、「Metro Style」というアプリタイプだ。Windows 8には、従来のWindowsアプリである「Desktop Style」と、新しいMetro Styleの2種類のアプリが動作する。
Metro Styleはタッチ操作に最適化されていて、基本的にはタッチのみですべて操作できる。また、Windowsの見える部分である「シェル」もタッチ用に最適化されたものになり、スタートメニューの代わりに「Start Screen」画面が装備された。Start Screenは、従来の「アイコン」と「通知機能」を統合した「タイル」を並べるもので、これを使ってアプリを起動する。
従来のスタートメニューボタンは、このStart Screenへ戻るためのボタンになり、キーボードのWindowsロゴキーもこれに合わせた動作になっている。iPadやHoneycombでいう「ホームボタン」に相当するわけだ。Start Screenは「Metro Styleシェル」とでも言うべき部分だが、実は従来と同じく「Explorer.exe」(エクスプローラー)がその役割を担っている。
このMetro Styleアプリを動作させるというのが、Windows 8の最大の目標である。Metro Styleのアプリは、「WinRT」(Windows Runtime)と呼ばれる環境で動作する。このWinRTこそが、Windows 8「タブレット・エディション」の中心になる部分である。
Win32を包括しながら
アプリをより作りやすくするWinRT
本来ならば、この連載で「API」とか「実行環境」について解説した後の方がいいのだろう。しかし、それらの話が終わった頃にはWindows 8が製品になっているかもしれないので、順序は逆になるがWinRTの話をしよう。
一般にOSは、アプリに対してさまざまな機能を提供するものだ。例えばデータをファイルとして保存し、これを読み書きできるようにするというのも、OSが提供する機能である。こうしたアプリに対して提供される「機能」と、アプリの間に入る「インターフェース」をAPI(Application Programming Interface)という。
簡単に言えば、ソフトウェアの開発者はOSの機能を利用するときに、一定の手順に従って機能を「呼び出す」。APIとはその呼び出し方法を決めたものだが、一般的には「APIセット」などと呼んで、OSにどのような機能が用意されているかを意味する用語として使う(「このOSのAPIセットは貧弱だねぇ」とか)。
WinRTはMetro Styleアプリを動作させる「土台」であるとともに、APIセットでもある。WinRTはアプリに対して、Windows 8の“ほぼ”すべての機能を提供できる。しかし、いくつかの点で違いがある。
- Win32 APIセットよりも大きな機能を提供する
- 非同期呼び出しを使う
これまでのWindowsアプリで使われていた「Win32 API」セットは、開発者に高い自由度を与えるために、いわゆる低レベルの機能提供を基本としていた。低レベルの機能にアクセスできるため、アプリに高度な機能を持たせられる反面、似たような機能を独自に開発しなければならなかった。Win32 APIを代替しようとしていた「.NET Framework」も、同様の問題を抱えていた。
例えば、ウェブカメラを使って静止画を撮影する場合、カメラを制御して解像度などを設定し、データを読み込むだけでかなりのプログラムコードを記述しなければならない。静止画を撮影する機能をアプリに組み込む場合、画像のプレビューや撮影タイミングを知らせるシャッター音、撮影後のサムネイル表示など、さまざまな機能が必要となる。Win32 APIでは、これを全部「手作り」しなければならない。実際のアプリ開発の際は、運良くオープンソースのライブラリなどが使える場合もあるが、必ずしも望む環境に適合しているとは限らず、修正などが必要なことがある。
これに対してWinRTは、より高レベルの独自APIを提供する。例えば「Media Capture」は、静止画撮影だけでなく動画などの撮影やプレビュー表示、撮影後のトリミングといった関連機能を提供するライブラリオブジェクトだ。Windowsの標準機能であるため、デバイスドライバーなどが正しく動作していれば、基本的にはどの環境でも問題なく動作できる。
この連載の記事
-
第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の仕事はハードウェアをアプリから「隠す」こと? - この連載の一覧へ