わんくま名古屋 #37 (20151114) windows 10 uwp アプリ開発入門(実践編)

48
わわわわわわ わわわわわわ #37 Windows 10 TH2 わわわわわわわわ UWP わわわ わわわわ( わわわ ) 2015/11/14 BluewaterSoft @biac

Upload: yasuhiko-yamamoto

Post on 16-Apr-2017

2.031 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

Windows 10 TH2 そろそろリリース

UWP アプリ開発入門♪( 実践編 )2015/11/14BluewaterSoft @biac

Page 2: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

スピーカー紹介

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

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

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

Page 3: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

スピーカー紹介~ このセッションに関連する@ 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

Page 4: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

Windows 10どんどんリリース❢

4

Copyright © 2015 Windows Navi+

Page 5: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

• 9 月 (?) デスクトップ版パッケージ販売開始 (USB メモリ )

• 11 月 Windows 10 TH2 リリース予定

• 秋以降 Windows Phone 8.1 、 Xbox One からの無償アップデート開始

• 来年 Surface Hub / HoloLens 発売DSP 版 Windows 10 自作 PC 応援キャラクター窓辺 てんこ ( 仮名 )Copyright © 2015 Windows Navi+

ドイツの Web サイトがリークした製品パッケージ ( 左 :Pro 、右 :Home)

背景は Windows 10 標準の壁紙

"Hero Desktop Image"

Page 6: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

DesktopMobile

XboxOne

IoTCore

HoloLensSurface Hub

Universal Windows Platform

Core APIsUWP アプリ

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

6

Page 7: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

Page 8: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

でも、 UWP アプリは、同じバイナリがWindows 10 搭載スマートフォンでも動く❢

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

Page 9: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

• 上右 :Surface Hub

• 下左 : Xbox One• 下右 :

組み込み用ボードコンピュータ

Page 10: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

【参考】 Xbox One が Windows 10 になる !?• Xbox One には、 Windows 8

が 2 つ載っている

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

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

Page 11: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

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

Page 12: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

※ Build 2014 キーノートより

Page 13: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

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

• 自動アップデート

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

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

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

Page 14: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

【参考】 AppX 系パッケージの変遷※ Build 2015 セッション 2-695 資料

Page 15: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

Page 16: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

UWP 共通部分

デスクトップ用 Extension

スマートフォン用 Extension

UWP 共通部分

ここを「 Windows

Core 」と呼ぶこともある

Page 17: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

デバイス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 のエディションとの対応

Page 18: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

•今のところ不明瞭 orz• とりあえず、 「 AppX パッケージを動かす仕組み」 と大雑把に把握しておけば OK だろう

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

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

Page 19: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

DesktopMobile

XboxOne

IoTCore

HoloLensSurface Hub

Universal Windows Platform

Core APIs

UWP アプリの特徴

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

19

Page 20: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

UWP アプリ

デバイス PC / タブレット

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

Windows バージョン

Windows 7 / 8.x / 10( Windows RT は除く )

Windows 10( Windows RT では動かず )

動作するデバイスと Windows

Page 21: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

UI / プログラミング言語

WinForm + C# / VBXAML (WPF) + C# / VBMFC + C++

XAML + C# / VBHTML + JavaScriptXAML + C++

利用する API

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

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

タッチ対応 UI

自前で実装( サードパーティ部品あり ) 標準対応

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

Page 22: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

AppX パッケージ

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

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

インストールの影響

( 可能性 )レジストリーへの書き込みシステム DLL 上書き

⇨ Windows が 「腐る」

ほぼ無し ⇨ Windows が

「腐らない」

配布とインストール

Page 23: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

UWP アプリ

アプリに対する制限

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

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

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

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

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

Page 24: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

アーキテクチャ

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

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

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

Web サービス

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

DB 文書

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

DB サーバー等

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

DB 文書

Page 25: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

DesktopMobile

XboxOne

