わんくま名古屋#36 (20150725) windows 10 ユニバーサル windows アプリ開発入門

51
わんくま同盟 名古屋勉強会 #36 Windows 10 リリース直前! ユニバーサル Windows アプリ 開発入門♪ 2015/7/25 BluewaterSoft @biac

Upload: yasuhiko-yamamoto

Post on 14-Aug-2015

268 views

Category:

Technology


0 download

TRANSCRIPT

わんくま同盟 名古屋勉強会 #36

Windows 10 リリース直前! ユニバーサル Windows アプリ 開発入門♪

2015/7/25 BluewaterSoft @biac

わんくま同盟 名古屋勉強会 #36

スピーカー紹介

• BluewaterSoft 山本 康彦 a.k.a @biac まだ人工衛星が飛んでない時代に生まれ、HONDAでクルマの設計やってました

• Microsoft MVP for Windows Platform Development (2014/10-2015/9)

• Windows ランタイム アプリ開発 / 記事や書籍の執筆 やってます

2

わんくま同盟 名古屋勉強会 #36

スピーカー紹介 ~ このセッションに関連する@ITの記事

• 徹底予習! Windows 10 のユニバーサルアプリ開発 2015/4/28 http://www.atmarkit.co.jp/ait/articles/1504/28/news015.html

• Windows 10 UWP で業務デスクトップアプリ開発はどう変わるのか? 2015/6/23 http://www.atmarkit.co.jp/ait/articles/1506/23/news012.html

• Build 2015: 全ての開発者が押さえておくべきマイクロソフトの最新技術動向 2015/5/12 http://www.atmarkit.co.jp/ait/articles/1505/12/news011.html

3

わんくま同盟 名古屋勉強会 #36

Windows 10 いよいよリリース❢

4

Copyright © 2015 Windows Navi+

わんくま同盟 名古屋勉強会 #36

Windows 10 リリース スケジュール

• 7/29 Win7/8.1からの無償アップデート開始

• 8/1 デスクトップ版 Enterprise 契約 販売開始

• 8/1 デスクトップ版DVDパッケージ販売開始 (USBメモリ版は8/末か?)

• 9月(米国) Surface Hub 発売

• 秋頃(?) Windows Phone 8.1、Xbox One からの無償アップデート開始、Win10M搭載スマフォ発売、 TH2(仮)アップデート

• 年末~来年(?) HoloLens 発売

5

DSP 版 Windows 10 自作 PC 応援キャラクター

窓辺 てんこ (仮名) Copyright © 2015 Windows Navi+

ドイツの Web サイトがリークした

製品パッケージ (左:Pro、右:Home)

背景は Windows 10 標準の壁紙 "Hero Desktop Image"

わんくま同盟 名古屋勉強会 #36

Xbox

One

IoT

Core

Universal Windows Platform

Core APIs

UWP アプリ ユニバーサル Windows プラットフォーム アプリ とは?

6

わんくま同盟 名古屋勉強会 #36

デスクトップで使う分には、 見た目の違いは小さい

• 左: WPF アプリ 右: UWP アプリ

• ウィンドウの違いは、システムメニューアイコンの有無くらい

7

わんくま同盟 名古屋勉強会 #36

でも、UWP アプリは、同一のコードが Windows 10 搭載スマートフォンでも動く❢

• Windows 10 Mobile エミュレータの画像 (VS2015RC 付属)

8

わんくま同盟 名古屋勉強会 #36

そのほか、さまざまな Windows 10 搭載デバイスで動く❢

• 左: HoloLens Windows 10 搭載ヘッドマウント型 コンピュータ

• 上右: Surface Hub

• 下左: Xbox One

• 下右: 組み込み用ボードコンピュータ

9

わんくま同盟 名古屋勉強会 #36

【参考】 Xbox One が Windows 10 になる!?

• Xbox One には、Windows 8 が 2つ載っている

• ひとつは、リアルタイム ゲーム用 (図の右側) これは変わらないだろう

• もうひとつは、Xbox コンソールや 「Shared apps」 などを動かす部分 (図の左側) ⇨ Windows 10 for Xbox (仮) にアップグレード

10

わんくま同盟 名古屋勉強会 #36

Windows 10 のユニバーサル Windows プラットフォームで動作するアプリ

= Windows 10 用 ユニバーサル Windows プラットフォーム アプリ

略して、 ⇨ ユニバーサル Windows プラットフォーム アプリ / UWP アプリ ⇨ ユニバーサル Windows アプリ ⇨ ユニバーサル アプリ / Windows アプリ

ユニバーサル Windows プラットフォーム アプリ

11

わんくま同盟 名古屋勉強会 #36

• Windows 8.x と Windows Phone 7.x/8.x の間でユニバーサルに使えるアプリも、「ユニバーサル Windows アプリ」 (でもこれは別バイナリ)

