windows10でapiはどう変わったのか

53
Windows10 で API ででででででででで でででで - @garicchi

Upload: ryota-togai

Post on 09-Jan-2017

4.223 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: windows10でapiはどう変わったのか

Windows10 で API はどう変わったのか栂井良太 - @garicchi

Page 2: windows10でapiはどう変わったのか

自己紹介

栂井良太 ( とがいりょうた )

静岡大学 情報学部 4 年音声情報処理研究室

Microsoft MVP forWindows Platform Development

Twitter : @garicchi

Page 3: windows10でapiはどう変わったのか

Windows10 発売おめでとうございます

One Windowsスタートメニューウインドウ化できる Universal Windows Appタブレットモードetc…

Page 4: windows10でapiはどう変わったのか

進化した Windows10 のアプリ

• 新しい名前→ Universal Windows Platform App ( 略 UWP)

• 今日の目標• 8.1 時代のアプリと何が違うの?• API 的にはどう変わったの?

• そのまえに• UWP についておさらい

Page 5: windows10でapiはどう変わったのか

Universal Windows App とは

Page 6: windows10でapiはどう変わったのか

Universal Windows AppIoT デバイスから大型スクリーンデバイスまで 1 つのバイナリで

https://msdn.microsoft.com/ja-jp/library/windows/apps/dn894631.aspx

Device Family

One Platform

Page 7: windows10でapiはどう変わったのか

Adaptive Layout

様々な画面サイズのデバイスファミリに適用可能 (Adaptive) な画面レイアウト1 つのバイナリが様々なデバイスで動く→特定のデバイスで動かない→✖アプリのウインドウ化→他解像度への対応

https://msdn.microsoft.com/ja-jp/library/windows/apps/dn894631.aspx

Page 8: windows10でapiはどう変わったのか

One SDK

今までWindowsStore 用 SDK 、 WindowsPhone 用 SDK…

これからUWP 用 SDK + 各デバイスファミリ用 Extension SDK

インストールの簡易化 参照マネージャから SDK を参照

何が変わった?

SDK の単一化

Page 9: windows10でapiはどう変わったのか

Mobile Extension SDK を参照してみる

参照前 参照後

API が使えるかどうか判定する方法

ExtensionSDK だけで結構たくさんの API が

Page 10: windows10でapiはどう変わったのか

One Store

すべてのアプリを配信する統一的ストア現在対応してるのはデスクトップと Phone のみ

WindowsStore WindowsPhoneStore

紐付け

アプリ内課金ローミングデータ

今まで これから

WindowsStore

アプリ内課金ローミングデータ

Page 11: windows10でapiはどう変わったのか

One Storeもちろんデスクトップ専用や Phone 専用アプリとして提出もできる

ストア提出時に選択

Page 12: windows10でapiはどう変わったのか

余談 :UWP アプリパッケージ作成

x86 、 x64 、 arm 向けに .Net ネイティブコンパイル

ストアでは CPU ごとに提出

Page 13: windows10でapiはどう変わったのか

まとめ UWP とは

• 様々なデバイス上で動くワンバイナリなアプリ• 1 つの SDK で開発でき、必要に応じて拡張 SDK を加え

る• 1 つの Store で配信

• ↑ を実現するためには 8.1 時代より多くの API 拡張が必要

Page 14: windows10でapiはどう変わったのか

UWP で変更があった API 一覧 ( 抜粋 )ユーザーインターフェース

StateTriggerSetterコンパイル時バインディング (x:Bind)段階レンダリング (x:Phase)遅延読み込み (x:DeferLoadingStrategy)SplitViewRelativePanelCalendarViewCalendarDatePickerMediaTransportControls依存関係プロパテイ変更通知

MapControlOriginalKeyInk 関連

CommandBar と AppBar の更新

GridView の縦スクロール

リストスクロール仮想化

AutoSuggetstBox (SearchBox 廃止 )ContentDialog (Phone から )Pivot (Phone から )FontIcon

アプリケーションモデルCotranaLauncherFolderAsync共有ストレージ

プロトコル設定呼び出し

LaunchUriFroResultsAsync

デバイス位置情報 (RequestAccessAsync)AllJoynモバイル印刷 APIWindows.Devices.PowerWindows.Device.MidiWindows.Device.Sensors.CustomSmartCardTrigger

