SlideShare a Scribd company logo
VSUG DAY 2012 Winter
今さらWPF?
いいえ、今こそWPF!

グレープシティ株式会社
   八巻 雄哉
                    Twitter: @yamaki00
          blog: d.hatena.ne.jp/Yamaki/
.NET開発者中心 読者調査レポート

                                   2012年9月実施

   Windowsフォーム                                                  49%


              WPF                10%

ASP.NET Webフォーム                                   28%


     ASP.NET MVC            7%

        Silverlight        5%


                      0%    10%         20%      30%     40%   50%    60%

                                         利用状況


                                  VSUG DAY 2012 Winter                      2
.NET開発者中心 読者調査レポート

                                    1年前と比較

   Windowsフォーム


              WPF


ASP.NET Webフォーム


     ASP.NET MVC


        Silverlight


                      0%   10%      20%     30%         40%   50%   60%   70%

                                  2011年9月    2012年9月


                                 VSUG DAY 2012 Winter                           3
.NET開発者中心 読者調査レポート

                               1年前の時点からの増減

   Windowsフォーム        -11.8%


              WPF                                                                   2.9%


ASP.NET Webフォーム                                                          0.3%


     ASP.NET MVC                                                             0.9%


        Silverlight                                     -2.4%


                 -14.0% -12.0% -10.0% -8.0%   -6.0%   -4.0%   -2.0%   0.0%   2.0%   4.0%

                                VSUG DAY 2012 Winter                                       4
最新バージョンでも新機能の追加があるよ

   2.0          3.0    3.5       3.5 SP1     4.0   4.5


  新機能
                                             新機能


Windows Forms


                      新機能          新機能       新機能   新機能


WPF

                      VSUG DAY 2012 Winter               5
今さらWPF?いいえ、今こそWPF!
Build 2012でもWPFのセッションあったよ




          VSUG DAY 2012 Winter   7
時代はWebかWinRTじゃないの?


                       Web
  Desktop   Your App
                       WinRT



                               8
そのアプリ、WinRTで大丈夫?

 Windows 8でしか動かないけど大丈夫?
 全画面になっても大丈夫?
  (他からコピペしたりする操作はない?)
 データグリッドないけど大丈夫?
 他のアプリとサーバー介さずに
               連携とかしてない?
 特殊なハードウェアを使ったりしてない?

          VSUG DAY 2012 Winter   9
そのアプリ、Webで大丈夫?

 特殊なハードウェアを使ったりしてない?
 マルチウィンドウじゃなくなるけど大丈夫?
 ファンクションキーとか使ってないよね?
 パフォーマンスにシビアじゃないよね?
 AndroidとかiOSでも使うんだよね?
 HTML5ならマルチデバイス対応
                楽勝とか思ってないよね?

          VSUG DAY 2012 Winter   10
Desktopという選択肢は残る

   Web     Desktop               WinRT




          VSUG DAY 2012 Winter           11
デスクトップアプリならどっち?



  Windows
            Your App   WPF
   Forms




                             12
3つの疑問

1. Windowsフォームを使い続けていて
   何か問題があるのか?
2. WPFにすると
   どんないいことがあるのか?
3. WPFの将来性は大丈夫なのか?


         VSUG DAY 2012 Winter   13
Windowsフォームを使い続けていて
何か問題があるのか?


VSUG DAY 2012 Winter

                       14
旧来版Visual Basicも含めた比較表

                旧来版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

                     VSUG DAY 2012 Winter                               15
基盤技術と畳は新しい方が良い

 描画の基盤技術
            基盤技術            起源                            誕生   年齢
Windowsフォーム GDI             Windows 1.0(GDI.EXE)          1985年 27歳
/VB6
WPF         Direct3D        Windows 3.1(WinG)             1993年 19歳


 ユーザーインターフェイス
            基盤技術            起源                            誕生   年齢
Windowsフォーム USER            Windows 1.0(USER.EXE)         1985年 27歳
/VB6
WPF         System.Windo    Windows Vista                 2006年 6歳
            ws.Controls     (PresentationFramework.dll)

                       VSUG DAY 2012 Winter                           16