注意!! 従来と区別が付くように、略称を使ってね♪

12

※ Build 2014 キーノートより

わんくま同盟 名古屋勉強会 #36

• Windows ストアからダウンロード / インストール ※ ストアを介さない「サイドローディング」も可能

• ユーザーごとのインストール

• 改竄チェック / 権限チェック

• サンドボックスでの実行

• 自動アップデート

• クリーンなアンインストール

UWP は、新形式の AppX パッケージを動かす

13

※ Build 2015 セッション 2-695 資料

わんくま同盟 名古屋勉強会 #36

【参考】 AppX 系パッケージの変遷

14

※ Build 2015 セッション 2-695 資料

わんくま同盟 名古屋勉強会 #36

どのデバイスでも共通に使える API

UWP は、単一の API Surface を提供する

15

※ MVA "A Developer's Guide to Windows 10" モジュール01 資料

わんくま同盟 名古屋勉強会 #36

デバイス固有の拡張部分 (Extension) がある

UWP の API は、デバイスによって違いがある

16

UWP 共通部分

デスクトップ用 Extension

スマートフォン用 Extension

UWP 共通部分

ここを 「Windows Core」 と呼ぶこともある

わんくま同盟 名古屋勉強会 #36

デバイス PC / タブレット(大)

スマートフォン / タブレット(小)

組み込みボード

Surface Hub

HoloLens Xbox One

Extension

Desktop Mobile IoT Team (未発表) (未発表)

Windows 10 エディション

・Home ・Pro ・Enterprise ・Education ・IoT for industory devices (仮)

・Mobile ・Mobile Enterprise ・IoT for mobile devices (仮)

・IoT Core ・Surface Hub 用

・HoloLens用(仮)

・Xbox用 (仮)

デバイス、エクステンション、 Windows 10 のエディションとの対応

17

わんくま同盟 名古屋勉強会 #36

.NET API の呼び出しは .NET Core 5 の .NET Native runtime が使われる

UWP アプリは、.NET Native でコンパイルされる ~ ストア側でコンパイル (提出時はMSILで!)

18

※ MSDN blogs: "Understanding .NET 2015"

わんくま同盟 名古屋勉強会 #36

•今のところ不明瞭 orz • とりあえず、 「AppX パッケージを動かす仕組み」 と大雑把に把

握しておけば OK だろう

• 将来、きちんとしたドキュメント (書籍?) が出てくることを期待

で、 ユニバーサル Windows プラットフォームの 構造や範囲などの詳細は?

19

わんくま同盟 名古屋勉強会 #36

Xbox

One

IoT

Core

Universal Windows Platform

Core APIs

UWP アプリの 特徴 従来のデスクトップアプリとの比較

20

わんくま同盟 名古屋勉強会 #36

アプリ 従来のデスクトップアプリ UWP アプリ

デバイス

PC / タブレット PC / タブレット スマートフォン / IoT / Surface Hub / Hololens / Xbox One 等

Windows バージョン Windows 7 / 8.x / 10 ( Windows RT は除く )

Windows 10 ( Windows RT でも動くかも?)

動作するデバイスと Windows

21

わんくま同盟 名古屋勉強会 #36

アプリ 従来のデスクトップアプリ UWP アプリ

UI / プログラミング言語

WinForm + C# / VB XAML (WPF) + C# / VB MFC + C++

XAML + C# / VB HTML + JavaScript XAML + C++

利用する API

・.NET Framework 主体 ・利用可: Win32 API, COM, Windows Runtime (一部)

・Windows Runtime 主体 ・利用可(一部だけ): .NET Framework, Win32 API, COM

タッチ対応 UI 自前で実装 (サードパーティ部品あり)

標準対応

UI / プログラミング言語 / 利用する API / タッチ対応

22

わんくま同盟 名古屋勉強会 #36

アプリ 従来のデスクトップアプリ UWP アプリ

配布パッケージ

・MSI パッケージ ・サードパーティ製インストーラ ・実行ファイルそのまま

AppX パッケージ

配布方法 自由 (Windows ストアを除く)

・Windows ストア ・Windows ストア for Business ・サイドローディング

インストールの 影響

(可能性) レジストリーへの書き込み システム DLL 上書き ⇨ Windows が 「腐る」

ほぼ無し ⇨ Windows が 「腐らない」

配布とインストール

23

わんくま同盟 名古屋勉強会 #36

アプリ 従来のデスクトップアプリ UWP アプリ

アプリに対する制限

・なし (UACのみ) ・実行中に UAC 昇格可能

・サンドボックスで動作 ・管理者権限不可 ・ファイル I/O やプリンター制御などに制限 ・DB アクセスやプロセス間通信は不可

アプリ保護 なし ・インストール フォルダーに特殊なアクセス権 (Adminでもアクセス不可) ・実行時に他アプリからアクセス不可

