特集:WinRT登場で変わる開発技術と開発言語

Windows 8時代のアプリ開発とWinRT

岩永 信之
2012/06/01
Page1 Page2 Page3 Page4

※編集部注: 本日、Windows 8のRelease Preview版(=従来のRC版(リリース候補版)に相当。日本語版も含む)がリリースされた。下記のリンク先から誰でもダウンロードできる。  今後のスケジュールでは、問題なく進めば約2カ月後の8月ごろに、RTM版(=正式版)がリリースされ、年末商戦の時期には実機が店頭に並ぶことになる(「Windows 8 Release Preview 提供開始 - Building Windows 8 - MSDN Blogs」に基づく情報)。

 また同時に、Visual Studio 2012(コード名:Visual Studio 11)のRC版もリリースされた。こちらも下記のリンク先から誰でもダウンロードできる。

 本稿は、「第8回 .NET中心会議 Windows 8 時代に向けてアプリ開発と技術選択を考える」(レポート記事)の基調講演の内容を基にした、Windows 8に関する記事である。基調講演のプレゼン資料はこちらUstream動画(2分45秒〜)はこちらから閲覧できる。

 本稿ではまず、Windows 8の新UI(ユーザー・インターフェイス)であるMetroや、Metroスタイル・アプリ開発のための新APIであるWinRTの解説を行う。また、WinRTと、既存のデスクトップ技術やWebとの対比や、(C++/.NET/JavaScriptと)選択肢が多いMetroスタイル・アプリの開発言語について、それぞれの立ち位置や使い分けのポイントについて説明する。

Windows 8概要 ― 多様化への対応

 現在のアプリ開発はさまざまな面で多様化しているといえるだろう。以下のように、多様な選択肢が存在する。

  • ハードウェアの多様化
    • CPU: x86/x64、ARM
    • デバイス: デスクトップPC/ノートPC、タブレット端末、携帯電話
  • 標準ベース技術 vs. プラットフォーム固有技術
    • 間口の広さと、表現力/性能/進化速度のトレードオフ
  • 言語/フレームワーク
    • .NET、ネイティブ(C++)、JavaScript

Windows 8/Windows RT

 このような背景の中で登場することになるのがWindows 8である。図1に示すように、ARM CPUへの対応と、タッチ・デバイス向けの新UI「Metro」の搭載がWindows 8の目玉となる。

図1: Windows 8の対応CPUと新UI

 注意点として、ARM版は「Windows RT」という製品名になるそうである。デスクトップ版のWindows 8との差は既存デスクトップ・アプリの扱いで、こちらに関しては「今までどおり」とはいかない。新UIであるMetroに関しては共通となる。

 デスクトップ・アプリはWindows 8専用になる。正確にいうと、Windows RTにもデスクトップは搭載されているが、マイクロソフトがOSにバンドルして出荷するアプリ(Officeなど)しか稼働せず、第三者による自由なアプリ配布は認められていない。

Metro

 新UIのMetroは、タッチ・デバイスに最適化されたUIである。図2に示すように、デスクトップとMetroとで、入力デバイスの差がUIの差に表れている。

図2: デスクトップ(マウスとキーボード)とMetro(タッチ)

 ARM版のWindows RTがMetroのみ(デスクトップは限定的)であることは、つまり、タッチ・デバイス用のOSだということを意味している。

 一方、Windows 8はデスクトップとMetroの両方を使えるように作られている。正直なところ、完全にマウスとキーボードだけで使う場合には、Metroはあまり使いやすいものではない。それでも両方に対応するのは、例えば以下のような利用場面を想定している。

  • キーボード着脱式で、オフィス内ではノートPCのように使え、出先ではタブレット端末として使えるデバイスの登場
  • リモート・デスクトップ接続でタブレット端末からデスクトップPCを操作

 次に、Metroに対応したアプリ(「Metroスタイル・アプリ」と呼ばれる)の開発方法について説明していこう。

WinRT

 Metroスタイル・アプリは、単にUIがタッチ・デバイス向けになっただけではなく、新しい「WinRT(Windows Runtime)」というAPIセットを使って開発する。「Windows RT」(=ARM向けWindows 8)と名称で混乱しそうなので注意してほしい。

 図3に示すように、Metroスタイル・アプリからは既存のWin32 APIの利用が大きく制限されている。一部だけ許可されているが、おおむねDirectXのためである。

図3: Metroスタイル・アプリ向け新API「WinRT」

 Win32を制限する理由は、ARMへの対応、バージョン・アップ時の保守性の向上などいくつかあるだろう。また、次節で説明する、さまざまな開発言語/フレームワークへの対応にも一役買っている。

開発言語

 図4に示すように、WinRTは、.NET、ネイティブ(C++)、JavaScriptという3つの開発言語から呼び出すことができる。このうち、.NETとネイティブはXAML(Extensible Application Markup Language)、JavaScriptはHTML5を使ってUIを記述する。

図4: Metroスタイル・アプリの開発言語

 XAMLは、WPFやSilverlightで使っているものと同じで、XML形式で宣言的にUIを記述するためのものである。WPFやSilverlightの開発経験のある人ならばすぐにでもMetroスタイル・アプリを作れるだろう。100%全く同じコードが動くわけではないが、少なくともなじみの開発スタイルで開発可能である。

 一方、HTML5は、完全に標準化されているとおりのHTML5である(単に、WinRTを参照する機能と、後述する「WinJS」というJavaScriptライブラリを追加しただけ)。

 WPF/Silverlightと共通した開発スタイルの提供や、標準ベース技術の取り込みは、ハードウェアや開発言語/フレームワークの多様化への対抗策となっている。

 詳細は後述するが、開発言語を選べる背景には、図5に示すように、Windows Metadata(WinMD)と言語プロジェクションというものがある。

図5: Windows Metadataと言語プロジェクション

 WinMDは、.NETのメタデータをほかの言語にも広げたもので、WinRTコンポーネントをさまざまな言語から利用するための型情報が入っている。また、.NETなら.NETらしい書き方で、JavaScriptならJavaScriptらしい書き方でWinRTコンポーネントを参照できるように、規約ベースで型名やメソッド名の置き換えを行う層があり、これを「言語プロジェクション(language projection: 言語投影)」と呼ぶ。

 それでは、WinRTについてもう少し掘り下げて説明していこう。


 INDEX
  特集:WinRT登場で変わる開発技術と開発言語
  Windows 8時代のアプリ開発とWinRT
  1.Windows 8概要 - 多様化への対応
    2.新API「WinRT」
    3.Windows 8時代の多様な選択肢(1):MetroとWeb/デスクトップの対比
    4.Windows 8時代の多様な選択肢(2):選択可能な3つの言語/フレームワーク


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH