特集
» 2014年04月14日 16時55分 公開

特集:Windowsストアアプリ開発最新情報(Build 2014より):ユニバーサルWindowsアプリ開発の勧め (2/4)

[山本康彦(http://www.bluewatersoft.jp/),BluewaterSoft]

Windows Phone 8.1の特徴

 前述の開発者視点のメリットは、その大部分がPhoneの進化によっている。ここで、同じくBuild 2014で発表されたWindows Phone 8.1の特徴も見ておこう。

新たな実行環境

 数字としては「0.1」という小さなバージョンアップなのに、新たな実行環境が搭載されるという大きな変化があった。その上で動作するアプリは、「Windows Runtimeアプリ」と呼ばれる(次の画像)。

MSDN:Windows Phone Dev Center「Windows Runtimeアプリ開発」サイト(Internet Explorer) MSDN:Windows Phone Dev Center「Windows Runtimeアプリ開発」サイト(Internet Explorer)
現在は英語ページのみ。URLはhttp://msdn.microsoft.com/en-us/library/windowsphone/develop/dn642041.aspx
ところで、タイトルの下に2つのアイコンが描かれている。モニターと携帯電話だ。これはWindowsとPhoneに共通のドキュメントであることを表している。

 それに伴い、以前にWindows Phone 8.0で導入されて「Windows Phoneランタイム(WinPRT)アプリ」などと呼ばれていたアプリのことは、「Windows Phone Silverlightアプリ」と表記されるように変わった(次の画像)。「Windows Phone Silverlight 8.0アプリ」などと表記されるが、この「8.0」はSilverlightのバージョンではなく、Windows Phoneのバージョンだ。

MSDN:Windows Phone Dev Centerのトップページ(Internet Explorer) MSDN:Windows Phone Dev Centerのトップページ(Internet Explorer)
Windows Phone 8.0で導入されたアプリは、「Windows Phone Silverlightアプリ」と呼ばれるようになった。こちらのサポートも継続しており、Windows Phone 8.1ではWindows Phone Silverlight 8.1にバージョンアップしている。
なお、このページは、現在は英語のみが8.1対応。URLはhttp://create.msdn.com/en-us/develop

 また、Windows Phone 7.x用に作られたアプリも8.1では動作する*5。従って、Windows Phone 8.1では、次の3種類のアプリが動作する。

【Windows Phone 8.1で動作するアプリ】

  • Windows Phone 7.x用に作られたアプリ
  • Windows Phone Silverlightアプリ
  • Windows Runtimeアプリ

*5 セッション2-561「Windows Phone and Windows: Dev Center and App Submission Deep Dive」の資料p.22に「Existing 7.1/8.0 apps available to all WP8.1 devices」とある。また、Windows Phone MVPであるPagani氏は、そのブログ記事「Windows Phone 8.1: a lap around the new development features」で「It should be clear, now, that Windows Phone 8.1 is totally compatible with Windows Phone 7.1 / 8.0 applications: you’ll need to update your application to 8.1 only if you’re planning to make use of some of the new features.」(大意:7.1のアプリも動くので、慌てて8.1対応のアプリを作る必要はない)と述べている。


Windows Runtimeの高い互換性

 この新しいPhoneアプリの開発に使うWindows Runtimeとは、割り切って言ってしまえば「Windowsストアアプリ用のものをPhoneに移植したもの」だ。もちろん細かい差異はあるのだが、Windows Phone 8.0のときのWinPRTとは違って、今度は名前空間も含めて基本的に互換性があると思ってよい。非互換な部分の方が例外なのだ(次の図)。

Phoneの開発プラットフォーム Phoneの開発プラットフォーム
セッション2-509「The New Windows Phone App Model」の資料p.5より。
これはWindowsストアアプリ用のプラットフォームの図ではなく、Windows Phone 8.1のものである。
プレゼンテーション用の資料なのできれいに濃い青色(=WindowsとPhoneに共通の部分)が塗られているが、実際にはその中にも細かいAPIの相違は存在する(例えばPhoneには印刷がないし、Windowsには電話をかけるAPIが無いなど)。

 WindowsとPhoneの間のWindows Runtimeの互換性は高く、Buildでは9割方のAPIが同じになったと説明されていた。スウェーデンのマイクロソフトのエヴァンジェリストによれば、WindowsのWindows RuntimeのほとんどがPhoneに移植されており、移植されなかったのは次のようなものだけだという*6

【Phoneに移植されなかったWindows Runtime】

  • Phoneでは意味のないAPI(印刷や検索コントラクトなど)
  • 時間の制約から落とさざるを得なかったもの(わずかであり、作業は継続)

 この高い互換性により、ある程度のアプリなら互換部分(「共通Windows Runtime」と呼ばれる)だけを使って作ることも可能になった。Build初日のキーノートでは、Windowsのプロジェクトに含まれていたソースコード類をそのままごっそりとPhoneのプロジェクトに持っていき、それだけでPhoneでも動くところをデモしていた(次の画像)*7

Build 2014キーノートのユニバーサルWindowsアプリ作成デモ Build 2014キーノートのユニバーサルWindowsアプリ作成デモ
前出の初日キーノートの動画より(画像処理をして輪郭とコントラストをはっきりさせてある)。赤色での注釈は筆者によるもの。
WindowsのプロジェクトをVS 2013で開き、ビルドして動くことを見せた後、ユニバーサルプロジェクトに変更し、ソースコード類(コード、画像、その他のリソースなど)をごっそり移動しているところ。この後、ビルドするだけでPhoneのアプリが出来上がって動作するようになる。

*6 MSDNブログ「Windows Phone 8.1 for Developers−Converging the App Models」による。

*7 もちろん、Phoneでも動くように特別に作ったWindows用のコードを用意しておいた上でのデモである。実際には、Windowsの新規プロジェクト(GridアプリやHubアプリ)を作ってやってみると、WindowsとPhoneでの[戻る]ボタンの違いによりうまくいかない(後述)。


開発者視点から見たユニバーサルWindowsアプリ

 さて、お待たせした。開発者視点で見ると、前項で述べたPhoneのWindows Runtimeの互換性の上にユニバーサルWindowsアプリが成り立っている。次のようだ。

【ユニバーサルWindowsアプリを構成する3要素】

  • Windows RuntimeのPhoneへの移植(前述)
  • ユニバーサルプロジェクト(VS 2013のサポート)
  • クラウドのサポート(ストアやOneDriveの対応)

 これら3要素の関係は次のようになる。

 (1)互換性が上がったのでWindowsとPhoneの2つのアプリをいっぺんに作りやすくなった

 (2)そこで、その共通部分のコードをサポートする仕組みをVS 2013に組み込んだ(=ユニバーサルプロジェクト)

 (3)また、ローミングやプッシュ通知までもが互換になったため、WindowsとPhoneを横断的にクラウドでサポートできるようになった

 1番目の互換性の話はすでに述べた。2番目と3番目について、以降で説明していく。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。