セキュリティ面での制限と保護

24

≪参考≫ Designing a simple and secure app package – APPX Delivering reliable and trustworthy Metro style apps

わんくま同盟 名古屋勉強会 #36

アプリ 従来のデスクトップアプリ UWP アプリ

アーキテクチャ

・クライアント = サーバー ・DB直結も可能 (褒められた手法ではない)

・「クラウド型」 ・DB直結は不可 (必ず Web サービス経由)

業務アプリで推奨されるアーキテクチャ

25

Webサービス

WebサービスのフロントエンドとしてのWindows 10デバイス

DB 文書

別セグメントのLAN/クラウド

DB サーバー等

DB サーバーなど基幹サーバーに クライアントから直結も可能

DB 文書

わんくま同盟 名古屋勉強会 #36

Xbox

One

IoT

Core

Universal Windows Platform

Core APIs

UWP アプリの 開発準備 開発を始めるには?

26

わんくま同盟 名古屋勉強会 #36

• UWP アプリを作るには? * Windows 10 (PC) * Visual Studio 2015 + Windows 10 SDK * MS アカウント (開発者用ライセンス取得に必要)

* (できれば) ターゲット デバイス

• UWP アプリを配布するには? * クレジットカード * ストアへ開発者登録 (または、サイドローディングのためのデジタル署名)

概要

27

わんくま同盟 名古屋勉強会 #36

• 7月29日までは VS 2015 RTM 使用不可 それまでは VS 2015 RC でガマン!

• 7/20 VS 2015 RTM リリース 7/29 Windows 10 SDK RTM リリース

• VS 2015 RTM で UWP アプリを開発するには、 Windows 10 SDK RTM が必要 ⇨ 7/29 までは VS 2015 RTM を入れちゃダメ!

重要な注意

28

わんくま同盟 名古屋勉強会 #36

• エディションは問わない

• ただし、エミュレータを利用するには、Hyper-V が使えること * SLAT 対応ハードウェア * CMPXCHG16b、PrefetchW、LAHF/SAHF サポート (古いAMDプロセッサだと未対応の可能性あり) * RAM 4GB 以上 * 64bit版 Windows 10 Pro / Enterprise

• テスト環境では、開発ターゲットに合わせたブランチ (後述) を維持しておくこと ※ ブランチの更新を止めるには Enterprise と WSUS が必要らしい

Windows 10 (PC)

29

わんくま同盟 名古屋勉強会 #36

• Window Update の方法が変わる * セキュリティ アップデート ⇨ すべて強制 * 新機能アップデート ⇨ ブランチによって異なる

• PC 向けに 3 種類のブランチ * CB (Current Branch): 強制アップデート [全エディション] * CBB (Current Branch for Business): 一定期間延期可能 [Pro 版以上で選択可] * LTSB (Long Term Servicing Branch): 最大10年間延期可能 [Enterprise / Education で選択可] * 以上の他に、「人柱モード」 (Windows Insider Preview Branch) あり

【参考】 Windows 10 (PC) のアップデート ブランチ

30

わんくま同盟 名古屋勉強会 #36

• VS 2015 のエディションは問わない 無償の Express や Community でも OK♪ 現在 RC (RTMは 7/20 だが、下記 SDK が RTM になるまでは RC を使う) ストアへ提出するには、RTM が必要

• Windows 10 SDK、および Visual Studio Universal Windows app development tools 現在はプレビュー版 最新は 7/10 (日本時間) リリース ⇦ Win10 build 10166 以上が必要 RTM は 7/29 の予定

Visual Studio 2015 と SDK

31

わんくま同盟 名古屋勉強会 #36

• 「入会金」が必要 (クレジットカード払い) 現在 1,847円 (会社アカウントは 9,800円)

• 登録手順 https://msdn.microsoft.com/ja-jp/library/windows/apps/bg124287.aspx

• アプリ開発者契約書 https://msdn.microsoft.com/ja-jp/library/windows/apps/hh694058.aspx

• そのほか、目を通しておくべきドキュメント * Windows ストア ポリシー (これに違反するとストアの審査に落ちる) * 開発者倫理規定

ストアへの開発者登録 ~ 開発中はなくてもいい。ストアに提出するときには必要

33

わんくま同盟 名古屋勉強会 #36

Xbox

One

IoT

Core

Universal Windows Platform

Core APIs

UWP アプリの 開発 とくに、複数のデバイスに対応する方法は?

34

わんくま同盟 名古屋勉強会 #36

VS2015 RC では 「Windows Universal」 ・Class Library =.NET の普通のDLL ・Windows Runtime Component = JavaScript からも 使える DLL ・Unit Test App = ストアアプリ用 MSTest

プロジェクトを作成する

35

わんくま同盟 名古屋勉強会 #36

