ユニバーサルWindowsアプリ開発の勧め:特集:Windowsストアアプリ開発最新情報(Build 2014より)(2/4 ページ)
Build 2014の内容からユニバーサルWindowsアプリ開発に絞って紹介。「Windowsストアアプリの新規開発は、ユニバーサルWindowsアプリにしない理由がない」!?
Windows Phone 8.1の特徴
前述の開発者視点のメリットは、その大部分がPhoneの進化によっている。ここで、同じくBuild 2014で発表されたWindows Phone 8.1の特徴も見ておこう。
新たな実行環境
数字としては「0.1」という小さなバージョンアップなのに、新たな実行環境が搭載されるという大きな変化があった。その上で動作するアプリは、「Windows Runtimeアプリ」と呼ばれる(次の画像)。
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)
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の開発プラットフォーム
セッション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アプリ作成デモ
前出の初日キーノートの動画より(画像処理をして輪郭とコントラストをはっきりさせてある)。赤色での注釈は筆者によるもの。
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.