グラフィックスDirectX12SoftwareBitmapSource遠近投影カメラ

メディアHttp ライブストリーミング(AdaptiveMediaSource)TranscodeVideoProcessorMediaProcessingTriggerGetAsCastingSource によるキャスト

MediaTransportControlsJPEG エンコードとデコード

MediaOverlayWindows.Media.Effects

ネットワークHttp ライブストリーミング(AdaptiveMediaSource)Windows.Devices.BluetoothAdvertisement

セキュリティWindows.Security.Cryptography(ECC 暗号化 )KeyCredentialManager

システム・サービスバッテリー節約機能通知 (PowerSettingRegisterNotification)VersionHelper

ストレージPublisherCacheFolder

ツールライブビジュアルツリー

ユーザーエクスペリエンスSpeechRecognitionWindows.ApplicationModel.DataTransfer.DragDropApplicationView.TitleBar

WebWebView Edge モードブラウズ

WebView の新しい API

通知Adaptive Live TileInteractive Toast

バックグラウンドタスクBackgroundTask の新しい TriggerAppService

https://dev.windows.com/ja-jp/getstarted/whats-new-windows-10

今回はこの中でも使えそうな新機能を紹介

Page 15: windows10でapiはどう変わったのか

ユーザーインターフェース

Page 16: windows10でapiはどう変わったのか

新しい UI コントロール• Adaptive Layout を実現するためのコントロール

SplitView RelativePanel

• 新しく追加されたコントロールMapControl CalendarView CalendarDatePicker MediaTransportControl

Page 17: windows10でapiはどう変わったのか

SplitViewPane と Content の分割表示をするコントロール

DisplayMode = “Inline” DisplayMode = “Overlay”

DisplayMode = “CompactInline” DisplayMode = “CompactOverlay”

Page 18: windows10でapiはどう変わったのか

公式が提供する UWP では SplitView がデフォルト

CompactOverlay の例 (天気アプリ )

CompactInline の例 ( カレンダーアプリ )

コンテンツの位置は変わってない

コンテンツの位置が変わる

Page 19: windows10でapiはどう変わったのか

Compact の場合• Compact じゃない Overlay や Inline は?• モバイルアプリ

Compact部分がない• モバイルのようなサイズの小さいデバイスではコンテンツに集中できるよ

うに Compact 部分は隠す

Page 20: windows10でapiはどう変わったのか

SplitView で実現する AdaptiveLayoutSplitView を使うことで様々なサイズのデバイスに合わせたナビゲーションとコンテンツを表示できる

Page 21: windows10でapiはどう変わったのか

RelativePanel• 様々なサイズに適用する AdaptiveLayout ではコンテンツがよく座標移動

する→絶対座標による UI 配置✖• あるコントロールに対して相対的な配置をしたい→ RelativePanel

ある UI 要素に対し

相対的な座標指定

Page 22: windows10でapiはどう変わったのか

RelativePanel

詳しくは→ http://garicchi.com/?p=18905

Page 23: windows10でapiはどう変わったのか

StateTrigger• VisualState を自動的に切り替える新しい方法

• VisualState?• XAML コントロールの変化を複数の状態として定義することができるもの

VisualState1 VisualState2

簡単に切り替え

Page 24: windows10でapiはどう変わったのか

StateTrigger• 従来の VisualState の切り替え方法

• コードから切り替え (VisualStateManager)

• XAML Behavior を利用した切り替え (GotoStateAction)

• 新しい方法 (StateTrigger)• ある条件に当てはまった場合、自動的に State切り替え• 現在ある StateTrigger→AdaptiveTrigger ( カスタム作成可能 )

Page 25: windows10でapiはどう変わったのか

AdaptiveTrigger• 最初から用意されている StateTrigger の 1 つ

• ウインドウ幅や高さが指定以上になると自動的に State を切り替える

幅が 400以上あれば切り替え

• 従来ならウインドウのサイズ変更イベントを受け取ってコードから切り替える必要があった

• XAML だけで簡易化させた→ AdaptiveLayout を作りやすく!

Page 26: windows10でapiはどう変わったのか

StateTrigger と SplitView で実現する AdaptiveLayout

• StateTrigger によって自動的に SplitView の表示を切り替える• ( たぶん )UWP の推奨レイアウト

