昨日(2014年10月23日)、我ら Windows Phone ユーザーが愛する 高橋忍さん のセッション「マルチデバイスを見据えたこれからの開発技術」を聞いてきました。後で動画が公開される気がしますし、Windows Phone 開発者には不要かもしれませんが、一応、メモをとったので共有します。
目次
すべてのデバイスで同じエクスペリエンスを
複数のデバイスで作業を引き継いで、一貫性のあるエクスペリエンス 高い作業効率 を実現する。
そのために「デバイスを変えていく」こと。
そのために、それを実現する「アプリケーションとサービス」を開発すること。
これがエクスペリエンスを実現する大事な要素
アプリをどう作っていくか?
ユニバーサル Windows アプリ で作る
- デバイス : Windows, Windows Phone, Xbox One
- サービス : Microsoft Azure / Cloud
Windows | Store アプリ, デスクトップアプリ | Windows ランタイム / WPF, WinForm |
Windows Phone | Store アプリ | Silverlight / Windows ランタイム |
Xbox One | Store アプリ, XBOX One Game | Windows ランタイム / Xbox ???(書き取れなかった) |
それぞれにアプリケーションがうごく プラットフォーム – 開発者としては統一してもらった方がうれしい
Windows ランタイムで統合していこう
Windows ランタイムでは、デバイス固有の機能 と タッチ、ゲームコントローラ・・・の共通部分 とがしっかりとわけられていて、一つのアプリで マルチに対応できる。それが「Universal Windows Apps 」
Windows ストア、Windows Phone ストア、Xbox One ストアは実際はまだ別々な段階
現状では、それぞれにプロジェクトを作って、それぞれのプラットフォーム用にビルドして、公開する必要がある。
作るのは、一つのユニバーサルWindowsAppでよい、ビルドだけをわける感じ。
アプリ公開までの流れ
• 開発環境でプロジェクトを作る
• それぞれのパッケージの作成
• それぞれのパッケージの登録・申請
• ストア公開
ストア更新費は不要になりました。Dev Center Benefit ? で、初回の登録費用も無料になります。
Windows ストアとWindows Phone ストアは連携可能
それぞれに出すと、これまでと状況が変わらない? 連結感がない。そのままだとあまりメリットがない。作るコストは削減されるが。
「これとこれは 同じ Universal App だよ」という連結ができる。(今後ストアが統合されると不要になるが)
ローミングでデータの連携ができる のが魅力。ユーザーがアプリを探しやすくもなる。
Microsoft by the numbers
Windowsストア 45万5千本 (30万 Windows Phone、15万 Windows)、200か国以上 100以上の言語
Microsoft by the numbers は、こういう数字が見られるサイト
DEMO – #if WINDOWS_PHONEで XAML 表示制御
(※de:code と同じ、 Universal Windows Apps で Windows Phone アプリとして作ったアプリを、そのままほとんどコードを変えずに Windows ストアアプリにするというデモ ・・・ 逆だったかな、忘れてしまいましたが、数字を押していくゲームのやつです)
Universal Windows Apps でアプリを作成したら共通プロジェクトと、Windows Phone用、Windowsストア用に分かれる構成。ほとんどを共通プロジェクトにいれて、それぞれのストア用はただビルドしてパッケージを作成するために使用する。スタートアッププロジェクト(F5で起動する方)が、パッケージが作られる。何もXAML・コードを変えずに両方共通で作れてしまう。
必要に応じて、同じファイル名で Windows Phone用、Windows ストア用にファイルを置くと、そちらが優先して読み込まれるので、どちらかの画面専用 XAML を用意できる。
共通の XAML で場合分けをしたいとき、#if で Windows ストア用、Windows Phone ストア用 を分けられる ( たぶん #if WINDOWS_STORE と #if WINDOWS_PHONE )。これで VisualState をかえれば、XAML も対応できる。
(※ VisualState は Windows 8.1 から標準では自分で解像度に合わせて制御するように変わったやつ。Windows 8 までは LayoutAwarePage だっけ?に自動で実装されて、「今はスナップだよ」とか「今は縦フル画面だよ」というモードを管理してくれていた。8.1からは、Webのレスポンシブ対応のように 開発者が自分で好きな表示状態の名前が使えるようになった・・・というか自分で定義する必要がある。500ピクセル以下なら「中間」とか。これを、#if WINDOWS_PHONE で制御すれば、「今は Windows Phone 表示だよ」というのを XAML で知ることが出来るので、VisualState のストーリーボード上書きで、例えば「Windows Phone と Windows ストアの縦長はほぼ同じ表示だけど、Windows Phone にはハードウェアの戻るボタンがあるので画面に表示しない」が実現できる)
SHIN-ICHI の感想
日本の新しい Windows Phone が欲しいです。Xbox One も欲しいです。
いや、それはそれとして。他のセッションで、ハンディターミナルは Windows Phone と同じアプリの作り方が出来る(今や Windows Embeddit もユニバーサルアプリなんですね)とか、正直、Windows Phone + Windows ストアアプリの開発を続けてきて良かった。その経験は無駄にならない、もうすぐバリバリ活かせる日が来る!と感じているので、このあたりで作り方をしっかり押さえておくのがいいですね。
私のアプリはまだユニバーサルで作ってないので、今のうちに作り替え or 新しいユニバーサル版のアプリを作りたいです。頑張るぞ!