Windowsフォームで大丈夫か?一番良いのを頼む。

15,836 views

Published on

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
15,836
On SlideShare
0
From Embeds
0
Number of Embeds
1,265
Actions
Shares
0
Downloads
125
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Windowsフォームで大丈夫か?一番良いのを頼む。

  1. 1. Windowsフォームで大丈夫か?一番良いのを頼む。 グレープシティ株式会社 八巻 雄哉 blog:d.hatena.ne.jp/Yamaki/ twitter:yamaki00 Developers Summit 2011
  2. 2. あれは今から36万…いや、4年前デブサミ2007 Developers Summit 2011
  3. 3. Windowsアプリケーション開発に使用しているUI技術は? Developers Summit 2011
  4. 4.  1993年にVisual Basic向けのコンポーネントを販売開始 Microsoft社の開発プラットフォームで製品を 提供し続けて17年のコンポーネントベンダー 多彩なラインナップを誇る製品群  日本仕様を強みとした 自社開発製品  海外の優れた製品を 日本語版としてローカライズ Developers Summit 2011
  5. 5. グレープシティ 製品利用者の割合 WPF Silverlight 2% 2% ASP.NET Web フォーム 23% Windows フォーム 73% Developers Summit 2011
  6. 6. MSDNビデオライブラリWindowsでデスクトップアプリケーション開発を開始する Developers Summit 2011
  7. 7. なぜWPF/Silverlightに 移行しないのか? Developers Summit 2011
  8. 8. デメリットとメリット 移行する 移行したことで コスト 得られるメリット 移行する 移行しないこと リスク によるリスク Developers Summit 2011
  9. 9. デメリット < メリット 移行する コスト 移行する リスク 移行したことで 得られるメリット 移行しないこと によるリスク Developers Summit 2011
  10. 10. トラブルにあわないためにちょっと待って!移行する前にまず確認 Developers Summit 2011
  11. 11. 一般的な比較表 Visual Basic 6.0 Windowsフォーム WPFサポート - ✓ ✓64ビット - ✓ ✓Visual Style - ✓ ✓開発環境 Visual Basic 6.0 Visual Studio 2010 Visual Studio 2010マネージコード - ✓ ✓描画技術 GDI GDI/GDI+ Direct3Dベクター描画 - - ✓2D、3D、 - - ✓メディアの統合UI記述 Visual Basic Visual Basic、C#… XAML Developers Summit 2011
  12. 12. 今回取り上げる要素 描画技術 UIレイアウト 業務コントロール 将来性 Developers Summit 2011
  13. 13. Windowsフォームで大丈夫か?一番良いのを頼む。描画技術 Developers Summit 2011
  14. 14. 描画パフォーマンス WPFはGPUを活用しているから Windowsフォームよりも 描画パフォーマンスが良い 本当にそうなのか? Developers Summit 2011
  15. 15. GPU性能の進化 GPUはムーアの法則を超えるスピードで進化 GPU名 スコアA スコアB 発売時期 Radeon 9800 (AGP) 27 998 2003年Q2 Radeon X1800 XT 100 5700 2005年11月 Radeon HD 2900 XT 240 11137 2007年5月 Radeon HD 4870 434 15943 2008年6月 ATI Radeon HD 5970 824 18533 2010年5月 GeForce 6800 47 2008 2004年Q4 GeForce 7900 GTX 150 6953 2006年3月 GeForce 8800 GT 262 12676 2007年11月 GeForce GTX 280 470 16257 2008年6月 GeForce GTX 580 965 18376 2010年11月 スコアA:http://www.leoplanet.co.jp/3d_videochip.htm スコアB:http://mizushima.ne.jp/topic /GPU-benchmark/index.php Developers Summit 2011
  16. 16. パフォーマンス コントロールの描画DEMO Developers Summit 2011
  17. 17. 即時モード vs 保持モード Windowsフォーム(GDI、GDI+)  即時モード WPF  保持モード Developers Summit 2011
  18. 18. 即時モード  命令型描画 アプリケーション  アプリケーション自身が GDI/GDI+ 直接描画DrawLine  描画命令の実行と実画面の DrawText フレームバッファへの描画 DrawImage が同期  ディスプレイの更新に同期実画面のフレームバッファ させる手段は基本的にない Developers Summit 2011
  19. 19. 保持モード WPF  データ駆動型描画 アプリケーション  UIスレッドでは描画データ ビジュアル オブジェクト を生成して格納(シリアル化)  描画スレッドでビジュアル オブジェクトをスキャンし、 Direct3Dのバッファに描画Media Integration Layer (UIスレッドと非同期)(wpfgfx_v****.dll)  DirectXランタイムにより ディスプレイの更新に同期 Direct3Dのサーフェス Developers Summit 2011
  20. 20. パフォーマンス コントロールの描画DEMO Developers Summit 2011
  21. 21. DataGridのスクロールWindows FormのDataGridViewでは問題なくできていた50列×1000行程度のデータの縦スクロールのパフォーマンスが非常に悪い Developers Summit 2011
  22. 22. パフォーマンス データグリッドDEMO Developers Summit 2011
  23. 23. UIの仮想化 強力かつ柔軟なレイアウトシステムの特性  パネルに子要素が追加されるたびに、再帰的に 子要素の大きさと位置の測定が行われる  リスト項目を大量に表示するコントロールでは、 パフォーマンス負荷となる 画面に表示されている部分のオブジェクト のみを生成するのがUIの仮想化  レイアウトプロセスの負荷低減  メモリ使用量の削減 Developers Summit 2011
  24. 24. 標準DataGrid vs FlexGrid 標準DataGrid  列方向にはUIの仮想化が行われない FlexGrid  行と列の双方向にUIの仮想化が行われる Developers Summit 2011
  25. 25. パフォーマンス データグリッドPerformance Profiling Tools for WPFで視るDEMO Developers Summit 2011
  26. 26. フレックスグリッドFlexGrid for WPF 1.0J FlexGrid for Silverlight 1.0J 2011年夏 発売予定  2011年3月14日 発売予定 http://www.grapecity.com/japan/FlexgridSilverlight/demo/ Developers Summit 2011
  27. 27. WPFのパフォーマンス特性 ベンチマークのような 絶対的なスピードはあまり意味がない WPFのパフォーマンス特性を生かせるのは “Fluid UI”「なめらかなユーザーインターフェイス」  実際に簡単なプロトタイプ を作って確認しよう Developers Summit 2011
  28. 28. 20年前に登場した技術「GDI」 グラフィックドライバモデルの大幅な変更 GDI/ レガシー Direct Direct3 Direct GDI+ DirectX 3D 9 D 9 Ex 3D 10 レガシー GDI/GDI+ Direct3D 9 DirectX ランタイム DirectX Windows Vista Display Driver Model(WDDM) GDI32 DirectX ランタイム カーネル/API (ユーザー) カーネル/API ユーザーモード/カーネルモード境界 ユーザーモード/カーネルモード境界XP Display Driver XP Display Driver Model ドライバ Windows Vista Display Driver Model(WDDM) ドライバ Model(GDI) (DirectDraw/Direct3D) (カーネル) XPDM(Windows XP) WDDM(Windows Vista以降) GDIハードウェアアクセラレーションの廃止  Windows 7で部分的に復活(ビットマップ転送系) Developers Summit 2011
  29. 29. 描画はDWMが管理 Windows Vista(WDDM 1.0)の場合GDIアプリケーション DWM Direct3Dサーフェイス フレームバッファ(システムメモリ) (ビデオメモリ) 描画イメージ CPU描画 (ARGB形式) コピー 描画イメージ プロセス間共有 (ARGB形式) 合成して更新GDIアプリケーション フレームバッファ(システムメモリ) 描画イメージ 描画イメージ (ARGB形式) CPU描画 (ARGB形式) コピー プロセス間共有 プロセス間共有Direct3Dアプリケーション(WPF含む) サーフェイス Present バック サーフェス反転 描画イメージ バッファ でリダイレクト 隠しサーフェイス (ビデオメモリ) Developers Summit 2011
  30. 30. Windowsフォームで大丈夫か?一番良いのを頼む。UIレイアウト Developers Summit 2011
  31. 31. 画面解像度の多様化 2011年1月のグレープシティWebサイト 1600x900 訪問者における画面解像度の内訳 1400x1050 1600x1200 その他 1920x1200 1366x768 1280x1024 1440x900 1920x1080 1024x768 1680x1050 1280x800 Developers Summit 2011
  32. 32. 固定画面解像度768ピクセル 最大化/最小化 ボタンは非表示 1024ピクセル Developers Summit 2011
  33. 33. 画面解像度比較 1024×768 1280×1024 1920×1080 Developers Summit 2011
  34. 34. WPFのレイアウト機能 相対配置  Grid、StackPanel、WrapPanel、DockPanel 領域の有効活用  GridSplitter、Expander、Visibility.Collapsed ベクタ描画を活かした拡縮  ViewBox Developers Summit 2011
  35. 35. WPFのレイアウト機能を使った業務アプリ画面DEMO Developers Summit 2011
  36. 36. WPFのレイアウトのしくみ 測定パス Measureメソッド 利用可能サイズを通知 子要素の各サイズ系プロパティが評価 され、希望サイズが決定パ DesiredSizeプロパティ 子ネ 要ル 希望サイズを取得 素 配置パス DesiredSizeプロパティ 子要素を配置し、サイズを決定 Developers Summit 2011
  37. 37. Windowsフォームで大丈夫か?一番良いのを頼む。業務コントロール Developers Summit 2011
  38. 38. カスタマイズ性 vs コントロール数 Windowsフォーム  外観のカスタマイズ性が低い  細分化されたコントロールによる高い生産性 WPF  外観のカスタマイズ性が高い  標準で用意されているコントロールが少ない 業務アプリでは機能のカスタマイズが重要 Developers Summit 2011
  39. 39. 業務アプリで使われるエディット系コントロール Windowsフォーム WPFテキスト TextBox TextBox日付 DateTimePicker DatePicker数値 NumericUpDown -マスク MaskedTextBox - 数値やマスクといったコントロールが 用意されていない 用意されているコントロールも機能不足 Developers Summit 2011
  40. 40. 比較:日付入力コントロール数字のみの入力 ✔ -ドロップダウンカレンダー ✔ ✔スピンボタンによる日付入力 ✔ -時刻入力 ✔ -Null値サポート - ✔ドロップダウンボタンの外観 Developers Summit 2011
  41. 41. 業務アプリで使われるエディット系コントロール Windowsフォーム WPF InputMan for WPFテキスト TextBox TextBox GcTextBox日付 DateTimePicker DatePicker GcDateTime数値 NumericUpDown - GcNumberマスク MaskedTextBox - GcMask InputManは 日本仕様の業務系入力コントロール集 17年かけて培ってきた ノウハウを結集 17年前のInputMan Developers Summit 2011
  42. 42. 比較:日付入力コントロール数字のみの入力 ✔ - ✔ドロップダウンカレンダー ✔ ✔ ✔スピンボタンによる日付入力 ✔ - ✔時刻入力 ✔ - ✔Null値サポート - ✔ ✔ドロップダウンボタンの外観和暦、入力時/表示時の書式設定、入力候補、フィールド - - ✔単位のフォーカス制御、… Developers Summit 2011
  43. 43. 日本の業務に適したエディット系コントロールDEMO Developers Summit 2011
  44. 44. インプットマンInputMan for WPF 1.0J InputMan for Silverlight 1.0J 2011年4月11日発売予定  発売中 http://tools.grapecity.com/demo/inputmansl/ Developers Summit 2011
  45. 45. Windowsフォームで大丈夫か?一番良いのを頼む。将来性 Developers Summit 2011
  46. 46. 将来性(噂レベルの話) タブレット2012年 App Store "Jupiter" ARM Visual Studio 2012 “Windows next" .appx XAML technology Developers Summit 2011
  47. 47. まとめ Windowsフォーム WPF“Fluid UI” - ✓ 絶対配置が基本 相対配置が基本UIレイアウト (追加コントロール (絶対配置も可) による相対配置)業務コントロール ✓ ✓(グレープシティ)将来性 - ✓ブラウザアプリケーション - ✓ -アーキテクチャパターン (イベント駆動型 MVVM プログラミング ) Developers Summit 2011
  48. 48. Developers Summit 2011

×