• UWP の UI 設計はより多くのデバイスに適用できるように設計しなければならない

Page 27: windows10でapiはどう変わったのか

XAML ビュー

• 単一の XAML だけでは見た目が実現できない場合• UWP には XAML ビューというものがある

• 単一の XAML ( コードビハインドなし )• DeviceFamily-[Name] というフォルダを作ることで

デバイスによって XAML を切り替え可能

Page 28: windows10でapiはどう変わったのか

アプリ間通信

Page 29: windows10でapiはどう変わったのか

Windows アプリのアプリ間通信

• UWP でのアプリ間通信方式• Data Contract• URLProtocol• Shared Storage Access Manager

• URL Protocol (Result 付き )• App Service

• UWP ではセキュリティ上、アプリ間通信方法は限られている• garicchicom://

ストアアプリ時代から

UWP から

Page 30: windows10でapiはどう変わったのか

DataContract• UWP の標準的なデータ共有方法

OS

App1

①共有ターゲット登録

③起動App2

②データ共有

契約 (Contract)

• 呼び出す側は呼び出される側のアプリを指定できない ( データの種類だけ )

• 呼び出された側がちゃんとデータが処理されたかどうかもわからないhttp://windows.microsoft.com/ja-jp/windows-8/charms-tutorial

Page 31: windows10でapiはどう変わったのか

共有チャーム

• チャーム廃止• 8.1 までの DataContract の呼び出し方は共有チャーム

• 10 からは共有ボタンを作り、 API を呼ぶ

http://windows.microsoft.com/ja-jp/windows-8/charms-tutorial

Page 32: windows10でapiはどう変わったのか

URL プロトコル

• 8.1 時代からあった URL スキームによるアプリ呼び出し

OS

App1

