2015年5月1日金曜日

Build2015 Day1 Session 視聴メモ


セッション見ていて気の付いた所メモ 見たら順に更新するスタイルです
既知の所は特に触れないです(RasPi2でも電話でも同じXAMLで動くんだぜ、とか)

2-629 What's New in XAML for Universal Windows Apps
3-626 App Lifecycle: From Activation and Suspension to Background Execution and Multitasking in Universal Windows Apps
2-650 Developing Universal Windows Apps in Visual Studio 2015
3-635 Data Binding: Boost Your Apps' Performance Through New Enhancements to XAML Data Binding
2-639 Microsoft Passport and Windows Hello: Moving Beyond Passwords and Credential Theft
2-757 Leveraging Maps and Location Across Phone, Tablet, and PC in Your Windows Apps
2-658 Design: UX Patterns and Responsive Techniques for Universal Windows Apps
3-677 Debugger Tips and Tricks for .NET Developers with Visual Studio 2015


2-629 What's New in XAML for Universal Windows Apps

Joe Stegman
お薦め度 5億
http://channel9.msdn.com/Events/Build/2015/2-629

  • 一部のControlはMouse・Touchどちらで触ったかでサイズが自動的に変わる Popup Menu等

新しいコントロールのご紹介

  • Pivot…Mobileでは片手操作、DesktopではTab操作 お勧め
  • ContentDialog…子ウィンドウ的なやつ Modal 
  • AutoSuggestBox…IME, Glyphサポート SearchBoxとは別
  • Maps…Offline, 3D, StreetSidePanorama

