ストアアプリ→universal windows apps=wp8.1アプリ

51
ストアアプリ →universal Windows Apps =WP8.1アプリ Windows Phone Arch in Tokyo#3 2014.05.10 初音玲

Upload: akira-hatsune

Post on 26-Jun-2015

3.093 views

Category:

Education


1 download

DESCRIPTION

Windowsストアアプリをuniversal Windows Apps化してWindows Phone 8.1アプリも作成してみました。 その中で得られてノウハウを公開します。

TRANSCRIPT

Page 1: ストアアプリ→universal Windows Apps=WP8.1アプリ

ストアアプリ→universal Windows Apps=WP8.1アプリWindows Phone Arch in Tokyo#3

2014.05.10

初音玲

Page 2: ストアアプリ→universal Windows Apps=WP8.1アプリ

自己紹介▷お仕事の略歴

•システム企画

•インフラ構築

•業務アプリ構築

• DB設計、構築、各種支援

▷お仕事外の略歴

• Microsoft MVP for Developer Tools (2008/04-15/03)

• Oracle ACE (2008/04-:日本で2人目)

2

Page 3: ストアアプリ→universal Windows Apps=WP8.1アプリ

はじめてシリーズ

▷はじめてのVC#2012

3

Page 4: ストアアプリ→universal Windows Apps=WP8.1アプリ

Kinect本 監修▷本文

•日本語訳

▷サンプル

•ローカライズ済

4

Page 5: ストアアプリ→universal Windows Apps=WP8.1アプリ

連載中▷

•新型Kinect for Windows v2 Developer Previewプログラミング入門http://www.buildinsider.net/small/kinect2dp/

• Xbox One速報http://www.buildinsider.net/consumer/xboxonekinect/

▷Codezine

• http://codezine.jp/author/998

5

Page 6: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windows Phone 8.1 Developer Preview

6

Page 7: ストアアプリ→universal Windows Apps=WP8.1アプリ

History of Windows Phone Phone History

WP 7.0

Silverlight

WP 7.5

Silverlight

WP 8.0

Silverlight

WP 8.1

Silverlight

WP 8.1

XAML

7

Page 8: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windows Phone Runtime

Windows Phone RuntimeからWindows Runtimeへ

Windows Runtime(約11,000メンバ)

サブセット(約2,800)

追加(約600)

8

Windows Phone 8.0はWindows [Phone] Runtimeだった

Page 9: ストアアプリ→universal Windows Apps=WP8.1アプリ

9

PCとPhoneでますます共通化へ

CommonWinRT APIs

Phone-specificWinRT APIs

Windows-specificWinRT APIs

The Windows Runtime (WinRT) is the shared runtime and API space used by store apps across the Windows platform (phone and client)

Dramatic convergence in 8.1• Goal is 100% convergence for dev scenarios

• In 8.0, we had ~30% API convergence

• With 8.1, we move well past 90%+ convergence

Page 10: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windows developer platform

| |

Windows Phone Only

Windows OnlyWindows + Windows Phone

BUILD 2014 : 2-509

Page 11: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windows Phone 8.1のネイティブアプリは3タイプ

11

Page 12: ストアアプリ→universal Windows Apps=WP8.1アプリ

Which XAML Framework should you use?

App Type Framework

New App XAML or Silverlight

Existing Windows Store App XAML

Lock Screen Image (social, weather, sports, ..) Silverlight 8.x

Camera Based App (lenses integration) or VOIP Silverlight 8.x

Music App Silverlight 8.0 or XAML

Existing Silverlight Phone Apps Silverlight 8.x or XAML

BUILD 2014 : 2-517

Page 13: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windows 8.1ストアアプリ+Windows Phone 8.1 ストアアプリ=universal Windows Apps ?

13

Page 14: ストアアプリ→universal Windows Apps=WP8.1アプリ

universal Windows Apps▷ Windows Phone アプリ

Windows 8.1ストアアプリ

WindowsPhone 8.1ストアアプリ

(Windows Runtime)

Windows Phone Silverlight 8.xアプリ

Windows Phone 7.xアプリ

(Silverlight)

Windows 8ストアアプリ

▷Windowsストアアプリ

14

Page 15: ストアアプリ→universal Windows Apps=WP8.1アプリ

universal Windows Apps▷WindowsストアとWindows Phoneストアで同じID

15

Page 16: ストアアプリ→universal Windows Apps=WP8.1アプリ

App backup & roaming

Tile metadata and layout is backed up to OneDrive daily

App decides what data gets backed up to OneDrive

Roaming Local Temp

Roaming Local Temp

Roaming

100kb

100kb

Device A

Device B

BUILD 2014 : 2-509

Page 17: ストアアプリ→universal Windows Apps=WP8.1アプリ

VBはuniversal Windows Apps作れないんでしょ?▷AppIDが同じであれば良いという事は?

▷VBで作成したWindows 8.1ストアアプリとWindows Phone 8.1アプリ

▷同じアプリ名でそれぞれのストアに登録すればuniversal Windows Apps !

17

Page 18: ストアアプリ→universal Windows Apps=WP8.1アプリ

じゃあ、VS2013 Update 2 RCにあるこれは?

18

Page 19: ストアアプリ→universal Windows Apps=WP8.1アプリ

ユニバーサルアプリ

19

Page 20: ストアアプリ→universal Windows Apps=WP8.1アプリ

ユニバーサルアプリテンプレート

20

Page 21: ストアアプリ→universal Windows Apps=WP8.1アプリ

universal Windows Apps▷ Windows Phone アプリ

Windows 8.1ストアアプリ

WindowsPhone 8.1アプリ