①URL スキーム登録 (例 myApp:

③起動App2

②URL スキーム呼び出し (例 myapp:?data=“hoge”

• 8.1 まではデータを一方的に送信するだけだった• クエリによるテキストデータ送信• ファイル送信 (Shared Storage Access Manager)

Page 33: windows10でapiはどう変わったのか

Launch for Result• Windows10 からは結果を取得できるように

OS

App1

①URL スキーム登録 (例 myApp:

③起動App2

②URL スキーム呼び出し (例 myapp:?data=“hoge”

④結果の返却

• 永続的な通信→✖• 呼び出したアプリ側からはアプリがちゃんと処理してくれたか

がわかる

http://garicchi.com/?p=18985

Page 34: windows10でapiはどう変わったのか

App Services• UWP の大きな追加機能の一つ• バックグランドで起動し別のアプリにデータを提供

OS

App1②バックグラウンド起動

App2

①App Service 呼び出し

③メッセージ送信

④返却

• プロトコル呼び出しとの違い• 呼び出すアプリが一意に特定• バックグラウンド起動• 永続的なコネクション

Page 35: windows10でapiはどう変わったのか

App Services の特徴

• 呼び出すアプリが一意に特定される• 他人のアプリと連携は想定されていない• 同じ作者の別アプリ間連携が目的→機能分離?

http://www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10

Page 36: windows10でapiはどう変わったのか

UWP のアプリ間通信

• 結果の帰ってくる Launch for Result• サービスとしての App Service

• Windows10 でアプリ間通信は強化されてアプリ間連携の幅が強化された

• 連携する複数アプリの可能性がでてきた

Page 37: windows10でapiはどう変わったのか

バックグラウンドタスク

Page 38: windows10でapiはどう変わったのか

BackgroundTask

• UWP は基本的にアプリを閉じるとタスクを実行できなくなる• BackgroundTask に登録しておくと Trigger が発動したときに別のプロセスとして処理を実行できる

App

System

System

Trigger

BackgroundTask 別プロセス

BackgroundTask登録

Page 39: windows10でapiはどう変わったのか

Background Task Trigger の例

• Time Trigger• 一定時間で Task を実行• 最短 15 分間隔

• System Trigger• システムのあらゆるイベント時に Task 実行• 例 Internet Available , Power State Changed

• Push Notification Trigger• プッシュ通知が来た時に Task 実行

Page 40: windows10でapiはどう変わったのか

UWP で追加された Trigger• UWP で BackgroundTask Trigger が結構追加

SystemTriggerTimeTriggerMaintenanceTriggerDeviceUseTriggerDeviceServicingTriggerPushNotificationTrigger

CachedFileUpdaterTriggerDeviceConnectionChangeTriggerGattCharacteristicNotificationTriggerRfcommConnectionTriggerLocationTrigger

AppointmentStoreNotificationTriggerContactStoreNotificationTriggerEmailStoreNotificationTriggerBluetoothLEAdvertisementWatcherTriggerBluetoothLEAdvertisementPublisherTriggerDeviceWatcherTriggerActivitySensorTriggerSensorDataThresholdTriggerToastNotificationHistoryChangedTriggerToastNotificationActionTriggerApplicationTriggerMediaProcessingTriggerSocketActivityTrigger

Win

dows

8.1

Win

dows

Phon

e8.1

Windows10

で追

Windows10 UWP で使える Trigger http://www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10

Page 41: windows10でapiはどう変わったのか

通知

Page 42: windows10でapiはどう変わったのか

UWP の通知

• Adaptive Live Tile• デバイス解像度に合わせた表示を行うライブタイル

• Interactive Toast• トースト通知内で様々な操作ができるように

http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/06/30/adaptive-tile-templates-schema-and-documentation.aspx

http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/07/02/adaptive-and-interactive-toast-notifications-for-windows-10.aspx

Page 43: windows10でapiはどう変わったのか

Adaptive Live Tile

• UWP でライブタイルの自由度↑• ライブタイルで様々な表現が可能に

• 様々なデバイス解像度に適用できるように• ライブタイルでも Adaptive UI• どんな解像度でも満足に見えるように

http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/06/30/adaptive-tile-templates-schema-and-documentation.aspx

Page 44: windows10でapiはどう変わったのか

Adaptive Tile Templates Scheme• ライブタイルは xml を編集して通知を発行する• UWP で xml のスキーマが増えた

デフォルトの xml

テキストの alignment Colmun 表示背景画像の明るさ

http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/06/30/adaptive-tile-templates-schema-and-documentation.aspx

Page 45: windows10でapiはどう変わったのか

Interactive Toast• 今までのトースト通知• 通知を表示するだけ• その通知にたいするアクションを作れなかった

• UWP のトースト通知• 通知に対するアクション (例 SNS の返信 ) ができるようになってより

インタラクティブに• 通知としての表現力↑

https://msdn.microsoft.com/ja-jp/library/windows/apps/hh761494.aspx

http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/07/02/adaptive-and-interactive-toast-notifications-for-windows-10.aspx

Page 46: windows10でapiはどう変わったのか

Interactive Toast Template Scheme

• トースト通知も xml を編集して発行

デフォルトの xml

input と actionToast の ActivationKind

http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/07/02/adaptive-and-interactive-toast-notifications-for-windows-10.aspx

Page 47: windows10でapiはどう変わったのか

UWP の通知

• トーストやライブタイルなどの通知での表現力が向上• タイル UI は UWP の魅力の一つ• 様々なデバイスでインタラクティブな通知ができるアプリの作成が可

能に

Page 48: windows10でapiはどう変わったのか

Cortana

Page 49: windows10でapiはどう変わったのか

日本語版 Cortana

Windows10 Insider preview build 10532 で搭載UWP アプリも Cortana に対応させることができる

Page 50: windows10でapiはどう変わったのか

Voice Command Definition

• Cortana に話しかけてアプリを起動することができる

• VCD という xml を作る• 例 (明日の天気を知りたい• ↓• {when}[ の天気を知りたい ]• ↓• 天気アプリ起動

Page 51: windows10でapiはどう変わったのか

Universal Windows App の開発

Page 52: windows10でapiはどう変わったのか

AppTemplate• 自作テンプレートを作りました• ここからダウンロード• http://garicchi.com/?p=18996

• ハンバーガーメニュー実装済み• 今後公式からちゃんとしたテンプレー

ト出てくる?

Page 53: windows10でapiはどう変わったのか

さらに勉強するには

• Windows-universal-samples – Github• https://github.com/Microsoft/Windows-universal-samples

• A Developer's Guide to Windows 10 - Microsoft Virtual Academy• http://

www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10

• Windows アプリ開発入門 – garicchi.com• http://garicchi.com/?page_id=111