Universal Windows app
入門
どんなテクノロジなのか?どこまでできるのか?
大田 一希
お約束事項
• 掲載内容は私自身の見解であり、所属する組織を代
表するものではありません
自己紹介
• 名前
 大田 一希(かずき)
 Twitter:@okazuki
• 肩書き
 Microsoft MVP for Client App Dev
2011/07-2014/06
• Blog
 かずきのBlog@hatena
http://okazuki.hatenablog.com/
• 猫派/犬派
 犬派
今日のゴール
• Universal Windows appについて1つ「へ~っ」って
思ってもらう
Universal Windows appとは
12:38
Start User Name
売り文句
• ワンソースでマルチプラットフォームのアプリが開
発できる
ローミング
データ共有
ストア上で同
じアプリ扱い
開催日 > プログラム >
Text
Text
Text
Text
Universal Windows app
入門
etc
etc
2014/05/10
@なぞ社
2014/05/10
@なぞ社
お知らせ
12:38
WPArch
text
text
text
text
お知らせ
実現するための仕組み 1
• Windows RuntimeがWindows Phoneに実装された
Windows Kernel Services
入力、インタラクション、etc… DirectX、メディア、etc…
Windows Runtime
C/C++ C#/VB
XAML
JavaScript
HTML/CSS
高い互換性
Windows
store app
Windows
Phone app
固有部分
• SettingFlyout
• AppBar
• SearchBox
• etc…
固有部分
• BackButton
• Pivot
• System Chrome
• etc…
実現するための仕組み 2
• IDEによるサポート
 Windows(Windows 8.1)
 ストアアプリのプロジェクト
 WindowsPhone(Windows Phone 8.1)
 Windows Phoneアプリのプロジェクト
 Shred
 共通部分のコードを置く
 プラットフォーム固有部は#if
ディレクティブ
コンパイル時の動作
• コンパイルは別々に行われる
 Windows store app + Sharedプロジェクト
 Windows Phone app + Shared プロジェクト
地味に非互換
• 90%以上の互換性の厄介さはご存知ですよね?
非互換とTips
ケース1「戻る」
• Windows Phoneでは、ハードボタンの戻るを処理し
ないとアプリが閉じてしまう
12:38
October, 2010
Su Mo Tu We Th Fr Sa
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6
App1
ケース1「戻る」
• 対処方法
 以下のコードをページに入れる
#if WINDOWS_PHONE_APP
Windows.Phone.UI.Input.HardwareButtons.BackPressed += (_, e) =>
{
if (this.Frame.CanGoBack)
{
e.Handled = true;
this.Frame.GoBack();
}
}
#endif
ケース2「ヘッダー」
• WindowsとWindows Phoneのヘッダー違うよね…?
• 同じ名前のUserControl定義テクニック
UserControl1 UserControl1
Page
Windows store app Windows Phone app
ケース3「GridViewの見た目」
• ストアアプリと同じItemTemplateでいける?
• 同じ名前のリソース定義テクニック
ItemTemplate1 ItemTemplate1
Page
Windows store app Windows Phone app
同じ要領でStyleも出来ます。
ケース4「本当に画面を共通化する?」
• 共通化可能だが…
 これまでのテクニックでワンソース+αで作成可能
• 現実解は基本別々に作って共通化可能な部分を
UserControlで作成する
ケース4「本当に画面を共通化する?」
Model
ViewModel
View
Shared
個
別
Universal Windows appの所感
• 画面の共通化は、かなり難しい
 共通のUserControl
 同名のStyleやUserControl
• その他の部分の共通化はかなり便利
まとめ
• Universal Windows appとは以下の機能の組み合わせ
 Windows ストアアプリとWindows Phoneアプリの高い互換
性
 ユーザーがコードをリンクとして追加して管理してたコー
ド共有をIDEが面倒を見てくれる
 ストアに登録するときに同じアプリとして登録できる
 ローミングデータを共有できる
• 注意点
 共通化するべき個所は何処か見極める

Universal Windows app 入門