IoTCore

HoloLensSurface Hub

Universal Windows Platform

Core APIs

UWP アプリの開発準備

開発を始めるには ?

25

Page 26: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

• UWP アプリを作るには ?* Windows 10 (PC)* Visual Studio 2015 + Windows 10 SDK* MS アカウント ( 開発者用ライセンス取得に必要 )* ( できれば ) ターゲット デバイス

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

概要

Page 27: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

• エディションは問わない• ただし、エミュレータを利用するには、 Hyper-V が使えること

* SLAT 対応ハードウェア* CMPXCHG16b 、 PrefetchW 、 LAHF/SAHF サポート ( 古い AMD プロセッサだと未対応の可能性あり )* RAM 4GB 以上* 64bit 版 Windows 10 Pro / Enterprise

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

Windows 10 (PC)

Page 28: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

Page 29: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

• VS 2015 のエディションは問わない無償の Express や Community でも OK♪

• Windows 10 SDK 、およびVisual Studio Universal Windows app development tools※ ストアへの提出には、プレビュー版はダメ (次ページ )

Visual Studio 2015 と SDK

Page 30: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

•どちらもプレビュー版が配布されるけど、Windows 10 新ブランチの正式リリースまではストアでの公開は不可 ☜ 要注意 !

• 例: 2015/10 のプレビュー版 SDK で作ったアプリは、2015/11( 予定 ) の Windows 10 TH2 のリリースまで公開できない

Windows 10 と SDK のリリース サイクル

Windows 10SDK

2015/7 月 10 月 11 月

★ TH1 リリース

★ TH1 用 リリース

★ IP ★ IP … … ★ IP

★ プレビュー版

★ TH2 リリース

★ TH2 用 リリース

Page 31: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

• 「入会金」が必要 ( クレジットカード払い )現在 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 ストア ポリシー ( これに違反するとストアの審査に落ちる )* 開発者倫理規定

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

Page 32: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

DesktopMobile

XboxOne

IoTCore

HoloLensSurface Hub

Universal Windows Platform

Core APIs

UWP アプリの開発

とくに、複数のデバイスに対応する方法は ?

32

Page 33: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

VS2015 RC では「 Windows Universal 」

・ Class Library =.NET の普通の DLL

・Windows Runtime Component = JavaScript からも 使える DLL

・ Unit Test App = ストアアプリ用 MSTest

プロジェクトを作成する

Page 34: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

プロジェクトのプロパティ

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

Page 35: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

動作対象デバイス

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

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

ターゲットバージョン

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

Page 36: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

例 : StreamSocketControl.ClientCertificate

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

動作対象デバイス

適用開始バージョン

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

Page 37: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

UI は XAML で。

書き方は、 WPF とほぼ同じ

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

TextB lock を配置し て 、

「 He l lo , UWP! 」

Page 38: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

WPF とほぼ同じ。

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

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

1. バインディング

ソース

2. TextBlock に

バインド

3. バインドされた

データが表示される

Page 39: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

がんばって♪

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

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

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

Page 40: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

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

Page 41: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

Desktop 用の XAML

Mobile 用の XAML

その他のデバイス用の XAML

共通のコードビハインド

Page 42: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

 

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

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

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

のイベントハンドラーを

セットしている

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

Page 43: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

 

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

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

Phone の [戻る ] ボタン

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

WinRT/Metro TIPS: 「システムの[戻る]ボタンに対応するには?」 参照

Page 44: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

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

Page 45: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

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

Page 46: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

DesktopMobile

XboxOne

IoTCore

HoloLensSurface Hub

Universal Windows Platform

Core APIsまとめ

UWP のメリット / デメリット

46

Page 47: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

• ○ Windows 10 の複数デバイスで動く•○ 安心で安全、 Windows が「腐らない」

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

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

Page 48: わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)

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

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

2015/11/14BluewaterSoft @biac

ご清聴ありがとうございました