前述の開発者視点のメリットは、その大部分がPhoneの進化によっている。ここで、同じくBuild 2014で発表されたWindows Phone 8.1の特徴も見ておこう。
数字としては「0.1」という小さなバージョンアップなのに、新たな実行環境が搭載されるという大きな変化があった。その上で動作するアプリは、「Windows Runtimeアプリ」と呼ばれる(次の画像)。
それに伴い、以前にWindows Phone 8.0で導入されて「Windows Phoneランタイム(WinPRT)アプリ」などと呼ばれていたアプリのことは、「Windows Phone Silverlightアプリ」と表記されるように変わった(次の画像)。「Windows Phone Silverlight 8.0アプリ」などと表記されるが、この「8.0」はSilverlightのバージョンではなく、Windows Phoneのバージョンだ。
また、Windows Phone 7.x用に作られたアプリも8.1では動作する*5。従って、Windows Phone 8.1では、次の3種類のアプリが動作する。
【Windows Phone 8.1で動作するアプリ】
*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対応のアプリを作る必要はない)と述べている。
この新しいPhoneアプリの開発に使うWindows Runtimeとは、割り切って言ってしまえば「Windowsストアアプリ用のものをPhoneに移植したもの」だ。もちろん細かい差異はあるのだが、Windows Phone 8.0のときのWinPRTとは違って、今度は名前空間も含めて基本的に互換性があると思ってよい。非互換な部分の方が例外なのだ(次の図)。
WindowsとPhoneの間のWindows Runtimeの互換性は高く、Buildでは9割方のAPIが同じになったと説明されていた。スウェーデンのマイクロソフトのエヴァンジェリストによれば、WindowsのWindows RuntimeのほとんどがPhoneに移植されており、移植されなかったのは次のようなものだけだという*6。
【Phoneに移植されなかったWindows Runtime】
この高い互換性により、ある程度のアプリなら互換部分(「共通Windows Runtime」と呼ばれる)だけを使って作ることも可能になった。Build初日のキーノートでは、Windowsのプロジェクトに含まれていたソースコード類をそのままごっそりとPhoneのプロジェクトに持っていき、それだけでPhoneでも動くところをデモしていた(次の画像)*7。
*6 MSDNブログ「Windows Phone 8.1 for Developers−Converging the App Models」による。
*7 もちろん、Phoneでも動くように特別に作ったWindows用のコードを用意しておいた上でのデモである。実際には、Windowsの新規プロジェクト(GridアプリやHubアプリ)を作ってやってみると、WindowsとPhoneでの[戻る]ボタンの違いによりうまくいかない(後述)。
さて、お待たせした。開発者視点で見ると、前項で述べたPhoneのWindows Runtimeの互換性の上にユニバーサルWindowsアプリが成り立っている。次のようだ。
【ユニバーサルWindowsアプリを構成する3要素】
これら3要素の関係は次のようになる。
(1)互換性が上がったのでWindowsとPhoneの2つのアプリをいっぺんに作りやすくなった
(2)そこで、その共通部分のコードをサポートする仕組みをVS 2013に組み込んだ(=ユニバーサルプロジェクト)
(3)また、ローミングやプッシュ通知までもが互換になったため、WindowsとPhoneを横断的にクラウドでサポートできるようになった
1番目の互換性の話はすでに述べた。2番目と3番目について、以降で説明していく。
Copyright© Digital Advantage Corp. All Rights Reserved.