GDIは第一級の描画ルートではない

 グラフィックドライバモデルの大幅な変更
                                                        GDI/    レガシー       Direct3D   Direct3D   Direct3D
                                                        GDI+    DirectX        9        9 Ex        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)      ラ                          (カーネル)                            ラ
                                               イ                                                            イ
                                               バ                                                            バ
        XDDM(Windows XP)                                 WDDM(Windows Vista以降)

 Windows 8からXDDMを非サポート
                                         VSUG DAY 2012 Winter                                                     17
Demo


                                           WPF Drawing Performance
                       http://www.kynosarges.org/WpfPerformance.html
VSUG DAY 2012 Winter

                                                                  18
XDDM環境におけるGDIのパフォーマンス




         VSUG DAY 2012 Winter   19
GDI+


   Anti-Ailasing On




   Anti-Ailasing Off




                       0   2000       4000       6000    8000   10000       12000   14000
                             Anti-Ailasing Off                  Anti-Ailasing On
 XDDM(Windows XP)                   1101                             5201

 WDDM(Windows 8)                    12630                            12734


                                  VSUG DAY 2012 Winter                                      20
Demo



VSUG DAY 2012 Winter

                       21
WPF(DrawLine with Freeze)


   Anti-Ailasing On




   Anti-Ailasing Off




                       0   2000       4000       6000    8000   10000       12000   14000
                             Anti-Ailasing Off                  Anti-Ailasing On
 XDDM(Windows XP)                    667                             3312

 WDDM(Windows 8)                     571                             3385


                                  VSUG DAY 2012 Winter                                      22
ベンチマークが語るもの

ベンチマークの数値そのものは
         ほとんど重要ではない
 Windows 8でGDIが遅いといっても、
  5年前のWindows XPマシンよりは数倍速い
その技術が過去のもの扱いかどうか
 ようするに “おわコン” なのかどうか


         VSUG DAY 2012 Winter   23
即時モード vs 保持モード

Windowsフォーム(GDI、GDI+)
 即時モード
WPF
 保持モード




          VSUG DAY 2012 Winter   24
即時モード

アプリケーション
                   命令型描画
  GDI/GDI+
                    アプリケーション自身が直接描画
DrawLine

   DrawText
                    描画命令の実行と実画面の
      DrawImage      フレームバッファへの描画が同期
                    ディスプレイの更新に同期させる
実画面のフレームバッファ
                     手段は基本的にない




                   VSUG DAY 2012 Winter   25
保持モード

         WPF
                           データ駆動型描画
 アプリケーション
  ビジュアル                     UIスレッドでは描画データを生成
  オブジェクト                     して格納(シリアル化)
                            描画スレッドでビジュアル
                             オブジェクトをスキャンし、
Media Integration Layer      Direct3Dのバッファに描画
(wpfgfx_v****.dll)
                             (UIスレッドと非同期)
                            DirectXランタイムにより
Direct3Dのサーフェス
                             ディスプレイの更新に同期
                           VSUG DAY 2012 Winter   26
WPFのパフォーマンス特性

 WPFのパフォーマンス特性を生かせるのは
  “Fluid UI”「なめらかなユーザーインターフェイス」


          連続性              直感性    可逆性


 スループットよりもレスポンス重視

           VSUG DAY 2012 Winter         27
Demo



VSUG DAY 2012 Winter

                       28
Microsoftが作るデスクトップアプリ

WPF                  Direct2D




                          Windows Live メール




          VSUG DAY 2012 Winter               29
即時モード vs 保持モード

即時モード
 GDI、GDI+(Windowsフォーム)
 Direct2D
保持モード
 WPF



          VSUG DAY 2012 Winter   30
移行の流れ

Windowsフォーム                             WPF

      • Visual Basic                          • Visual Basic

      • C#                                    • C#



GDI                                     Direct2D

      • C++                                   • C++


                       VSUG DAY 2012 Winter                    31
Demo



VSUG DAY 2012 Winter

                       32
3つの疑問