Tairolingについて

  • Viewは大体再利用可能だが…Tailoringが要る 幾つかのPatternがあるPhoto等が良い例
  • Pattern…SplitView DisplayMode="a|b|c|d" inline, overlay, ...
  • AdativeTrigger使ってWindow幅に合わせてDisplayModeを切り替えていく(ように自分で書く
  • 別の例…OSのContorlPanel(Settings)
  • 広いウィンドウではアイコンのGrid、狭くするとList ここで注目すべきはItemの中身で、サイズに応じて画像とTextの位置が変わる これはRelativePanelによる実装 今まではTemplate事入れ替える所だった
  • Demo…「SplitViewと、SettingsのItemっぽいRelativePanelの使い方」SplitViewのMainPaneにRelativePanelを使ったItemのListを載せるデモ


  • VSMを使ってSplitViewのDisplayModeを変える(さっきやったべや)
  • DataTemplateの方…このDemoではTemplateにUserControlを使い、その中のRelativePanelの中でVSMの定義をしている へー なんでUserControlを噛ましたんだろう?
  • (LiveCodingでハマるおじさん)

XAML Performanceの話

  • ほんとに速くないとダメなとこでもWin10 XAMLはいけるぜ!mjk!
  • スピード要る所にBinding使う奴はいねえよな!(会場笑)
  • Compiled Bindings...{x:Bind}

その他の新しい所

  • 全てのコントロールのプロパティでChangeNotificationが使える(DPなんだが)
  • PerspectiveTransform3D…スタートメニューで使ってるやつ ぐるっと回す、Parallax
  • Window…Chrome, branding, sizing タイトルバーいじりがXAMLからできる 色を変える、タイトルバーを引っこ抜く、デフォのタイトルバーの代わりに自前のカスタムタイトルバーをセットする等
  • Ink Canvas…TerryのCreepyな写真 Palm Rejection、Smoothingもデフォで入ってるよ!
  • Drag and Drop
  • Demo…GridView上に「3D」の箱が乗って、クリックするとくるっと回る(Rotation)、GridViewをスクロールすると視差効果(Parallax) かっこいい Parallaxいいなぁ 無駄に使ってウザがられたい
  • WebView…こっちでもEdge使う?の?

VSのXAMLサポート向上したよ話

  • デザイナ上で各DeviceFamilyに典型的なサイズを表示できるよ
  • Performance Analyzer
  • Visual Tree Inspector
  • 再びLiveCodingの闇に飲まれるPresenter
  • Demo…ControlPanel(Settings)にVSでアタッチしてVisualTree見てる SpyみたいにOverlayで強調表示 Marginとか弄ることも可能 面白い これ素晴らしいな
  • 他にも改善点沢山(といってリストだけ見せる)…気になるのは Silverlight memory improvements(まじか), Software Bitmap Source(これは今まで欲しがられてた奴?), Improved ScrollViewer APIs(わーい), Framework Element Loading Event, Listview Enhancements


2-631 Introducing Win2D: DirectX-Powered Drawing in C#

Simon Tao
お薦め度 3
http://channel9.msdn.com/Events/Build/2015/2-631


(個人的にWin2D はもうアプリで使っているので新しい所だけ…と思ったけど特に新しい話無かったですね Win10UWP、Win8.1、WP8.1で使えるPCLなDirectX ライブラリ 超便利 今現在ばりばり進化中 ゲーム云々より、Bussiness系で表現力上げるようなデモのほうがいいのではと個人的には思った Unityな世の中だし )


3-626 App Lifecycle: From Activation and Suspension to Background Execution and Multitasking in Universal Windows Apps


Shawn Henry, John Vintzel
お薦め度 1億
http://channel9.msdn.com/Events/Build/2015/3-626

(Win8.1でのALM話は既知としてメモ、新しい所だけ  ただ、今までWin32/Desktopしかやってなかった人は一度お勉強しないとダメな大事なところでもある)

Windows.Application.ExtendedExecution namespaceが追加に

  • 今までのDefferedナントカより細かい?
  • Running→Extension→Not Running、Extension状態に入れることが出来る カラオケで延長入れる的な Extensionが終わるときはRevoked EventがFire 
  • といっても延長できるのは1秒以下みたい

Background Execution

(これまでのあらすじから説明)

  • WP7.5…Agent
  • Win8・8.1・WP8…BackgroundTask
  • Win10…「Background Execution Model」
  • BackgroundTaskは基本的に「TriggerBased」予め登録しといたトリガ発生でタスクが呼ばれる感じ この原則は今までと変わらんみたい
  • Win10ではTriggerがたくさん追加になった BluetoothLEWatcher、AcrivitySensor, ToastNotificationAction、SocketActivity、DeviceWatcher、等々
  • Opportunistic Background Task」の追加…「リソースが許す限り動いてていいよ」!!緩い!!!「ただし実行の保証はない」ハイ DefaultとOpportunistic の二種類になる メモリ積んでる量で使えるメモリが制限される、バッテリセーバー時は動かない等、OSの厳しい管理下にあるのは共通
  • In-Proc Background Tasks の追加 今までは基本BGTaskは別プロセス動作だったが、同じProcessで動けるInProcが追加に
  • Application Trigger の追加…Systemでなく、Appから自分で発生させられるトリガ 相手はOpportunistic Task
  • Socket Trigger Task ... App suspend時はBroker(OS)にSocketを預ける 受信した時点で又BrokerからSocketをもらう 寝る前にクロークに草履を預ける的な

まとめ

  • 仕組みはWin10共通
  • 色々新しい仕掛けが加わった
  • でもリソース限られてるのは変わらんからな!

2-650 Developing Universal Windows Apps in Visual Studio 2015

Navit Saxena
お薦め度 2
http://channel9.msdn.com/Events/Build/2015/2-650

(今までKeynoteで出てきたり、UAPメモでお勉強してたUWP話と大体同じ? 質問に時間とったセッションみたい 略)



3-635 Data Binding: Boost Your Apps' Performance Through New Enhancements to XAML Data Binding


Sam Spencer
お薦め度 5億
http://channel9.msdn.com/Events/Build/2015/3-635


  • Runtime時のReflectionでなく、compile時に解決するBinding
  • XAML上は「x:Bind」
  • Demo:Performance BackgroundColorをBindingでセットする■Borderを1600 個並べる Nobindだと 27msec、Classic bindingだと490msec → x:Bindだと数十msec 速い Profiler で見ても一目瞭然の差 メモリ使用量も減る
  • Strongly typed, PageとUserControl(?どういうことだろう), デフォは「OneTime」
  • Demo Pageに直接乗ったTextblockでx:Bindを使う 
  • SampleをDLすれ!とのこと Classic, x:Bind-OneTime, OneWay, etc... Sampleみたほうが早いねこれ
  • Classicでやってた他ElementへのBindingは直で名前書くスタイル {x:Bind LocalTextBlock.Text} みたいな
  • FallbackValue もアリ
DataConversionについて
  • 文字列へ → ToString()で そらそうだ
  • 文字列から → XAMLのパーサーロジック使え これClassicであったっけ?
  • それ以外でコンバータ
  • Onewayの場合の通知は InotifyPropertyChanged/DP/INotifyPropChanged/IObservableVector このへんも同じか?(自信無い)
  • TwoWayはDPが必要 ただしTextboxだけは特例、LostFocusで飛ぶ?


DataTemplate


  • <DataTemplate x:DataType="model:IEmployee">みたいなDataTypeの指定が要る その中ではx:Bind 何とか みたいに名前で引ける
  • ResourceDictionaryの中で作るには、Dictionaryにx:ClassでCodeBehindを指定する まぁそうだよな型指定誰かがしなきゃいけないもんね  …ただそうすると、それってUCなのではという気がちょっとする
  • デモ リソースディクショナリで定義したDataTemplateを使う んーちょっと気を付ければ普通に使える感じだなーという感想

x:Phase - progressive rendering for list items

  • おおお何か怪し気なのが 前にイカさん言ってたやつかこれ
  • Win10ではx:Phase でレンダリングフェーズを指定できる x:Phase="0"が「無指定」 Demo ここで指定して、ぐりぐりスクロール中はRenderしない的な使い方なのかな?(聞き取れなかった)


Binding for Events


  • <Button Click="{x:Bind Model.foobar.hoge[0].bang}>bang</button>
  • パラメータは無しか、EventParameter object sender, routed...ってやつ No overloading 全てのEventで使用可  これは色々使えそう
  • ICommand/EventToCommand behavior を置換可能、だがCommandParameterは渡せない CanExecuteもダメね  (僕はMVVM者では無いのでこのへんあまり気にしないが)
  • デモ EventBining

Binding Lifecycle

  • Bindingの初期化はLoadイベントで行われる Binding.Initialize() (これは明示的に自分でやる必要があるのかな?わからん → 自動生成っぽい) AsyncものはBindings.Update()  StopTracking()で一時停止、Update()で再開  一時停止中にPropety変更になった場合はどうなるんだろう?
  • OneTime bindingはOneWayより軽い その上OneTimeでもUpdate()は使える お得やな
  • ListのBindingではINPCよりINCCがイイヨといってるけど INCCって何?後でお勉強だ
  • 全部のNodeがChangeNotification要るわけじゃないよね?
  • x:Bindのコードはシェアされる (要素ごとに同じBind先を使ってたらそこのロジックはシェアされるという事かな?)


まとめデモ x:Bindを使う場合の自動生成コード MainPage.g.cs を見てみようぜという企画  PageにIComponentConnectorが生えていて、Updateやなんかがここに入っている OneTime/OneWayの場合も  自動生成が随分色々仕事してるなーという印象

こんなときどうする


  • RelativeSource=Self, ElementName=... → 直でElementNameを書く(上で出てた奴)
  • RelativeSource=TempaltedParent → x:Bindではサポートしない TemplateBindingを使うべき
  • Source / DataContext → x:Bindでは固定、子エレメントも変更不可 (DataTemplateは別)


ClassicBindingを使う場合とは


  • 色んなObjectを突っ込んで、それぞれが同じ名前のProperty持ってるときはClassicのが便利(「Title」とか)
  • JsonみたいなUntypedものを突っ込む場合 x:Bindでは無理
  • 「動的なBindの追加と削除」はx:Bindでは無理
  • Styleの中はx:Bindでは無理 Style中のDataTemplateでは可(?)


今後の展望(予定は未定)


  • functions in binding expressions  コンバータではなくBindingそのもので
  • DataTemplateのCodeBehind…今だと他からアクセスしづらい(できない?)けど その辺を何とかしたい的な話
  • Phasing…DataTemplateだけでなく他のControlでもやりたいなと
  • Dictionary…json/xmlでも出来ないものか

「xBindSample」がSDKに入ってる


2-639 Microsoft Passport and Windows Hello: Moving Beyond Passwords and Credential Theft


Anoosh Saboori
お薦め度 2
http://channel9.msdn.com/Events/Build/2015/2-639


Fingerprint, Face, Iris - Windows Biometric Framework で動く (ISVはこのフレームワーク上に自前のもの作れるのかな?CredentialProviderみたいな感じで そのあたりを知りたい…と思ったけど 使い勝手等メインの話だったので略)


2-757 Leveraging Maps and Location Across Phone, Tablet, and PC in Your Windows Apps


Mike Ammerlaan, Rohan Thakkar
お薦め度 2
http://channel9.msdn.com/Events/Build/2015/2-757


今はBing Maps APIで行っているReverse Geocoding…緯度経度→住所名への変換が今後どうなるか知りたい Locationsとの取り合い等も(Win8ではLocationにGeocodingのクチだけ開いたけどReverse Geocodingは出来ず、BingMapsAPIが必要だった)


  • Win8.1では5種類(here含む)あった地図が10では1つになるよ
  • Download、StreetView、Route、3D…
  • One service token ... www.bingmapsportal.com
  • Windows.UI.Xaml.cControls.Maps / Windows.Devices.Geolocation / Windows.Services.Maps   ... (…そんなにUnifiedって感じでも無いが…)
  • LaunchUriAsyncで起動が可能になった 別窓で地図出すだけならこれで充分かも
  • Location ConsentがOS持ち、リクエストベースになった これは良い所
  • Reverse Geocodingは結局わからなかった 自分でAPI叩けばいいんだけども


余談 Mapsを見てると微妙に不安になるのは、HTMLベースで出来るサービスをXAMLで再構成したものは魅力的なんだろうか?という一つの実例だからなのかもしれない いや、機能的にはOSの基盤地図サービスとしては全く文句のないレベルだとは思うが



2-658 Design: UX Patterns and Responsive Techniques for Universal Windows Apps


Jeff Arnold, Carmen Zlateff
お薦め度 5
http://channel9.msdn.com/Events/Build/2015/2-658


  • マウス・タッチでPopupMenuのサイズが変わる件がここでも
  • Pixel Scaling…「Effective Pixel」の件 画面までの距離とピクセル密度でスケーリングを決めるよねと ViewingDistanceはDevice Familyに依存するという ただ難しいよなこれ 動画11分あたり 別セッションで詳しくやるぞと
  • Effective Pixel とサイズの境界…画面幅が…320epxまでが「SmallScreen」…電話に限った話ではなく、PC上の小さいウィンドウもここで考える、720epxまでが所謂タブレット的な2Pain表示可能なもの、それ以上…と三種類くらいで考える
  • 例・MailAppの場合…Smallがメールの中身だけのView、Midがタイトルと内容の2Pane, Largeは加えてフォルダのSplitView Paneも展開


UWP App Pattern


  • 3 elements .... Content / Commanding / Navigation フォトでいうとContentが写真エリア、Commandingが上下AppBar、NavigationがSplitViewのNavPane


UWPで良く使われるNavigation Patternの紹介

Pivots

  • 一番使い出の良さそうな子
  • Large・Small どちらにも馴染む 片手UIには便利
  • 中身がHorizontalに移動するものは避ける
  • 「No more than 6」(制限ではなく、6つ以上は混乱するからやめとけという話)
  • どのInputにも馴染む


Tabs

  • Controlの中身としてはPivot SelectonのボタンUIを別に作る Win10のClockがこれ
  • Small Screenに適する 片手UIには便利 Pivotよりは場所を取る
  • Large Screenでは無駄な余白が増える
  • どのInputにも馴染む
Hub
  • XBOXのDashboardや、Win8のStoreのようなやつ
  • 多くのセクションを選択させる場合に適する
  • どのサイズにも適する 片手UIには便利
  • コンテンツ消費型アプリに適する
  • タッチとゲームコントローラーに最も適する
  • (別セッションでも説明あり)

Master-Detail
  • メールで良くあるパターン PeopleHubでも
  • Win8 TemplateのItemList-DetailViewみたいなやつ
  • Smallでは1ペイン、Largeでは2ペイン表示
  • どのInputにも馴染む

Hamburger
  • (アンドロさんその他で良くあるパターン)Win10ではフォト、マップ等多くがこれを使う
  • Content ページそのものをNavigationさせたい時
  • 実現にはSplitViewを使う事が多いだろう
  • どのInputにも馴染む
  • 悪いことは言わないからボタンは左上につけとけ


Commanding


  • Context Menu
  • Command Bar
  • Mobileのお勧めはBottom CommandBar
  • AppBarと異なり、CommandBarはPageでなくPane毎につけられる Pane毎で使うのがお勧め
  • SecondaryItemsでCommandBarからメニューを生やすことも可能


Content

  • 別セッションで詳しく! → Timのやつ

3-677 Debugger Tips and Tricks for .NET Developers with Visual Studio 2015

Andrew Hall
お薦め度 1億
http://channel9.msdn.com/Events/Build/2015/3-677

スライド4枚だけ、残り50分でひたすらデバッグのデモを見せるストロングスタイル


  • Diagnostic Tools Window 
  • PerfTips…デバッガで1行進めるたびに掛かった実行時間が出る 凄まじい便利さ
  • UI Debugging Tools for XAML - Visual Tree Inspector, Live property Explorer, アプリの部分をクリックするとそこがツリーで展開される (会場内拍手)
  • Android Support…VS Emulator for Android C# Xamarin, C++, Cordovaサポート
…と思ったら割と基本的なデバッガの使い方話が続くので途中は飛ばした
  • CallStackWindowではParameterを表示できる
  • FullScreenは便利
  • TaskWindowを使おう
Speakerが熱心に喋る喋る 今日見た中で一番早口 






0 件のコメント:

コメントを投稿