Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

6,026 views

Published on

第4回 CenterCLRさんでお話させてもらいました

Published in: Technology
  • Be the first to comment

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

  1. 1. Windows10 でAPIはどう変わったのか 栂井良太 - @garicchi
  2. 2. 自己紹介 栂井良太 (とがいりょうた) 静岡大学 情報学部4年 音声情報処理研究室 Microsoft MVP for Windows Platform Development Twitter : @garicchi
  3. 3. Windows10 発売おめでとうございます One Windows スタートメニュー ウインドウ化できるUniversal Windows App タブレットモード etc…
  4. 4. 進化したWindows10のアプリ • 新しい名前→Universal Windows Platform App (略 UWP) • 今日の目標 • 8.1時代のアプリと何が違うの? • API的にはどう変わったの? • そのまえに • UWPについておさらい
  5. 5. Universal Windows Appとは
  6. 6. Universal Windows App IoTデバイスから大型スクリーンデバイスまで1つのバイナリで https://msdn.microsoft.com/ja-jp/library/windows/apps/dn894631.aspx Device Family One Platform
  7. 7. Adaptive Layout 様々な画面サイズのデバイスファミリに適用可能(Adaptive)な画面レイアウト 1つのバイナリが様々なデバイスで動く→特定のデバイスで動かない→✖ アプリのウインドウ化→他解像度への対応 https://msdn.microsoft.com/ja-jp/library/windows/apps/dn894631.aspx
  8. 8. One SDK 今まで WindowsStore用SDK、WindowsPhone用SDK… これから UWP用 SDK + 各デバイスファミリ用Extension SDK インストールの簡易化 参照マネージャからSDKを参照 何が変わった? SDKの単一化
  9. 9. Mobile Extension SDKを参照してみる 参照前 参照後 APIが使えるかどうか判定する方法 ExtensionSDKだけで結構たくさんのAPIが
  10. 10. One Store すべてのアプリを配信する統一的ストア 現在対応してるのはデスクトップとPhoneのみ WindowsStore WindowsPhone Store 紐付け アプリ内課金 ローミングデータ 今まで これから WindowsStore アプリ内課金 ローミングデータ
  11. 11. One Store もちろんデスクトップ専用やPhone専用アプリとして提出もできる ストア提出時に選択
  12. 12. 余談:UWPアプリパッケージ作成 x86、x64、arm向けに.Netネイティブコンパイル ストアではCPUごとに提出
  13. 13. まとめ UWPとは • 様々なデバイス上で動くワンバイナリなアプリ • 1つのSDKで開発でき、必要に応じて拡張SDKを加える • 1つのStoreで配信 • ↑を実現するためには8.1時代より多くのAPI拡張が必要
  14. 14. UWPで変更があったAPI一覧 (抜粋) ユーザーインターフェース StateTrigger Setter コンパイル時バインディング(x:Bind) 段階レンダリング(x:Phase) 遅延読み込み(x:DeferLoadingStrategy) SplitView RelativePanel CalendarView CalendarDatePicker MediaTransportControls 依存関係プロパテイ変更通知 MapControl OriginalKey Ink関連 CommandBarとAppBarの更新 GridViewの縦スクロール リストスクロール仮想化 AutoSuggetstBox (SearchBox廃止) ContentDialog (Phoneから) Pivot (Phoneから) FontIcon アプリケーションモデル Cotrana LauncherFolderAsync 共有ストレージ プロトコル設定呼び出し LaunchUriFroResultsAsync デバイス 位置情報(RequestAccessAsync) AllJoyn モバイル印刷API Windows.Devices.Power Windows.Device.Midi Windows.Device.Sensors.Custom SmartCardTrigger グラフィックス DirectX12 SoftwareBitmapSource 遠近投影カメラ メディア Httpライブストリーミング(AdaptiveMediaSource) TranscodeVideoProcessor MediaProcessingTrigger GetAsCastingSourceによるキャスト MediaTransportControls JPEGエンコードとデコード MediaOverlay Windows.Media.Effects ネットワーク Httpライブストリーミング(AdaptiveMediaSource) Windows.Devices.BluetoothAdvertisement セキュリティ Windows.Security.Cryptography(ECC暗号化) KeyCredentialManager システム・サービス バッテリー節約機能通知(PowerSettingRegisterNotification) VersionHelper ストレージ PublisherCacheFolder ツール ライブビジュアルツリー ユーザーエクスペリエンス SpeechRecognition Windows.ApplicationModel.DataTransfer.DragDrop ApplicationView.TitleBar Web WebView Edgeモードブラウズ WebViewの新しいAPI 通知 Adaptive Live Tile Interactive Toast バックグラウンドタスク BackgroundTaskの新しいTrigger AppService https://dev.windows.com/ja-jp/getstarted/whats-new-windows-10 今回はこの中でも使えそうな新機能を紹介
  15. 15. ユーザーインターフェース
  16. 16. 新しいUIコントロール • Adaptive Layoutを実現するためのコントロール SplitView RelativePanel • 新しく追加されたコントロール MapControl CalendarView CalendarDatePicker MediaTransportControl
  17. 17. SplitView PaneとContentの分割表示をするコントロール DisplayMode = “Inline” DisplayMode = “Overlay” DisplayMode = “CompactInline” DisplayMode = “CompactOverlay”
  18. 18. 公式が提供するUWPではSplitViewがデフォルト CompactOverlayの例 (天気アプリ) CompactInlineの例 (カレンダーアプリ) コンテンツの位置は変わってない コンテンツの位置が変わる
  19. 19. Compactの場合 • CompactじゃないOverlayやInlineは? • モバイルアプリ Compact部分がない • モバイルのようなサイズの小さいデバイスではコンテンツに集中できるよう にCompact部分は隠す
  20. 20. SplitViewで実現するAdaptiveLayout SplitViewを使うことで様々なサイズのデバイスに合わせたナビゲーションと コンテンツを表示できる
  21. 21. RelativePanel • 様々なサイズに適用するAdaptiveLayoutではコンテンツがよく座標移動す る→絶対座標によるUI配置✖ • あるコントロールに対して相対的な配置をしたい→RelativePanel あるUI要素に対し 相対的な座標指定
  22. 22. RelativePanel 詳しくは→ http://garicchi.com/?p=18905
  23. 23. StateTrigger • VisualStateを自動的に切り替える新しい方法 • VisualState? • XAMLコントロールの変化を複数の状態として定義することができるもの VisualState1 VisualState2 簡単に切り替え
  24. 24. StateTrigger • 従来のVisualStateの切り替え方法 • コードから切り替え(VisualStateManager) • XAML Behaviorを利用した切り替え(GotoStateAction) • 新しい方法(StateTrigger) • ある条件に当てはまった場合、自動的にState切り替え • 現在あるStateTrigger→AdaptiveTrigger (カスタム作成可能)
  25. 25. AdaptiveTrigger • 最初から用意されているStateTriggerの1つ • ウインドウ幅や高さが指定以上になると自動的にStateを切り替える 幅が400以上あれば切り替え • 従来ならウインドウのサイズ変更イベントを受け取ってコードから切り替 える必要があった • XAMLだけで簡易化させた→AdaptiveLayoutを作りやすく!
  26. 26. StateTriggerとSplitViewで実現するAdaptiveLayout • StateTriggerによって自動的にSplitViewの表示を切り替える • (たぶん)UWPの推奨レイアウト • UWPのUI設計はより多くのデバイスに適用できるように設計し なければならない
  27. 27. XAMLビュー • 単一のXAMLだけでは見た目が実現できない場合 • UWPにはXAMLビューというものがある • 単一のXAML (コードビハインドなし) • DeviceFamily-[Name]というフォルダを作ることでデ バイスによってXAMLを切り替え可能
  28. 28. アプリ間通信
  29. 29. Windowsアプリのアプリ間通信 • UWPでのアプリ間通信方式 • Data Contract • URLProtocol • Shared Storage Access Manager • URL Protocol (Result付き) • App Service • UWPではセキュリティ上、アプリ間通信方法は限られている • garicchicom:// ストアアプリ時代から UWPから
  30. 30. DataContract • UWPの標準的なデータ共有方法 OS App1 ①共有ターゲット登録 ③起動 App2 ②データ共有 契約(Contract) • 呼び出す側は呼び出される側のアプリを指定できない(データの種類だけ) • 呼び出された側がちゃんとデータが処理されたかどうかもわからない http://windows.microsoft.com/ja-jp/windows-8/charms-tutorial
  31. 31. 共有チャーム • チャーム廃止 • 8.1までのDataContractの呼び出し方は共有チャーム • 10からは共有ボタンを作り、APIを呼ぶ http://windows.microsoft.com/ja-jp/windows-8/charms-tutorial
  32. 32. URLプロトコル • 8.1時代からあったURLスキームによるアプリ呼び出し OS App1 ①URLスキーム登録 (例 myApp: ③起動 App2 ②URLスキーム呼び出し (例 myapp:?data=“hoge” • 8.1まではデータを一方的に送信するだけだった • クエリによるテキストデータ送信 • ファイル送信 (Shared Storage Access Manager)
  33. 33. Launch for Result • Windows10からは結果を取得できるように OS App1 ①URLスキーム登録 (例 myApp: ③起動 App2 ②URLスキーム呼び出し (例 myapp:?data=“hoge” ④結果の返却 • 永続的な通信→✖ • 呼び出したアプリ側からはアプリがちゃんと処理してくれたかが わかる http://garicchi.com/?p=18985
  34. 34. App Services • UWPの大きな追加機能の一つ • バックグランドで起動し別のアプリにデータを提供 OS App1 ②バックグラウンド起動 App2 ①App Service呼び出し ③メッセージ送信 ④返却 • プロトコル呼び出しとの違い • 呼び出すアプリが一意に特定 • バックグラウンド起動 • 永続的なコネクション
  35. 35. App Servicesの特徴 • 呼び出すアプリが一意に特定される • 他人のアプリと連携は想定されていない • 同じ作者の別アプリ間連携が目的→機能分離? http://www.microsoftvirtualacademy.com/training- courses/a-developers-guide-to-windows-10
  36. 36. UWPのアプリ間通信 • 結果の帰ってくるLaunch for Result • サービスとしてのApp Service • Windows10でアプリ間通信は強化されてアプリ間連携の幅が強 化された • 連携する複数アプリの可能性がでてきた
  37. 37. バックグラウンドタスク
  38. 38. BackgroundTask • UWPは基本的にアプリを閉じるとタスクを実行できなくなる • BackgroundTaskに登録しておくとTriggerが発動したときに別 のプロセスとして処理を実行できる App System System Trigger BackgroundTask 別プロセス BackgroundTask登録
  39. 39. Background Task Triggerの例 • Time Trigger • 一定時間でTaskを実行 • 最短15分間隔 • System Trigger • システムのあらゆるイベント時にTask実行 • 例 Internet Available , Power State Changed • Push Notification Trigger • プッシュ通知が来た時にTask実行
  40. 40. UWPで追加されたTrigger • UWPでBackgroundTask Triggerが結構追加 SystemTrigger TimeTrigger MaintenanceTrigger DeviceUseTrigger DeviceServicingTrigger PushNotificationTrigger CachedFileUpdaterTrigger DeviceConnectionChangeTrigger GattCharacteristicNotificationTrigger RfcommConnectionTrigger LocationTrigger AppointmentStoreNotificationTrigger ContactStoreNotificationTrigger EmailStoreNotificationTrigger BluetoothLEAdvertisementWatcherTrigger BluetoothLEAdvertisementPublisherTrigger DeviceWatcherTrigger ActivitySensorTrigger SensorDataThresholdTrigger ToastNotificationHistoryChangedTrigger ToastNotificationActionTrigger ApplicationTrigger MediaProcessingTrigger SocketActivityTrigger Windows8.1WindowsPhone8.1 Windows10で追加 Windows10 UWPで使えるTrigger http://www.microsoftvirtualacademy.com/training- courses/a-developers-guide-to-windows-10
  41. 41. 通知
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. Interactive Toast Template Scheme • トースト通知もxmlを編集して発行 デフォルトのxml inputとaction ToastのActivationKind http://blogs.msdn.com/b/tiles_and_toasts/archive/2015/07/02/adaptive-and-interactive-toast-notifications-for-windows-10.aspx
  47. 47. UWPの通知 • トーストやライブタイルなどの通知での表現力が向上 • タイルUIはUWPの魅力の一つ • 様々なデバイスでインタラクティブな通知ができるアプリの作成が可能 に
  48. 48. Cortana
  49. 49. 日本語版Cortana Windows10 Insider preview build 10532で搭載 UWPアプリもCortanaに対応させることができる
  50. 50. Voice Command Definition • Cortanaに話しかけてアプリを起動することが できる • VCDというxmlを作る • 例 (明日の天気を知りたい • ↓ • {when}[の天気を知りたい] • ↓ • 天気アプリ起動
  51. 51. Universal Windows Appの開発
  52. 52. AppTemplate • 自作テンプレートを作りました • ここからダウンロード • http://garicchi.com/?p=18996 • ハンバーガーメニュー実装済み • 今後公式からちゃんとしたテンプレート 出てくる?
  53. 53. さらに勉強するには • 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

×