kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Windows Developer Days 二日目

Microsoft Windows Developer Days (WDD) ホーム

基調講演


D
動画が出たときはちょっとびっくりしたけど、そのあと続く西脇さんのプレゼンテーションはさすがというしかない。ちゃんと現代のタブレットのニーズに合わせてWindows 8でも同等以上のことができるということが非常によくわかる。あれ見れば作ってみようと思う人は少なからずいるんじゃないかなぁ。
使っているのはサムソンのスレートのようで、Core i5の内蔵GPUでもかなり快適なようです。ONKYOさんがWindows 8のWXGAサイズに対応したものが程よい価格ですね。64GBのSSDはちょっと少ないけど、まぁ使う分には何とか。3Gはないのか。
【PC Watch】 オンキヨー、Core i7スレートPCのメモリ/SSD強化モデル
そのあとの事例紹介とコーディングデモ。楽天レシピや楽天商店のMetro対応版はなかなかびっくりしたけど、楽天商店もあのWebサイトがダサいとか使いづらいという声があるってことわかっていたのか。あの新聞チラシみたいなUXが日本人大好きっていう調査結果が出ていたような気がするんだけど。
前半はともかく、後半は総じて基調講演らしい基調講演でした。

LINQ to Everything : データソース・言語を超える LINQ の未来

スポンサーセッション枠だけど、完全な技術セッション。@neueccさんがLINQ愛を熱く語っていました。IEnumableは種族(言語)を超える。
勤務先のgloopsさんではほぼ入れ替わらないマスターのようなものはアプリケーションサーバー側のキャッシュオンメモリにおいて、とにかくSQL Serverに負担をかけない(IISはいくらでも並列させる)という方針のようです。
オンプレミスの業務系では諸般の事情で台数が決まっていることもあるので、RDBMS側で頑張るというか、RDBMSの一貫性に依存してある意味楽をするということもあるので、方法次第ですよね。
RDBMSというか、LEFT OUTER JOINよりもLINQのGroupJoinのほうが便利なケース(副作用含んで)もあるという話など大変ためになりました。セッション資料公開してね!

アプリの実行環境とライフサイクル

WDD で、アプリのライフサイクルと実行環境の解説を担当します - 荒井省三のBlog - Site Home - MSDN Blogs
荒井さんのお話。セッションでは出てこなかったけど、この話も読んでおくといいと思います。
Metro スタイル アプリからメモリを回収する - Building Windows 8 - Site Home - MSDN Blogs
要はMetro StyleアプリケーションではWindows Phoneと同じようにと言ったらあれですが、もう少し高度なというか、理不尽ではない(?)OOM Killerがあるということですか。
アプリケーションの情報はレジストリのHKCUでGUID管理、つまりはMetro Styleアプリケーションはユーザーごと。デスクトップアプリのようにグローバルという設定はできない。
ユーザー操作での(アプリを下に引っ張って行って)終了は実はシステム的には例外。サスペンド通知で5秒以内の応答必須。しかしシステムにおける絶対時間なので、マシンスペックが遅いと強制終了させられる。
WinRTの実態はDCOMだよんみたいなことを理解させてくれて、非常にためになりました。

Windows ランタイム概要

順番が前後したけど、荒井さんのとセットで聞いたので、別口でためになりました。Metroでは応答速度命ということで、厳しい制約があります。

  • 起動に15秒以上かかるなら独自のスプラッシュスクリーンを用意しないと強制終了(描画は自前)。たとえば基調講演で見せたMetro版バイオ5も時間がかかるので、独自のスプラッシュスクリーンを用意していたようです。
  • サスペンド通知に応答するのは5秒以内。上でも書きましたが、マシンスペックに依存するので実際は2秒以内推奨。
  • マニフェスト。PCで使うリソースを宣言する。起動時に「これこれ使いますよ」と明示的にユーザーの確認を取る。確認撮らなくて使えるのはアプリケーションごとのProtect Storageくらい(キャッシュ、設定ファイル、中断用ファイルを置く程度)。
  • アプリケーションのパッケージ(appx)ファイルにはブロックマップと呼ばれる、パッケージ内に含まれるすべてのファイルのハッシュが登録されている。一つでも異なればバージョンアップ。
  • MetroアプリケーションではOSにソーシャル関係の情報が統合されているので、各アプリケーションで「どのプラットフォームにアクセスする」ということを意識する必要はない
  • MetroアプリケーションのインストールではOSが責任を持つ。Windows Installerは介在しない。したがってインストール時に独自でレジストリに書くなども不可。もともとWinRTではレジストリアクセスなんてできないけど。

ローミング - PC の境界を超えた作業状態の維持

唯一期待はずれだったセッション。ローミングに入るまでが長すぎた。結局のところアプリケーションに対するローミングの説明はあまりなく。

  • AppData.LocalFolderからAppData.RoamingFolderに書き換えるだけです
  • ローミングデータの更新通知を素直に書くと非同期なんで死ぬ。同期させるには自前でDispatcher.Invoke呼び出し。

…これを書いている途中で岩永さんがものすごく詳しくまとめてくれました。必見。
非同期処理とディスパッチャー | ++C++; // 未確認飛行 C ブログ
知りたかったのは仕組みとか、推奨パターン(これは最後に出てきた)、MSのクラウドを使うという話だったけど、じゃあEnterprise向けに独自のローミングプロバイダーを提供することができるのか?というあたり。
ローミング単独でやるんじゃなくて、Metroアプリケーション概要2みたいなほうがよかったんじゃないかと思う。

もし普通の開発チームが、「Visual Studio 11」で開発環境を整えたら

プランニングポーカーを使用した相対的な見積もりの実演は参考になりました。「三人寄れば文殊の知恵」じゃないですが、各個人によって見積もりが多少ずれても仕方ない。重要なのはそのずれがどうして発生したのか、メンバーで共有して、合意を取って修正すること。
業務でも「とりあえず今日必要だからザクッと」とよく言われるんですが、それが結局のところ独り歩きしてしまうことも少なくないし、ちゃんとした見積もりでも一人で考えると、きっとどこかに漏れがある。途中から聞いたので、toggeterもどうぞ。
#wddjp PL-005 & PL-006 まとめ - Togetterまとめ