プロジェクトのプロパティ ※ RC では、この設定が マニフェスト (後述) に 反映されない → 手動で書き換え

UWP ターゲット バージョンの指定 ~ Windows 10 には 「バージョン」 がある!

36

わんくま同盟 名古屋勉強会 #36

【参考】 RC ではエディター未実装のため、手書き

マニフェスト ファイル ~ WPF では App.config、 UWP では Package.appxmanifest

37

動作対象デバイス

「Mobileのみ」 などと指定が可能

ターゲットバージョン

RTM では、自動的に設定されると思われる

ターゲットバージョン

RTM では、自動的に設定されると思われる

わんくま同盟 名古屋勉強会 #36

例: StreamSocketControl.ClientCertificate

【参考】 MSDN ドキュメントのバージョン情報

38

動作対象デバイス

適用開始バージョン

RTM 以降に追加された API では 1.0 より大きい値にな

ると思われる

わんくま同盟 名古屋勉強会 #36

UI は XAML で。 書き方は、WPF と ほぼ同じ

"Hello, world!" ~ WPF に慣れていれば楽勝♪

39

T e x t B l o c k を 配 置 し て 、 「 H e l l o , U W P ! 」

わんくま同盟 名古屋勉強会 #36

WPF とほぼ同じ。 Compiled Binding という パフォーマンスの良い 手法も導入された (右の画像は従来方式)

データ バインディング ~ WPF に慣れていれば、まぁ楽勝

40

1. バインディング ソース

2. TextBlock に バインド

3. バインドされた データが

表示されている

わんくま同盟 名古屋勉強会 #36

慣れていないと、 落とし穴がたくさん! がんばって♪

async / await ~ UWP の世界は非同期 API ばかり!

41

ファイルを読み込むだけでも 非同期処理 !!

※ WinRT/Metro TIPS:「テキストファイルを簡単に読み書きするには?」より

わんくま同盟 名古屋勉強会 #36

画面幅などに応じて デザインの変更を 指定できる

複数デバイス対応 その1: Adaptive Trigger ~ XAML だけでレスポンシブ デザイン

42

画面幅が狭いときに 適用されるスタイル

画面幅が中間のときに 適用されるスタイル

わんくま同盟 名古屋勉強会 #36

複数デバイス対応 その2: Xaml View ~ 1画面に複数の XAML ファイルを割り当て ⇨ 自動選択

43

Desktop 用の XAML

Mobile 用の XAML

その他のデバイス用の XAML

共通のコードビハインド

わんくま同盟 名古屋勉強会 #36

複数デバイス対応 その3: デバイス固有 API の使用 ~ その API が利用できるか確かめてから呼び出す

44

Mobile 固有の API が 使えることをチェック

この例では Mobile の [戻る] ボタンの

イベントハンドラーを セットしている

※ PlatformSpecific Analyzer を使うと if 文を自動生成できる

わんくま同盟 名古屋勉強会 #36

【参考】 システム ワイドな [戻る] ボタン対応 ~ 前ページの例は、今となってはもう使わない m(_`_)m

45

ウィンドウ左上の [戻る] ボタン

Phone の [戻る] ボタン

タスクバーの [戻る] ボタン (タブレット モード時)

わんくま同盟 名古屋勉強会 #36

※ ストアへ提出するパッケージを作る前に、リリースビルドへ切り替えるのを忘れずに!

AppX パッケージの作成 ~ パッケージの作成ウィザードで、さっくり作れる

46

はい: ストアへの提出用 いいえ: テスト用

わんくま同盟 名古屋勉強会 #36

AppX パッケージの作成 ~ .NET Native 利用のため、Win8.1 から変わったところもある

47

バージョンの最後の桁は、ストア側でNativeにコンパイルする際に使用する

Any CPU は選べない。.NET Native で再コンパイルするには、CPU アーキテクチャごとの MSIL が必要らしい

わんくま同盟 名古屋勉強会 #36

※ パッケージ作成完了時に起動できる。直接起動してからアプリを指定してもよい。

WACK: アプリ認定キット ~ このテストに通らないようなら、ストアで確実にリジェクトされる

48

わんくま同盟 名古屋勉強会 #36

Xbox

One

IoT

Core

Universal Windows Platform

Core APIs

まとめ UWP のメリット/デメリット

49

わんくま同盟 名古屋勉強会 #36

UWP アプリ開発をやりますか? (はい/Yes)

• ○ Windows 10 の複数デバイスで動く

• ○ 安心で安全、Windows が「腐らない」

• × Windows 7 / 8.x では動かない (全てが Window 10 に置き換わった後ではデメリットにならない)

• ☆ 面白いよ♪ そして今ならまだ、先頭に立てるチャンス❢

50

わんくま同盟 名古屋勉強会 #36

ユニバーサル Windows アプリ 開発入門♪

2015/7/25 BluewaterSoft @biac