【速報】 MWC2015 で発表された "the Windows 10 universal app platform" ~ 1バイナリのユニバーサル Windows アプリが作成可能に❢
2015年 3月 2日、Mobile World Congress 2015 における Microsoft のセッション で、Windows 10 の Windows ランタイム アプリ 開発について概略が公表されました。
その内容は、Windows blogs で紹介されています。 ⇒ A first look at the Windows 10 universal app platform (2015/3/2)、日本語訳 (2015/3/3)
Mary Jo Foley 氏の記事も出ています。 ⇒ ZDNet: Microsoft's new Windows 10 Universal App Platform: A 'superset of WinRT' (2015/3/2)、日本語訳 (2015/3/4)
[2015/3/7追記] MS UKから、かなり詳しい記事が出ました ⇒ Windows 10 developer announcements from Mobile World Congress (from someone who was there) (2015/3/5) ←この記事を書いたのは、後でツィートを引用させてもらってる Matt Lacey (@mrlacey) 氏
※ 用語は、例によって落ち着くまでにしばらく掛かると思われます。 例えば、上の blog 記事には "Windows universal apps" ("platform" 抜き、アプリ形式を指していると思われる。翻訳記事では括弧付きで「Windows ユニバーサル アプリ」) という言葉が出てきます。 これは従来の "universal Windows apps" と同じ意味なのか異なる概念なのか、 今のところ不明です (翻訳では 『「Windows ユニバーサル アプリ」という、進化を遂げた新しい Windows アプリ』 となっていて、Win10 用の新しいものだと解釈しています。しかしその原文は 『a new class of Windows universal apps』(Windows ユニバーサルアプリの新しいクラス) であり、既存の概念であるとも読めます)。
the Windows 10 universal app platform
= 1 アプリ、1 プロジェクト、1 バイナリ、そして 1 ストア
ざっくり言えば、「共有プロジェクト抜きで、ユニバーサル Windows アプリが作れる❢」
「ついに、ようやく、1バイナリで PC / phone / Xbox etc. で動くようになった!!」
…のですが、どうやって実現しているのでしょう? 詳細は、どうやら 4月末に開催される //Build 2015 までおあずけのようです。
※ あ、もちろんですが、CPU タイプごとにバイナリを作れば、複数バイナリになります。
先の 2つの記事と MWC セッション会場からのツィートから推測してみます。
■ ランタイムとデプロイ方法の統一
1バイナリが複数プラットフォームで動くということは、少なくともアプリを起動するランタイムと、アプリを配布 (ダウンロード&インストール) する仕組みが統一されたはずです。
これは API が同じものになったという意味ではありません。
API には相違点が残っているでしょう。 デスクトップ PC と Raspberry Pi の両者にまったく同じ API セットが載ると考えるのは無理があります。
[撮影: Tom Warren @tomwarren ]
API の共通に使える部分を「One API surface」と呼んでいるようです。
■ Extension SDKs
では、デバイス固有の API (例えば、phone には無くてデスクトップ PC には存在する API) を使いたいときは、
どうするのでしょう?
Extension SDKs allow you to write platform specific code, while still keeping one binary.
#win10dev pic.twitter.com/nJom089i9w
— diederik krols (@diederikkrols) 2015, 3月 2
「Extension SDKs」によって、使い分けができるとのこと。
具体的には、Windows.Foundation.Metadata.ApiInformation クラス (Win10TP9926で追加されました) を使って、実行時に API が叩けるかどうかチェックしろ、 ということらしいです。
Developers will be able to test for device specific capable at run time #win10dev #mwc15 pic.twitter.com/v4KVHAu5Ed
— Matt Lacey (@mrlacey) 2015, 3月 2
[2015/3/7追記] また、 MS UK の記事によれば、 ビルドするときのターゲット指定が、 これまでの OS バージョンから、 Windows のユニバーサルアプリプラットフォームのバージョンに変わるとのこと。
■ Adaptive UX
XAML を調整する新しい方法も提供されます。
[2015/3/7追記]
XAML views for devices: MS UK の記事によれば、 プラットフォームごとの XAML を特別な名前のフォルダーに置いておけば、 「魔動的に」 (auto-magically) 適切な XAML を選択してくれるそうです。 解像度違いの画像や、 言語別の文字列リソースファイルと同じような仕組みなんでしょうね。
また、 Visual State の記述に、新しく「Adaptive トリガー」が追加されます。 これでスクリーンサイズによって実行時にレイアウトを切り替えられるようです。
懐かしのVisual State、それにAdaptive triggersを加えて、ユニバーサル対応(?)
#windev_jp
RT @mrlacey Adaptive triggers … #win10dev #mwc15 … pic.twitter.com/QdqHvzKGuS
— 山本康彦@BluewaterSoft (@biac) 2015, 3月 2
レイアウト調整には、新しい RelativePanel コントロールも便利らしいです。
RelativePanel makes alignment and positioning... relative ;)
#win10dev #mwc15 pic.twitter.com/zhT3KmKVzS
— Matt Lacey (@mrlacey) 2015, 3月 2
RelativePanel + improvements in visual state manager = happier Devs
#win10dev #mwc15 pic.twitter.com/Va0k7KzzXz
— Matt Lacey (@mrlacey) 2015, 3月 2
また、コントロールそのものがデバイスによって動きを変えるようにもなります (先の blog 記事では、例えばフライアウト コントロールはタッチ デバイスでは大きなタッチ ターゲットを表示するそうです)。
■ Natural user inputs 対応
今までも、マウスとタッチを気にせずアプリが書けました (例えば、ボタンのクリックイベントは、マウスでクリックしても指でタップしても同じように発生する)。
Windows 10 では、さらに以下のような入力にも対応するようです。
・natural speech, inking, gestures, and user gaze
ジェスチャと gaze (注視) は、HoloLens 対応かな (カメラでもジェスチャが使えるようになってほしいな)。
■ その他
- アプリから利用できるクラウドサービスの強化: Cortana AI、OneDrive、Application Insights など
- Cortana integration: コルタナの検索結果に、インストールされているアプリが出るようになるらしい
- hosted web apps ("Web apps."): XAML ではない。Web サイトからストア アプリを作る。 その JavaScript から、universal APIs (例えば notifications、camera、contact list、calendar など) を呼び出せるとのこと。
そうそう、phone の ○○AndContinue APIは obsolete になるっぽいです♪
Windows Phone 8.1 developers rejoice. The ...AndContinue APIs are going. #win10dev #mwc15 #wpdev pic.twitter.com/e7UN4nQQ3T
— Matt Lacey (@mrlacey) 2015, 3月 2
それと。 Windows 10 になっても従来通りデバイスごとに作ったっていいんだからねっ❢
Build 1 binary for all platforms. OR multiple ones that target specific devices #win10dev #mwc15 pic.twitter.com/UoYhkhtiRg
— Matt Lacey (@mrlacey) 2015, 3月 2
| 固定リンク
« 【ユニバーサル Windows アプリ開発】 アプリバー用 「共有」 アイコンの在り処 #win8dev_jp #wpdev_jp | トップページ | 【Windows 10】全部で 7 エディション!? で、どのアプリがどれで動くのよ? #win10jp »
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「* プログラミング ( Metro スタイル )」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
- 【#UWP】 15063用の Acrylic Effect を、ちゃんと実装してみる(2017.08.05)
この記事へのコメントは終了しました。
コメント