1. Windowsフォームを使い続けていて
   何か問題があるのか?

答え:
GDIは “おわコン”


         VSUG DAY 2012 Winter   33
WPFにすると
どんないいことがあるのか?


VSUG DAY 2012 Winter

                       34
画面解像度(総画素数)の多様化

  2006年7月                                  2012年10月
                その他                                                  1920x
            1400
             x                                         その他           1080
                          1280
     16001050
                            x
       x                                                                      1280x
                          1024
     1200                                           1680                      1024
                 1024                                           1920 1366
                                                       x 1280
                  x                                              x       x
                                                    1050 x
                 768                                            1200    768
                                                         800
Yuya Yamaki’s blog(http://d.hatena.ne.jp/Yamaki/)
                                VSUG DAY 2012 Winter                                  38
画面の回転




        VSUG DAY 2012 Winter   36
固定画面解像度


  768ピクセル




                                     最大化/最小化
                                     ボタンは非表示



            1024ピクセル
              VSUG DAY 2012 Winter             37
17インチ、SXGA(1,280×1,024)




             VSUG DAY 2012 Winter   38
23インチ、FHD(1,920×1,080)




             VSUG DAY 2012 Winter   39
Demo



VSUG DAY 2012 Winter

                       40
Intel: Retina laptop, desktop displays coming in 2013




http://liliputing.com/2012/04/intel-retina-laptop-desktop-displays-coming-in-2013.html
                                VSUG DAY 2012 Winter                                41
ディスプレイの高精細化
                               ディスプレイサ 解像度                   ピクセル密度
モデル名
                               イズ(インチ) (総画素数)                (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                      42
約96PPI   23インチ、FHD(1,920×1,080)




                VSUG DAY 2012 Winter   43
約128PPI   23インチ、WQHD(2,560×1,440)




                VSUG DAY 2012 Winter   44
約192PPI   23インチ、QFHD(3,840×2,160)




                VSUG DAY 2012 Winter   45
DPIスケーリング

システムフォントやUIのサイズを
         スケールさせる機能




            VSUG DAY 2012 Winter   46
100%   200%
DPIスケーリング

 システムフォントやUIのサイズを
              スケールさせる機能
 Windows 7まで
   既定値は100%
   ユーザーが自分で変更しない限り
       125%などのスケールにはならない
 Windows 8
   ディスプレイのピクセル密度により
                  既定値が変化

              VSUG DAY 2012 Winter   48
Windows 7




    15.6インチ 340×190mm 1920×1080 約143PPI

               VSUG DAY 2012 Winter       49
Windows 8




    15.6インチ 340×190mm 1920×1080 約143PPI

               VSUG DAY 2012 Winter       50
DPIスケーリングの種類
 XP形式のスケーリング
  普通のスケーリング
  アプリケーションがスケーリングに
             対応していなければならない
 DPI仮想化(Vistaから搭載)
  一度100%で画面表示領域外に描画し、
        それをビットマップ的に拡大して表示
  スケーリングに非対応のアプリでも、
        レイアウトはくずれない(救済措置)
  ビットマップ的な拡大のため、
           ぼやけた印象の表示となる
           VSUG DAY 2012 Winter   51
カスタムサイズ変更オプション

125%以下                  126%以上




XP形式のスケーリング:Onが既定         XP形式のスケーリング:Offが既定

             VSUG DAY 2012 Winter              52
DPIスケーリングが
変わるとどうなるのか?
Windowsフォームの場合


VSUG DAY 2012 Winter

                       53
Windowsフォームの場合(150%)

 XP形式のスケーリング:On           XP形式のスケーリング:Off




            VSUG DAY 2012 Winter            54
Windowsフォームのスケール処理

 設計時のフォントサイズ/DPIと
  実行時のフォントサイズ/DPIを比較し、
  その比率をもとにスケール処理が行われる
  異なるシステムフォントサイズ/DPI設定の
           環境でプロジェクトを共有できない
 スケール処理はフォームの初回読込時の一度きり
  動的に位置やサイズを設定する際には、
              比率を乗算してやる必要がある
 スケール処理は各コントロールの実装に依存

           VSUG DAY 2012 Winter   55
DataGridViewとSPREAD (100%)




               VSUG DAY 2012 Winter   56
DataGridViewとSPREAD (150%)




               VSUG DAY 2012 Winter   57
DPIスケーリングが
変わるとどうなるのか?
WPFの場合


VSUG DAY 2012 Winter

                       58
WPFの場合(150%)

 XP形式のスケーリング:On           XP形式のスケーリング:Off




            VSUG DAY 2012 Winter            59
WPFのスケール処理

 ピクセルという単位系がスケールされる
          100%(96DPI)       150%(144DPI) 200%(192DPI)

論理的な1ピクセル 1ピクセル             1.5ピクセル      2ピクセル


 DPIスケーリングの変更に関して
    注意しなければいけない点は特にない


                  VSUG DAY 2012 Winter              60
3つの疑問

2. WPFにすると
   どんないいことがあるのか?

答え:
様々な画面解像度への対応が楽
DPIスケーリングへの対応は不要

        VSUG DAY 2012 Winter   61
WPFの将来性は大丈夫なのか?



VSUG DAY 2012 Winter

                       62
3つの疑問

3. WPFの将来性は大丈夫なのか?

答え:
分かりません。
でも、XAMLの将来性は大丈夫でしょう。


        VSUG DAY 2012 Winter   63
まとめ

 Windowsフォームの既存資産を
         何が何でもWPFに移行すべきか?
  いいえ。しかし、XAML、もしくはその他の
   UIテクノロジに対する投資は今から行うべき

 これから新規で作るデスクトップアプリは?
  WPFで要件を満たせるかどうかを検討すべき



          VSUG DAY 2012 Winter   64
Desktop Pack 2013シリーズ



           44%OFF                   42%OFF




             VSUG DAY 2012 Winter            65
は、
WebでもWinRTでも
開発者の皆様を支援するツールを
提供していきます!

VSUG DAY 2012 Winter

                       66
Visual WebGui Pro studio web&mobile
  既存の開発手法とスキルを最大限に活用し、

                    Windowsフォーム            C/S型の
  Visual Studio統合
                         互換                開発手法


  HTML5アプリによるマルチデバイス対応を行う
     モダンな             モバイル向け
                                           クラウド対応
   HTML5アプリ           ビューも対応


                    VSUG DAY 2012 Winter            67
今さらWPF?いいえ、今こそWPF!
今さらWPF?いいえ、今こそWPF!

More Related Content

PDF
WPF開発での陥りやすい罠
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PDF
ドメイン駆動設計に15年取り組んでわかったこと
PDF
.NET 7におけるBlazorの新機能
PPTX
Msを16倍出し抜くwpf開発1回目
PDF
MagicOnion入門
WPF開発での陥りやすい罠
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
ドメイン駆動設計のための Spring の上手な使い方
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
ドメイン駆動設計に15年取り組んでわかったこと
.NET 7におけるBlazorの新機能
Msを16倍出し抜くwpf開発1回目
MagicOnion入門

What's hot (20)

PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PDF
Windowsフォームで大丈夫か?一番良いのを頼む。
PPTX
MVVM入門
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
serviceクラスをやめようサブクラスを使おう
PDF
OpenID ConnectとAndroidアプリのログインサイクル
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PPTX
Msを16倍出し抜くwpf開発2回目
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PPTX
C#/WPFで作るデスクトップマスコット入門
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
PPT
ドメインロジックの実装方法とドメイン駆動設計
PDF
オブジェクト指向の設計と実装の学び方のコツ
PDF
RDRA DDD Agile
PDF
現場で役立つシステム設計の原則
PDF
Prism + ReactiveProperty入門
PDF
WebSocket / WebRTCの技術紹介
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Windowsフォームで大丈夫か?一番良いのを頼む。
MVVM入門
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
serviceクラスをやめようサブクラスを使おう
OpenID ConnectとAndroidアプリのログインサイクル
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Msを16倍出し抜くwpf開発2回目
コンテナの作り方「Dockerは裏方で何をしているのか?」
C#/WPFで作るデスクトップマスコット入門
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
ドメインオブジェクトの見つけ方・作り方・育て方
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
ドメインロジックの実装方法とドメイン駆動設計
オブジェクト指向の設計と実装の学び方のコツ
RDRA DDD Agile
現場で役立つシステム設計の原則
Prism + ReactiveProperty入門
WebSocket / WebRTCの技術紹介
Ad

Similar to 今さらWPF? いいえ、今こそWPF! (20)

PDF
Metroスタイルで花開くか? XAMLベースのUIフレームワーク
PPTX
Silverlightの今
PDF
Bar Vsug04 Masami Suzuki Windows7 UI
PDF
Visual Studio 2010でWPF/Silverlightをはじめる5つの理由~業務アプリ開発編~
PDF
どうなる?Windows 8時代の業務アプリ開発
PDF
半透明は飾りです 偉い人にはそれがわからんのですよ
PDF
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
PDF
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
PDF
Dev camp2012jpn day2special
PPTX
Windows 8時代のアプリ開発
PDF
デスクトップアプリ開発者が押さえておくべき Windows 8時代の変革
PPTX
Windows 8 ストア アプリ 開発 Tips
PDF
Silverlight 5でぶり返すWPF不要論
PDF
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
PDF
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
PPTX
オレたちとVisual Studioとの関係を話そう
PDF
20100416 devlove(flex) final
PPT
20010127
PDF
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
PPT
20050903
Metroスタイルで花開くか? XAMLベースのUIフレームワーク
Silverlightの今
Bar Vsug04 Masami Suzuki Windows7 UI
Visual Studio 2010でWPF/Silverlightをはじめる5つの理由~業務アプリ開発編~
どうなる?Windows 8時代の業務アプリ開発
半透明は飾りです 偉い人にはそれがわからんのですよ
わんくま名古屋#25(20121201) 「Win8ストア・アプリ WP8アプリ、両面撃破作戦」
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Dev camp2012jpn day2special
Windows 8時代のアプリ開発
デスクトップアプリ開発者が押さえておくべき Windows 8時代の変革
Windows 8 ストア アプリ 開発 Tips
Silverlight 5でぶり返すWPF不要論
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
オレたちとVisual Studioとの関係を話そう
20100416 devlove(flex) final
20010127
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
20050903
Ad

More from Yuya Yamaki (15)

PDF
Basic言語でiOSアプリを作る
PDF
続Xamarinはじめました
PDF
Xamarinはじめました
PDF
TypeScript入門してみた
PDF
Windowsの画面スケーリングを きちんと理解しよう
PDF
.Net技術でこれからも食べていくための技術戦略
PDF
.NET技術でこれからも食べていくための技術戦略
PDF
Developers Summit 2013【14-E-3】Windows 8デザインガイド
PDF
デスクトップアプリ開発者が押さえておくべきWindows 8 時代の変革
PDF
Windows 8時代のUXを支える非同期プログラミング
PDF
WPF/Silverlight視点で視る MetroスタイルのXAML
PDF
77回スピーカーを経験して分かったこと」共有します
PDF
60分でわかる!SilverlightとWPFの入力チェック
PDF
Silverlight Line-Of-Business Applications
PDF
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
Basic言語でiOSアプリを作る
続Xamarinはじめました
Xamarinはじめました
TypeScript入門してみた
Windowsの画面スケーリングを きちんと理解しよう
.Net技術でこれからも食べていくための技術戦略
.NET技術でこれからも食べていくための技術戦略
Developers Summit 2013【14-E-3】Windows 8デザインガイド
デスクトップアプリ開発者が押さえておくべきWindows 8 時代の変革
Windows 8時代のUXを支える非同期プログラミング
WPF/Silverlight視点で視る MetroスタイルのXAML
77回スピーカーを経験して分かったこと」共有します
60分でわかる!SilverlightとWPFの入力チェック
Silverlight Line-Of-Business Applications
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション

今さらWPF? いいえ、今こそWPF!