SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

デブサミ2011セッションレポート(PR)

デブサミ2011レポート
Windowsフォームで大丈夫か? 一番良いのを頼む。

  • このエントリーをはてなブックマークに追加

 WPF(Windows Presentation Foundation)が登場してから約4年経つが、Windowsベースの業務アプリケーション開発におけるUI技術としては、今もなおWindows フォームが主流といえる状況だ。現在はWindowsフォームでこと足りていたとしても、WPFの採用を検討すべきなのか? 相応のコストやリスクを払っても、WPFに移行する価値はあるのだろうか? 本セッションでは、こうした疑問に対するいくかのヒントが示された。

  • このエントリーをはてなブックマークに追加

 WPF(Windows Presentation Foundation)が登場してから約4年経つが、Windowsベースの業務アプリケーション開発におけるUI技術としては、今もなおWindowsフォームが主流といえる状況だ。現在はWindowsフォームでこと足りていたとしても、WPFの採用を検討すべきなのか? 相応のコストやリスクを払っても、WPFに移行する価値はあるのだろうか? 本セッションでは、こうした疑問に対するいくかのヒントが示された。

グレープシティ株式会社 ツール事業部 テクニカルエバンジェリスト 八巻雄哉 氏
グレープシティ株式会社 ツール事業部 テクニカルエバンジェリスト 八巻雄哉 氏

単純なスピード比較よりも、なめらかなユーザーインターフェイスに注目

 「WPFはGPUを活用しているため、Windowsフォームよりも描画パフォーマンスが良い」とよくいわれているが、本当にそうなのか? グレープシティの八巻氏は、それを検証するために、WPFとWindowsフォームのパフォーマンス比較のデモを実施した。

 まず、WindowsフォームとWPFでそれぞれButtonコントロールを1000個生成し、描画時間を自動計測。WPFの実行結果はWindowsフォームの数十分の1の時間となった。しかし、八巻氏は「実は、こうした絶対的なスピード比較はあまり意味がない」と指摘。

 その言葉を裏付けるデモとして、続いてWPFでTextBoxコントロールを1000個生成し、実行時間を計測。すると、処理完了=ストップウォッチが止まるときに鳴るアラートと、TextBoxが表示されるタイミングに明らかなズレが生じた。次に、目視で手動計測したところ、自動計測した時間の十数倍という結果に。

 「Windowsフォームは『即時モード』と呼ばれる命令型の描画で、描画命令を実行したタイミングでVRAMの実画面のフレームバッファに描画が行われる。これに対して、WPFは『保持モード』というデータ駆動型の描画方式で、コントロールの生成完了と画面に描画されるタイミングが一致しない。つまり、描画方式がまったく異なるので、単純に数字だけで比較できるものでないということ」と、八巻氏は説明。そして、この保持モードの利点は、「純粋なスピードではなく、“Fluid UI”(なめらかなユーザーインターフェイス)にある」とした。

 たとえば、画面を高速スクロールするような場合、即時モードでは描画途中の状態で画面更新されてティアリングが発生してしまうケースがあるが、保持モードではそのようなことがなく、スムーズにスクロールできる。これは、DirectXランタイムにより、描画のタイミングをディスプレイの更新に同期させることができるからだ。

図:Windowsフォーム(上)とは描画方式が異なるため、スピードなどは単純比較できないが、WPFの保持モード(下)は“Fluid UI”をはじめさまざまなメリットを提供する
図:Windowsフォーム(上)とは描画方式が異なるため、スピードなどは単純比較できないが、WPFの保持モード(下)は“Fluid UI”をはじめさまざまなメリットを提供する

カスタマイズ性の高さに加え、「InputMan」で入力コントロールもカバー

 八巻氏はWPFの描画パフォーマンス特性として、ほかに「UIの仮想化」を挙げた。これは、画面に表示されている部分のオブジェクトのみを生成するという技術で、これにより、レイアウトプロセスの負荷を軽減し、メモリ使用量も削減できる。当然、スクロールパフォーマンスも大幅に向上する。なお、WPF4の標準DataGridでは、行(縦)方向にしかUIの仮想化が行われないが、グレープシティの「FlexGrid」(WPF版は2011年夏発売予定)を利用することで、行と列の双方向にUIの仮想化が行われるようになるという。

 さらに八巻氏は、柔軟で強力なUIレイアウト機能も、WPFの注目すべき特徴として挙げた。

 「業務アプリケーションにおいても、多様な画面解像度への対応は、今後ますます重要となるテーマ。Windowsフォームの絶対配置で対応するのは大変だが、相対配置のWPFでは、ほとんどコーディングを必要とせずにUIの定義だけで柔軟に対応できる」

 このようにカスタマイズ性の高いWPFだが、業務アプリケーション開発という視点で見ると、標準で用意されているコントロールがWindowsフォームのように細分化されていないという弱点もある。そこをカバーするのが、グレープシティが提供する日本仕様の業務系入力コントロール集「InputMan」だ。InputManでは、数値入力やマスク入力などWPF標準では用意されていないコントロールを提供しているほか、和暦やフリガナ入力といった日本仕様の機能にも対応。なお、WPF版のInputManは2011年4月11日のリリースを予定しているという。

 将来性という観点からも、八巻氏は「少なくとも5年間は、おそらくマイクロソフトが今後出してくるプラットフォームでも、UI技術の基盤はXAMLベース」と考えており、「XAMLという技術に投資しておくことは無駄にならず、十分価値があること」と強調。

 本セッション紹介文の最後に「答えは皆さん自身で出してください」とコメントしていた八巻氏だが、やはりWPFへの移行が「正解」ということになるようだ。

 なお、八巻氏のblogではセッションで行われたデモについて詳しく解説している。

お問い合わせ

グレープシティ株式会社

宮城県仙台市泉区紫山3-1-4

http://www.grapecity.com/japan/

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
デブサミ2011セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5805 2011/03/14 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング