PDC 2009 (Nov. 17)
PDC 2009 の本番が始まりました、今年は1日減って3日間です。今日は以下のセッションに参加しました。
- キーノート
- [CL09] How Microsoft Visual Studio 2010 Was Built with Windows Presentation Foundation 4
- [VTL32] Concurrency Fuzzing & Data Races
- [FT19] C++ Forever: Interactive Applications in the Age of Manycore
- [CL13] Windows Touch Deep Dive
- [FT03] Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010
キーノート
Ray OzzieらがAzureのテクノロジーの話を、Bob MugliaらがAzureのレイヤーとビジネスの話をしました。ライブ中継があったらしいです。
How Microsoft Visual Studio 2010 Was Built with Windows Presentation Foundation 4
Visual Studio 2010はWPFベースで作られており、その苦労話でした。
WPFを使った理由
- 技術的証明
- アーキテクチャ的理由
- VS2010の重要な機能のため
どのWPF機能を使ったか?
- XAMLを使った宣言UI
- データバインディング
- スタイル テンプレート
- アプリケーション リソース
- Win32との相互運用
- メッセージループとの統合
- DirectWriteを基にした新しいテキスト
段階的アプローチ
- データモデルを定義
- メインウィンドウをWPFに置き換え
- 新しいWindowマネージャとコマンドバーを書く
- 一部のチームをスカウト(繰り返し)
- テスト、テスト、テスト
- テスト用に切り替え
- 古いコードを取り除く
テストのコスト
- 過小評価していた
- しかし、チャンスでもあった(統合テストフレームワーク、UIオートメーション)
- データレイヤーでのテスト
挑戦だったのは
- 混合モード アプリ(ネイティブとマネージ、WPFとHWND Winフォーム)
- 既存の拡張機能が動作するように
- 開発をストップしてはならない
- テキストの品質と性能
混合モード アプリの挑戦
- データレイヤーでの相互運用(マネージコードからネイティブ モデルにバインディング)
- プレゼンテーション レイヤーでの相互運用
デモ:フォーカスが動く問題
テキストと画像の品質
性能
メンバー:約12名とWPFチームとExpressionチーム
Concurrency Fuzzing & Data Races by Madan Musuvathi(MSR)
同時実行は難しい
- 非決定論的
- Heisenbugsの結果
- 観察がバグを修正してしまう
- 大きな生産性の問題
MSRではCuzzとFeatherLiteを開発
- Cuzz: 百万回に1回のバグを見つけるツール
- FeatherLite: 軽量なデータ競合検出
C++ Forever: Interactive Applications in the Age of Manycore
VS2010のネイティブ並列ライブラリー
Agenda
- 同時実行を容易にする
- カスタマイズ可能でスケーラブルな同時実行ランタイム
- 共有状態の管理
- 生産性のための並列開発ツール
並列パターン ライブラリー(PPL):Task, Task group, Paralle Loos
非同期エージェント ライブラリー:Agent, Souce and Target, 協調型送信と受信
https://code.msdn.com/concrtextras にVS2010 Beta2 用のサンプルが更新されていました。
Windows Touch Deep Dive
Win32マルチタッチAPIの話でした。
Agenda
- はじめに
- Windows Touch APIの概要
- 実際のISVからの質問と解答
- デモ
タッチはチャンス
Windows Touch APIs
- WM_GESTURE
- WM_TOUCH
- マニピュレーションと慣性
デモ:3D マニピュレーション
Manycore and the Microsoft .NET Framework 4: A Match Made in Microsoft Visual Studio 2010
Agenda
- なぜ並列か?なぜ今か?
- タスクが新しい最良の友達
- ループを活用
- 並列を可視化
ムーアの法則はメニーコアシフトへ:10年以内に80コアになる
並列化のオーバーヘッドを最小化:実装と実行どちらも
新しい同期プリミティブ
デモ:並列プロファイラーと並列デバッガー
このセッションは昨日のワークショップと同じく Stephen Toubが講演しました。やはりスライドよりコードを書き、受講者からの質問に片っ端から答えるという日本人にはつらいスタイルでした。彼はマネージ並列のプログラム マネージャですが、本当にすごいと思います。
【追記】各セッションのビデオへのリンクを追加しました