Upload
yuya-yamaki
View
59
Download
2
Embed Size (px)
DESCRIPTION
VSUG DAY 2012 Winter
Citation preview
グレープシティ株式会社八巻 雄哉
今さらWPF?いいえ、今こそWPF!
VSUG DAY 2012 Winter
Twitter: @yamaki00blog: d.hatena.ne.jp/Yamaki/
VSUG DAY 2012 Winter
.NET開発者中心 読者調査レポート
2
5%
7%
28%
10%
49%
0% 10% 20% 30% 40% 50% 60%
Silverlight
ASP.NET MVC
ASP.NET Webフォーム
WPF
Windowsフォーム
2012年9月実施
利用状況
VSUG DAY 2012 Winter
.NET開発者中心 読者調査レポート
3
0% 10% 20% 30% 40% 50% 60% 70%
Silverlight
ASP.NET MVC
ASP.NET Webフォーム
WPF
Windowsフォーム
1年前と比較
2011年9月 2012年9月
VSUG DAY 2012 Winter
.NET開発者中心 読者調査レポート
4
-2.4%
0.9%
0.3%
2.9%
-11.8%
-14.0% -12.0% -10.0% -8.0% -6.0% -4.0% -2.0% 0.0% 2.0% 4.0%
Silverlight
ASP.NET MVC
ASP.NET Webフォーム
WPF
Windowsフォーム
1年前の時点からの増減
VSUG DAY 2012 Winter
最新バージョンでも新機能の追加があるよ
5
2.0 3.0 3.5 3.5 SP1 4.0 4.5
WPF
新機能 新機能 新機能 新機能
新機能
Windows Forms
新機能
VSUG DAY 2012 Winter
Build 2012でもWPFのセッションあったよ
7
Your AppDesktop
Web
WinRT
時代はWebかWinRTじゃないの?
8
VSUG DAY 2012 Winter
そのアプリ、WinRTで大丈夫?
9
Windows 8でしか動かないけど大丈夫?
全画面になっても大丈夫?(他からコピペしたりする操作はない?)
データグリッドないけど大丈夫?
他のアプリとサーバー介さずに連携とかしてない?
特殊なハードウェアを使ったりしてない?
VSUG DAY 2012 Winter
そのアプリ、Webで大丈夫?
10
特殊なハードウェアを使ったりしてない?
マルチウィンドウじゃなくなるけど大丈夫?
ファンクションキーとか使ってないよね?
パフォーマンスにシビアじゃないよね?
AndroidとかiOSでも使うんだよね?
HTML5ならマルチデバイス対応楽勝とか思ってないよね?
VSUG DAY 2012 Winter
Desktopという選択肢は残る
11
DesktopWeb WinRT
Your App WPFWindows
Forms
デスクトップアプリならどっち?
12
VSUG DAY 2012 Winter
3つの疑問
13
1. Windowsフォームを使い続けていて何か問題があるのか?
2. WPFにするとどんないいことがあるのか?
3. WPFの将来性は大丈夫なのか?
VSUG DAY 2012 Winter
Windowsフォームを使い続けていて何か問題があるのか?
14
VSUG DAY 2012 Winter
旧来版Visual Basic Windowsフォーム WPF
登場年月 1991年 (21歳) 2002年(10歳) 2006年(6歳)
開発環境のサポート - ✓ ✓
64ビット - ✓ ✓
ビジュアルスタイル - ✓ ✓
最新開発環境 Visual Basic 6.0 Visual Studio 2012 Visual Studio 2012
マネージコード(.NET) - ✓ ✓
描画の基盤技術 GDI GDI/GDI+ Direct3D
ベクターベースのUI - - ✓
2Dと3Dとメディアの統合 - - ✓
UI記述 Visual Basic Visual Basic、C# XAML
旧来版Visual Basicも含めた比較表
15
VSUG DAY 2012 Winter
基盤技術と畳は新しい方が良い
16
描画の基盤技術
ユーザーインターフェイス
基盤技術 起源 誕生 年齢
Windowsフォーム/VB6
GDI Windows 1.0(GDI.EXE) 1985年 27歳
WPF Direct3D Windows 3.1(WinG) 1993年 19歳
基盤技術 起源 誕生 年齢
Windowsフォーム/VB6
USER Windows 1.0(USER.EXE) 1985年 27歳
WPF System.Windows.Controls
Windows Vista(PresentationFramework.dll)
2006年 6歳
VSUG DAY 2012 Winter
GDIは第一級の描画ルートではない
グラフィックドライバモデルの大幅な変更
Windows 8からXDDMを非サポート
XP Display Driver Model(GDI)
XP Display Driver Model(DirectDraw/Direct3D)
ユーザーモード/カーネルモード境界
GDI32 DirectX ランタイム
GDI/GDI+レガシーDirectX
Direct3D 9カーネル/A
PI
ドライバ
XDDM(Windows XP)
Windows Vista Display Driver Model(WDDM)(カーネル)
ユーザーモード/カーネルモード境界
DirectX ランタイム
Windows Vista Display Driver Model(WDDM)(ユーザー)
GDI/GDI+
レガシー
DirectXDirect3D
9Direct3D
9 ExDirect3D
10
カーネル/A
PI
ドライバ
WDDM(Windows Vista以降)
17
VSUG DAY 2012 Winter
Demo
WPF Drawing Performance
http://www.kynosarges.org/WpfPerformance.html
18
VSUG DAY 2012 Winter
XDDM環境におけるGDIのパフォーマンス
19
VSUG DAY 2012 Winter
GDI+
20
0 2000 4000 6000 8000 10000 12000 14000
Anti-Ailasing Off
Anti-Ailasing On
Anti-Ailasing Off Anti-Ailasing On
XDDM(Windows XP) 1101 5201
WDDM(Windows 8) 12630 12734
VSUG DAY 2012 Winter
Demo
21
VSUG DAY 2012 Winter
WPF(DrawLine with Freeze)
22
0 2000 4000 6000 8000 10000 12000 14000
Anti-Ailasing Off
Anti-Ailasing On
Anti-Ailasing Off Anti-Ailasing On
XDDM(Windows XP) 667 3312
WDDM(Windows 8) 571 3385
VSUG DAY 2012 Winter
ベンチマークが語るもの
23
ベンチマークの数値そのものはほとんど重要ではない
Windows 8でGDIが遅いといっても、5年前のWindows XPマシンよりは数倍速い
その技術が過去のもの扱いかどうか
ようするに “おわコン” なのかどうか
VSUG DAY 2012 Winter
即時モード vs 保持モード
Windowsフォーム(GDI、GDI+)
即時モード
WPF
保持モード
24
VSUG DAY 2012 Winter
即時モード
命令型描画
アプリケーション自身が直接描画
描画命令の実行と実画面のフレームバッファへの描画が同期
ディスプレイの更新に同期させる手段は基本的にない
実画面のフレームバッファ
アプリケーション
DrawText
DrawLine
DrawImage
GDI/GDI+
25
VSUG DAY 2012 Winter
保持モード
データ駆動型描画
UIスレッドでは描画データを生成して格納(シリアル化)
描画スレッドでビジュアルオブジェクトをスキャンし、Direct3Dのバッファに描画(UIスレッドと非同期)
DirectXランタイムによりディスプレイの更新に同期Direct3Dのサーフェス
Media Integration Layer(wpfgfx_v****.dll)
アプリケーション
ビジュアルオブジェクト
WPF
26
VSUG DAY 2012 Winter
WPFのパフォーマンス特性
WPFのパフォーマンス特性を生かせるのは“Fluid UI”「なめらかなユーザーインターフェイス」
スループットよりもレスポンス重視
連続性 直感性 可逆性
27
VSUG DAY 2012 Winter
Demo
28
VSUG DAY 2012 Winter
WPF Direct2D
29
Microsoftが作るデスクトップアプリ
Windows Live メール
VSUG DAY 2012 Winter
即時モード vs 保持モード
即時モード
GDI、GDI+(Windowsフォーム)
Direct2D
保持モード
WPF
30
VSUG DAY 2012 Winter
移行の流れ
31
Windowsフォーム
• Visual Basic
• C#
WPF
• Visual Basic
• C#
GDI
•C++
Direct2D
•C++
VSUG DAY 2012 Winter
Demo
32
VSUG DAY 2012 Winter
3つの疑問
33
1. Windowsフォームを使い続けていて何か問題があるのか?
答え:
GDIは “おわコン”
VSUG DAY 2012 Winter
WPFにするとどんないいことがあるのか?
34
VSUG DAY 2012 Winter
画面解像度(総画素数)の多様化
2006年7月
1280
x
1024
1024
x
768
1600
x
1200
1400
x
1050
その他
2012年10月
1920x
1080
1280x
1024
1366
x
768
1920
x
1200
1280
x
800
1680
x
1050
その他
Yuya Yamaki’s blog(http://d.hatena.ne.jp/Yamaki/)
38
VSUG DAY 2012 Winter
画面の回転
36
VSUG DAY 2012 Winter
固定画面解像度
1024ピクセル
768ピクセル
最大化/最小化ボタンは非表示
37
VSUG DAY 2012 Winter
17インチ、SXGA(1,280×1,024)
38
VSUG DAY 2012 Winter
23インチ、FHD(1,920×1,080)
39
VSUG DAY 2012 Winter
Demo
40
VSUG DAY 2012 Winter
Intel: Retina laptop, desktop displays coming in 2013
41
http://liliputing.com/2012/04/intel-retina-laptop-desktop-displays-coming-in-2013.html
VSUG DAY 2012 Winter
ディスプレイの高精細化
42
モデル名ディスプレイサイズ(インチ)
解像度(総画素数)
ピクセル密度(PPI)
HTC J butterfly HTL21 5 1,920×1,080 440
iPhone 4S 3.5 960×640 326
Samsung ATIV S(Windows Phone 8) 4.8 1,280×720 306
新しいiPad 9.7 2,048×1,536 264
Acer ICONIA TAB A700 10.1 1,920×1,200 224
MacBook Pro(Retina) 15 2,880×1,800 220
Surface for Windows 8 Pro 10.6 1,920×1,080 208
VAIO Duo 11 11.6 1,920×1,080 190
VSUG DAY 2012 Winter
約96PPI 23インチ、FHD(1,920×1,080)
43
VSUG DAY 2012 Winter
約128PPI 23インチ、WQHD(2,560×1,440)
44
VSUG DAY 2012 Winter
約192PPI 23インチ、QFHD(3,840×2,160)
45
VSUG DAY 2012 Winter
DPIスケーリング
46
システムフォントやUIのサイズをスケールさせる機能
100% 200%
VSUG DAY 2012 Winter
DPIスケーリング
48
システムフォントやUIのサイズをスケールさせる機能
Windows 7まで既定値は100%ユーザーが自分で変更しない限り
125%などのスケールにはならない
Windows 8ディスプレイのピクセル密度により
既定値が変化
VSUG DAY 2012 Winter
Windows 7
49
15.6インチ 340×190mm 1920×1080 約143PPI
VSUG DAY 2012 Winter
Windows 8
50
15.6インチ 340×190mm 1920×1080 約143PPI
VSUG DAY 2012 Winter
DPIスケーリングの種類
51
XP形式のスケーリング普通のスケーリングアプリケーションがスケーリングに
対応していなければならない
DPI仮想化(Vistaから搭載)一度100%で画面表示領域外に描画し、
それをビットマップ的に拡大して表示スケーリングに非対応のアプリでも、
レイアウトはくずれない(救済措置)ビットマップ的な拡大のため、
ぼやけた印象の表示となる
VSUG DAY 2012 Winter
125%以下 126%以上
52
カスタムサイズ変更オプション
XP形式のスケーリング:Onが既定 XP形式のスケーリング:Offが既定
VSUG DAY 2012 Winter
53
DPIスケーリングが変わるとどうなるのか?
Windowsフォームの場合
VSUG DAY 2012 Winter
XP形式のスケーリング:On XP形式のスケーリング:Off
54
Windowsフォームの場合(150%)
VSUG DAY 2012 Winter
Windowsフォームのスケール処理
55
設計時のフォントサイズ/DPIと実行時のフォントサイズ/DPIを比較し、その比率をもとにスケール処理が行われる
異なるシステムフォントサイズ/DPI設定の環境でプロジェクトを共有できない
スケール処理はフォームの初回読込時の一度きり
動的に位置やサイズを設定する際には、比率を乗算してやる必要がある
スケール処理は各コントロールの実装に依存
VSUG DAY 2012 Winter
DataGridViewとSPREAD (100%)
56
VSUG DAY 2012 Winter
DataGridViewとSPREAD (150%)
57
VSUG DAY 2012 Winter
58
DPIスケーリングが変わるとどうなるのか?
WPFの場合
VSUG DAY 2012 Winter
XP形式のスケーリング:On XP形式のスケーリング:Off
59
WPFの場合(150%)
VSUG DAY 2012 Winter
WPFのスケール処理
60
ピクセルという単位系がスケールされる
DPIスケーリングの変更に関して注意しなければいけない点は特にない
100%(96DPI) 150%(144DPI) 200%(192DPI)
論理的な1ピクセル 1ピクセル 1.5ピクセル 2ピクセル
VSUG DAY 2012 Winter
3つの疑問
61
2. WPFにするとどんないいことがあるのか?
答え:
様々な画面解像度への対応が楽
DPIスケーリングへの対応は不要
VSUG DAY 2012 Winter
WPFの将来性は大丈夫なのか?
62
VSUG DAY 2012 Winter
3つの疑問
63
3. WPFの将来性は大丈夫なのか?
答え:
分かりません。
でも、XAMLの将来性は大丈夫でしょう。
VSUG DAY 2012 Winter
まとめ
Windowsフォームの既存資産を何が何でもWPFに移行すべきか?
いいえ。しかし、XAML、もしくはその他のUIテクノロジに対する投資は今から行うべき
これから新規で作るデスクトップアプリは?
WPFで要件を満たせるかどうかを検討すべき
64
VSUG DAY 2012 Winter
Desktop Pack 2013シリーズ
65
44%OFF 42%OFF
VSUG DAY 2012 Winter
は、
WebでもWinRTでも開発者の皆様を支援するツールを提供していきます!
66
VSUG DAY 2012 Winter
Visual WebGui Pro studio web&mobile
67
Visual Studio統合Windowsフォーム
互換C/S型の開発手法
モダンなHTML5アプリ
モバイル向けビューも対応
クラウド対応
既存の開発手法とスキルを最大限に活用し、
HTML5アプリによるマルチデバイス対応を行う