わんくま名古屋 #37 (20151114) windows 10 uwp アプリ開発入門(実践編)
TRANSCRIPT
わんくま同盟 名古屋勉強会 #37
Windows 10 TH2 そろそろリリース
UWP アプリ開発入門♪( 実践編 )2015/11/14BluewaterSoft @biac
わんくま同盟 名古屋勉強会 #37 2
スピーカー紹介
• BluewaterSoft 山本 康彦 a.k.a @biacまだ人工衛星が飛んでない時代に生まれ、 HONDA でクルマの設計やってました
• Microsoft MVP for Windows Development (2014/10-2016/9)
• Windows ランタイム アプリ開発 / 記事や書籍の執筆 やってます
わんくま同盟 名古屋勉強会 #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
わんくま同盟 名古屋勉強会 #37
Windows 10どんどんリリース❢
4
Copyright © 2015 Windows Navi+
わんくま同盟 名古屋勉強会 #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"
わんくま同盟 名古屋勉強会 #37
DesktopMobile
XboxOne
IoTCore
HoloLensSurface Hub
Universal Windows Platform
Core APIsUWP アプリ
ユニバーサル Windows プラットフォーム アプリ とは ?
6
わんくま同盟 名古屋勉強会 #37 7
デスクトップで使う分には、見た目の違いは小さい
• 左 : WPF アプリ右 : UWP アプリ
• ウィンドウの違いは、システムメニューアイコンの有無くらい
わんくま同盟 名古屋勉強会 #37 8
でも、 UWP アプリは、同じバイナリがWindows 10 搭載スマートフォンでも動く❢
• Windows 10 Mobile エミュレータの画像(VS2015RC 付属 )
わんくま同盟 名古屋勉強会 #37 9
そのほか、さまざまなWindows 10 搭載デバイスで動く❢
• 左 : HoloLensWindows 10 搭載ヘッドマウント型コンピュータ
• 上右 :Surface Hub
• 下左 : Xbox One• 下右 :
組み込み用ボードコンピュータ
わんくま同盟 名古屋勉強会 #37 10
【参考】 Xbox One が Windows 10 になる !?• Xbox One には、 Windows 8
が 2 つ載っている
• ひとつは、リアルタイム ゲーム用 ( 図の右側 )これは変わらないだろう
• もうひとつは、 Xbox コンソールや 「 Shared apps 」 などを動かす部分 ( 図の左側 )⇨ Windows 10 for Xbox ( 仮 ) にアップグレード
わんくま同盟 名古屋勉強会 #37 11
Windows 10 のユニバーサル Windows プラットフォームで動作するアプリ
= Windows 10 用 ユニバーサル Windows プラットフォーム アプリ
略して、⇨ ユニバーサル Windows プラットフォーム アプリ / UWP アプリ⇨ ユニバーサル Windows アプリ⇨ ユニバーサル アプリ / Windows アプリ
ユニバーサル Windows プラットフォーム アプリ
わんくま同盟 名古屋勉強会 #37 12
• Windows 8.x と Windows Phone 7.x/8.x の間でユニバーサルに使えるアプリも、「ユニバーサル Windows アプリ」 ( でもこれは別バイナリ )
注意 !!従来と区別が付くように、略称を使ってね♪
※ Build 2014 キーノートより
わんくま同盟 名古屋勉強会 #37 13
• Windows ストアからダウンロード / インストール※ ストアを介さない「サイドローディング」も可能
• ユーザーごとのインストール
• 改竄チェック / 権限チェック
• サンドボックスでの実行
• 自動アップデート
• クリーンなアンインストール
UWP は、新形式の AppX パッケージを動かす
※ Build 2015 セッション 2-695 資料
わんくま同盟 名古屋勉強会 #37 14
【参考】 AppX 系パッケージの変遷※ Build 2015 セッション 2-695 資料
わんくま同盟 名古屋勉強会 #37 15
どのデバイスでも共通に使える API
UWP は、単一の API Surface を提供する
※ MVA "A Developer's Guide to Windows 10" モジュール 01 資料
わんくま同盟 名古屋勉強会 #37 16
デバイス固有の拡張部分 (Extension) がある
UWP の API は、デバイスによって違いがある
UWP 共通部分
デスクトップ用 Extension
スマートフォン用 Extension
UWP 共通部分
ここを「 Windows
Core 」と呼ぶこともある
わんくま同盟 名古屋勉強会 #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 のエディションとの対応
わんくま同盟 名古屋勉強会 #37 18
•今のところ不明瞭 orz• とりあえず、 「 AppX パッケージを動かす仕組み」 と大雑把に把握しておけば OK だろう
• 将来、きちんとしたドキュメント ( 書籍 ?) が出てくることを期待
で、 ユニバーサル Windows プラットフォームの構造や範囲などの詳細は ?
わんくま同盟 名古屋勉強会 #37
DesktopMobile
XboxOne
IoTCore
HoloLensSurface Hub
Universal Windows Platform
Core APIs
UWP アプリの特徴
従来のデスクトップアプリとの比較
19
わんくま同盟 名古屋勉強会 #37 20
アプリ 従来のデスクトップアプリ
UWP アプリ
デバイス PC / タブレット
PC / タブレットスマートフォン / IoT / Surface Hub / Hololens / Xbox One 等
Windows バージョン
Windows 7 / 8.x / 10( Windows RT は除く )
Windows 10( Windows RT では動かず )
動作するデバイスと Windows
わんくま同盟 名古屋勉強会 #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 / タッチ対応
わんくま同盟 名古屋勉強会 #37 22
アプリ 従来のデスクトップアプリ UWP アプリ
配布パッケージ・MSI パッケージ・サードパーティ製インストーラ・実行ファイルそのまま
AppX パッケージ
配布方法自由(Windows ストアを除く )
・Windows ストア・Windows ストア for Business・サイドローディング
インストールの影響
( 可能性 )レジストリーへの書き込みシステム DLL 上書き
⇨ Windows が 「腐る」
ほぼ無し ⇨ Windows が
「腐らない」
配布とインストール
わんくま同盟 名古屋勉強会 #37 23
アプリ従来のデスクトップアプリ
UWP アプリ
アプリに対する制限
・なし (UAC のみ )・実行中に UAC 昇格可能
・サンドボックスで動作・管理者権限不可・ファイル I/O やプリンター制御などに制限・ DB アクセスやプロセス間通信は不可
アプリ保護 なし・インストール フォルダーに特殊なアクセス権 (Admin でもアクセス不可 )・実行時に他アプリからアクセス不可
セキュリティ面での制限と保護
≪参考≫ Designing a simple and secure app package – APPX Delivering reliable and trustworthy Metro style apps
わんくま同盟 名古屋勉強会 #37 24
アプリ 従来のデスクトップアプリ UWP アプリ
アーキテクチャ
・クライアント = サーバー・ DB直結も可能 (褒められた手法ではない )
・「クラウド型」・ DB直結は不可 (必ず Web サービス経由 )
業務アプリで推奨されるアーキテクチャ
Web サービス
Web サービスのフロントエンドとしてのWindows 10 デバイス
DB 文書
別セグメントの LAN/クラウド
DB サーバー等
DB サーバーなど基幹サーバーにクライアントから直結も可能
DB 文書
わんくま同盟 名古屋勉強会 #37
DesktopMobile
XboxOne
IoTCore
HoloLensSurface Hub
Universal Windows Platform
Core APIs
UWP アプリの開発準備
開発を始めるには ?
25
わんくま同盟 名古屋勉強会 #37 26
• UWP アプリを作るには ?* Windows 10 (PC)* Visual Studio 2015 + Windows 10 SDK* MS アカウント ( 開発者用ライセンス取得に必要 )* ( できれば ) ターゲット デバイス
• UWP アプリを配布するには ?* クレジットカード* ストアへ開発者登録( または、サイドローディングのためのデジタル署名 )
概要
わんくま同盟 名古屋勉強会 #37 27
• エディションは問わない• ただし、エミュレータを利用するには、 Hyper-V が使えること
* SLAT 対応ハードウェア* CMPXCHG16b 、 PrefetchW 、 LAHF/SAHF サポート ( 古い AMD プロセッサだと未対応の可能性あり )* RAM 4GB 以上* 64bit 版 Windows 10 Pro / Enterprise
• テスト環境では、開発ターゲットに合わせたブランチ (後述 ) を維持しておくこと※ ブランチの更新を止めるには Enterprise と WSUS が必要らしい
Windows 10 (PC)
わんくま同盟 名古屋勉強会 #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) のアップデート ブランチ
わんくま同盟 名古屋勉強会 #37 29
• VS 2015 のエディションは問わない無償の Express や Community でも OK♪
• Windows 10 SDK 、およびVisual Studio Universal Windows app development tools※ ストアへの提出には、プレビュー版はダメ (次ページ )
Visual Studio 2015 と SDK
わんくま同盟 名古屋勉強会 #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 用 リリース
わんくま同盟 名古屋勉強会 #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 ストア ポリシー ( これに違反するとストアの審査に落ちる )* 開発者倫理規定
ストアへの開発者登録 ~ 開発中はなくてもいい。ストアに提出するときには必要
わんくま同盟 名古屋勉強会 #37
DesktopMobile
XboxOne
IoTCore
HoloLensSurface Hub
Universal Windows Platform
Core APIs
UWP アプリの開発
とくに、複数のデバイスに対応する方法は ?
32
わんくま同盟 名古屋勉強会 #37 33
VS2015 RC では「 Windows Universal 」
・ Class Library =.NET の普通の DLL
・Windows Runtime Component = JavaScript からも 使える DLL
・ Unit Test App = ストアアプリ用 MSTest
プロジェクトを作成する
わんくま同盟 名古屋勉強会 #37 34
プロジェクトのプロパティ
UWP ターゲット バージョンの指定 ~ Windows 10 には 「バージョン」がある ! (≒ブランチ )
わんくま同盟 名古屋勉強会 #37 35
マニフェスト ファイル ~ WPF では App.config 、 UWP では Package.appxmanifest
動作対象デバイス
「 Mobile のみ」 などと指定が可能
ン
RTM では、自動的に設定されると思われ
る
ターゲットバージョン
RTM では、自動的に設定される
わんくま同盟 名古屋勉強会 #37 36
例 : StreamSocketControl.ClientCertificate
【参考】 MSDN ドキュメントのバージョン情報
動作対象デバイス
適用開始バージョン
RTM 以降に追加された API では 1.0 より大きい値になると思われる
わんくま同盟 名古屋勉強会 #37 37
UI は XAML で。
書き方は、 WPF とほぼ同じ
"Hello, world!" ~ WPF に慣れていれば楽勝♪
TextB lock を配置し て 、
「 He l lo , UWP! 」
わんくま同盟 名古屋勉強会 #37 38
WPF とほぼ同じ。
Compiled Binding というパフォーマンスの良い手法も導入された( 右の画像は従来方式 )
データ バインディング ~ WPF に慣れていれば、まぁ楽勝
1. バインディング
ソース
2. TextBlock に
バインド
3. バインドされた
データが表示される
わんくま同盟 名古屋勉強会 #37 39
慣れていないと、落とし穴がたくさん !
がんばって♪
async / await ~ UWP の世界は非同期 API ばかり !
ファイルを読み込むだけでも非同期処理 !!
※ WinRT/Metro TIPS :「テキストファイルを簡単に読み書きするには?」より
わんくま同盟 名古屋勉強会 #37 40
画面幅などに応じてデザインの変更を指定できる
複数デバイス対応 その 1: Adaptive Trigger ~ XAML だけでレスポンシブ デザイン
画面幅が狭いときに適用されるスタイル
画面幅が中間のときに適用されるスタイル
わんくま同盟 名古屋勉強会 #37 41
複数デバイス対応 その 2: Xaml View ~ 1 画面に複数の XAML ファイルを割り当て 自動選択⇨
Desktop 用の XAML
Mobile 用の XAML
その他のデバイス用の XAML
共通のコードビハインド
わんくま同盟 名古屋勉強会 #37 42
複数デバイス対応 その 3: デバイス固有 API の使用 ~ その API が利用できるか確かめてから呼び出す
Mobile 固有の API が使えることをチェック
この例ではMobile の [戻る ] ボタン
のイベントハンドラーを
セットしている
※ PlatformSpecific Analyzer を使うと if 文を自動生成できる
わんくま同盟 名古屋勉強会 #37 43
【参考】 システム ワイドな [戻る ] ボタン対応 ~ 前ページの例は、今となってはもう使わない m(_`_)m
ウィンドウ左上の [戻る ] ボタン
Phone の [戻る ] ボタン
タスクバーの [戻る ] ボタン( タブレット モード時 )
WinRT/Metro TIPS: 「システムの[戻る]ボタンに対応するには?」 参照
わんくま同盟 名古屋勉強会 #37 44
※ ストアへ提出するパッケージを作る前に、リリースビルドへ切り替えるのを忘れずに !
AppX パッケージの作成 ~ パッケージの作成ウィザードで、さっくり作れる
はい : ストアへの提出用いいえ : テスト用
わんくま同盟 名古屋勉強会 #37 45
※ パッケージ作成完了時に起動できる。直接起動してからアプリを指定してもよい。
WACK: アプリ認定キット ~ このテストに通らないようなら、ストアで確実にリジェクトされる
わんくま同盟 名古屋勉強会 #37
DesktopMobile
XboxOne
IoTCore
HoloLensSurface Hub
Universal Windows Platform
Core APIsまとめ
UWP のメリット / デメリット
46
わんくま同盟 名古屋勉強会 #37 47
UWP アプリ開発をやりますか ? ( はい /Yes)
• ○ Windows 10 の複数デバイスで動く•○ 安心で安全、 Windows が「腐らない」
• × Windows 7 / 8.x では動かない ( 全てが Window 10 に置き換わった後ではデメリットにならない )
•☆ 面白いよ♪ そして今ならまだ、先頭に立てるチャンス❢
わんくま同盟 名古屋勉強会 #37
ユニバーサルWindows アプリ開発入門♪
2015/11/14BluewaterSoft @biac
ご清聴ありがとうございました