(Windows Runtime)

Windows Phone Silverlight 8.xアプリ

Windows Phone 7.xアプリ

(Silverlight)

Windows 8ストアアプリ

▷Windowsストアアプリ

21

Page 22: ストアアプリ→universal Windows Apps=WP8.1アプリ

ソリューション構成

22

Page 23: ストアアプリ→universal Windows Apps=WP8.1アプリ

既存Windowsストアアプリに追加▷新しいメニュー項目がある

23

Page 24: ストアアプリ→universal Windows Apps=WP8.1アプリ

新規プロジェクト追加のときとは異なる結果になる▷2つの追加プロジェクト

• hogehoge.WIndowsPhone

• hogehoge.Shared

24

Page 25: ストアアプリ→universal Windows Apps=WP8.1アプリ

参考:既存WP8.1プロジェクトだと▷[Windows 8.1の追加]がある

25

Page 26: ストアアプリ→universal Windows Apps=WP8.1アプリ

条件付きコンパイルシンボルを整えよう▷新規ユニーバサルアプリ

▷既存Widowsストアアプリに追加

26

Page 27: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windows Phone Storeとの関連付け▷既存アプリ名一覧

• Windowsストアアプリ

27

Page 28: ストアアプリ→universal Windows Apps=WP8.1アプリ

Modelsと文字リソースをShared

28

Page 29: ストアアプリ→universal Windows Apps=WP8.1アプリ

Assetsフォルダの「コンテンツ」をShared

29

BitmapImage(new Uri("ms-appx:///Assets/sakura_pin.png"))

Page 30: ストアアプリ→universal Windows Apps=WP8.1アプリ

ViewModelsをShared

30

Page 31: ストアアプリ→universal Windows Apps=WP8.1アプリ

Phone側でNuGetパッケージ追加

31

Page 32: ストアアプリ→universal Windows Apps=WP8.1アプリ

Phone側でNuGetパッケージ追加

32

Page 33: ストアアプリ→universal Windows Apps=WP8.1アプリ

Phone側でNuGetパッケージ追加

33

Page 34: ストアアプリ→universal Windows Apps=WP8.1アプリ

PC側でNuGetパッケージの入れ替え(削除)

34

Page 35: ストアアプリ→universal Windows Apps=WP8.1アプリ

PC側でNuGetパッケージの入れ替え(追加)

35

Page 36: ストアアプリ→universal Windows Apps=WP8.1アプリ

基本ページをWindowsPhone側に追加

36

Page 37: ストアアプリ→universal Windows Apps=WP8.1アプリ

WindowsPhone側に追加されるコード▷Windowsストアアプリと同一コード

• NavigationHeloper

• ObservableDictionay

• RelayCommand

• SuspensionManager

37

Page 38: ストアアプリ→universal Windows Apps=WP8.1アプリ

CommonをShared

38

Page 39: ストアアプリ→universal Windows Apps=WP8.1アプリ

参照設定の違いを確認▷Windowsストアアプリ

39

▷Windows Phoneストアアプリ

BingMapはWindows Phoneに組み込まれているのを使う

Page 40: ストアアプリ→universal Windows Apps=WP8.1アプリ

コントロールの共通度はどれくらいあるか?

40

Page 41: ストアアプリ→universal Windows Apps=WP8.1アプリ

コントロールの共通性は?

80% exact same XAML 20% custom

Common SignatureOptimized

DatePicker

TimePicker

CommandBar

Button

CheckBox

RadioButton ProgressBar

Slider

ToggleSwitchHub

Pivot

ListView

GridView

SysTray

41

Page 42: ストアアプリ→universal Windows Apps=WP8.1アプリ

8.1で古くなったといわれたところ▷PickSingleFileAsync

▷PickSIngleFileAndContinue

42

古いわけじゃなかった…

Page 43: ストアアプリ→universal Windows Apps=WP8.1アプリ

カメラ周りは10%の方だった

43

Page 44: ストアアプリ→universal Windows Apps=WP8.1アプリ

画面周りの移植に挑戦

44

Page 45: ストアアプリ→universal Windows Apps=WP8.1アプリ

Windowsストアアプリ側からMainPageをコピー▷非互換はわかってるんだからねッ!

• BingMap (WindowsPhoneは組込み)

▷でもBingMap以外にも…

45

Page 46: ストアアプリ→universal Windows Apps=WP8.1アプリ

同名のStyleをつくると▷エラーになる

46

Page 47: ストアアプリ→universal Windows Apps=WP8.1アプリ

別名を付けて解決▷StandardStyle.xaml

47

▷StandardStylePhone.xaml

Page 48: ストアアプリ→universal Windows Apps=WP8.1アプリ

実行時エラー

▷ TopAppBarが原因<Page.TopAppBar>

<CommandBar><CommandBar.SecondaryCommands>

<AppBarButton Icon="View" Label="最寄り検索" Click="Near_Click" /></CommandBar.SecondaryCommands>

</CommandBar></Page.TopAppBar>

48

Page 49: ストアアプリ→universal Windows Apps=WP8.1アプリ

動くには動いたけれど…←やっぱりバランス悪い

49

Page 50: ストアアプリ→universal Windows Apps=WP8.1アプリ

XAMLを全面的に見直して…▷変更点

• Hubコントロールをいれて

• BingMapをMapControlに変更して

• GridViewのスタイルやプロパティ変更して

▷変更しなかった点

•コードビハインド側(除くMap関連)

• NavigetionHelper周りとかそのまま動いた

50

Page 51: ストアアプリ→universal Windows Apps=WP8.1アプリ

FIN

51