特集:WPF 4とSilverlight 4

これから業務アプリを開発するならどっち?

グレープシティ株式会社 八巻 雄哉
2010/04/20
Page1 Page2 Page3

 ほぼ同時に正式リリースとなった(.NET Framework 4の)WPFとSilverlightのバージョン4(Visual Studio 2010日本語版の正式リリースは明日、2010年4月21日の予定)。業務アプリケーションにおいて重要視される「機能性/操作性」と「配布性/保守性」は、元来トレードオフの関係とされてきたが、ここにきてWPFとSilverlightは寄り添う形でこの問題を解決しようとしている。言い方を変えれば、どちらか一方の技術でしか実現できない部分は少なくなってきており、その選択は難しくなってきているといえる。

 本稿では、その選択の難しさを少しでも解消すべく、業務アプリケーション開発という観点で2つの技術を比較、整理してみようと思う。なお、筆者はどちらかというとWPF派である。本稿の内容はその点を多少考慮して受け止めていただくとよいかもしれない。

それが大事

 業務アプリ開発において技術を選定する際のポイントは人それぞれかもしれないが、筆者は次の4つ点が重要であると考えている。

  • 導入しやすいこと
  • 保守しやすいこと
  • 開発しやすいこと
  • 顧客要件が実現可能であること

 そこでこの4点について、順を追って見ていくことにする。

導入容易性

 アプリケーションを導入する際の障壁の1つとなるのが、アプリケーション・ランタイム(以下、ランタイム)のインストールである。ランタイム不要がベストではあるが、WPFもSilverlightもクライアント環境にランタイムがインストールされていなければアプリケーションを実行することはできない。

 まずは両ランタイムがどのような環境をサポートしているのか、インストール要件を確認しておこう。

インストール要件

 両ランタイムのインストール要件は下の図のようになっている。

OS .NET Framework 4( WPF ) Silverlight 3 Silverlight 4
Windows 7
Windows Server 2008 R2
Windows Vista
Windows Server 2008
Windows XP
Windows Server 2003
Windows 2000
.NET Framework 4とSilverlight 3、4のインストール要件
どちらもランタイムのインストールに管理者権限が必要。
OSによりサービスパックの適用が必要。
SilverlightはSSE命令セットをサポートしたCPUが必要。

 どちらもインストール可能なOSにほぼ変わりはないが、Silverlightはバージョン3であればWindows 2000がサポートされる点が異なる(WPFはすべてのバージョンでWindows 2000をサポートしていない)。しかしながら、Windows 2000は2010年7月13日で延長サポートが終了してしまうため、新規開発では特に気にする必要はないだろう。

 次にそれぞれのランタイムの普及率を見てみよう。

ランタイム普及率

 ランタイムが広く普及していれば、ランタイムをインストールする手間を省ける確率は高い。

 WPF 4の場合、必要となるランタイムは.NET Framework 4になるが、バージョン4はまだリリースされたばかりである。そのため、ここでは参考までにバージョン3.5までの.NET Frameworkの普及率を見てみることにしよう。

 下の図は、マイクロソフトのシニアプログラムマネージャであるScott Hanselman氏の2010年1月のブログに掲載されたアンケート結果をグラフ化したものである。

.NET Frameworkのバージョン別普及率
Scott Hanselman - How many PCs in the world have the .NET Framework installed?から引用。

 これを見ると全体の65%にアンケート実施時点で最新の.NET Frameworkである3.5 SP1がインストールされており、未インストールの環境はわずか10%となっている。マイクロソフト社員が行った調査であるという点を差し引いて考えたとしても、これは筆者が思っていたよりもずっと高い数字である。

 もう少し確実な値ということであれば、.NET FrameworkがプレインストールされているOSの普及率を見ればよい。下の表は株式会社サムライファクトリーが独自に調査した2010年2月の日本国内におけるOSシェアからクライアントWindows OSを抜き出し、割合を再計算したものである。

Windows OSにプレインストールされている
.NET Frameworkのバージョン
普及率
2000以前 - 2%
XP - 61%
Vista 3.0 31%
7 3.51(3.5 SP1) 6%
株式会社サムライファクトリー OS・ブラウザ国内シェア調査

 続いて、Silverlightのランタイム普及率を見てみよう。下のグラフは、Rich Internet Application Statisticsというサイトで公開されている日本国内におけるSilverlightランタイムの普及率である。

Silverlightのバージョン別普及率
2010年4月14日から過去30日間の統計。

 全体の71%がSilverlight 3となっており、未インストールは27%である。Flash Playerと比較してしまうと決して高い普及率であるとはいえないかもしれないが、全世界のSilverlight 3の普及率である53%より18ポイントも高い数字は評価すべき結果であるといえよう。

 なお、いまのところWindows OSにはSilverlightランタイムがプレインストールされていないが、PCメーカーが出荷時にプレインストールしているPCはいくつか存在する。

 ここまでそれぞれのランタイム普及率を見てきたが、結局のところ導入先に1台でもランタイムがインストールされていない環境があればインストールは避けて通れない。そこで、ランタイムのインストール際に重要となるインストーラ・サイズ、インストール時間、インストール方法の3点について見ていくことにしよう。

インストーラ・サイズ

 .NET Frameworkというと、とにかく巨大でダウンロードもインストールも時間がかかるというイメージを持っている方は多いのではないだろうか。かくいう筆者もその1人である。いや、正確には1人であった。実際に、.NET Framework 3.5 SP1のインストーラ・サイズは231.5MBytesとなっており、巨大であることは否定できない。

 しかしながら、これは.NET Framework 4以降で大きく改善される。下の表を見てほしい。.NET Framework 4のインストーラは大きくても50MB台のサイズとなっているのがお分かりいただけるであろう。

.NET Framework インストーラの種類 サイズ ダウンロード・サイズ
3.5 SP1 スタンドアロン・インストーラ(x86とx64とia64) 231.5MBytes -
Webインストーラ 2.8MBytes 10〜60MBytes
4
(フルパッケージ)
スタンドアロン・インストーラ(x86のみ) 35.3MBytes -
スタンドアロン・インストーラ(x86とx64) 48.1MBytes -
スタンドアロン・インストーラ(x86とia64) 51.7MBytes -
Webインストーラ 869KBytes 25〜56MBytesv(ベータ2)
4
Client Profile
スタンドアロン・インストーラ(x86のみ) 28.8MBytes -
スタンドアロン・インストーラ(x86とx64) 41MBytes -
Webインストーラ(ベータ2) 868KBytes 25〜54MBytes(ベータ2)
.NET Frameworkの種類別インストーラ・サイズ
WPF Performance and .NET Framework Client Profile : What’s new in .NET Framework 4 Client Profile RTM

 インストーラサイズ縮小の理由の1つして、システム要件の変更により.NET Frameworkインストールの前提条件となるOSコンポーネントなどがインストーラから削除されたというのがあるようだ。例えば、WIC(Windows Imaging Component)は.NET Frmaework 3.5のインストーラに含まれているが、このコンポーネントはWindows XP SP3ではすでにインストール済みだ。インストール要件がWindows XP SP3となっている.NET Framework 4のインストーラでは必要がない。また、7-Zipを使用することで従来よりも高い圧縮率を実現しているそうだ。

 なお、クライアント環境に必要なクラス・ライブラリのみを収録したClient Profileというバージョンは、フルパッケージに比べてさらに数MBytes小さいサイズとなっている。もちろんWPFアプリケーションはClient Profile上で動作が可能だ。

 一方、Silverlight側の大きな優位点といって間違いないのが、このインストーラ・サイズだ。これはSilverlightの開発当初から非常に重要視されてきた点であり、Silverlight 3では4MBytes台に抑えられている。Silverlight 4では1Mbytesほど大きくはなったが、それでも十分に小さいサイズであるといえよう。

Silverlight インストーラ種 サイズ
3 ランタイム 4.7MBytes
開発者ランタイム 6.41MBytes
4 ランタイム 5.96Mbytes
開発者ランタイム 8.15MBytes
Silverlightのインストーラ・サイズ

インストール時間

 インストーラ・サイズが小さいことは単にダウンロード時間が短いだけでなく、インストール時間も短くて済むということは容易に想像できる。しかしながら、具体的にどのくらいの時間がかかり、.NET FrameworkとSilverlightランタイムではどの程度の差が生じるのかは実際に試してみないと分からない。

 そこで、ここでは両ランタイムのインストールにかかる時間を下記の環境で計測してみた。測定環境のマシン・スペックは以下のとおりである。

PC:Dell Latitude D620
CPU:インテルCore 2 Duo T7400 2.16GHz
メモリ:3GBytes(DDR2)
OS:Windows 7 Enterprise x86(VHDブート)
HDD:7200rpm

Silverlight 4 16秒
.NET Framework 4 Client Profile 3分41秒
両ランタイムのインストール時間
インストーラを起動する時点からインストーラのダイアログを閉じた時点までを手動(ストップウォッチ)にて計測。
 .NET Framework 4 Client Profileのインストールには「スタンドアロン・インストーラ(x86とx64)」を使用。

 さすがにSilverlightは16秒という非常に短いタイムをたたき出しているが、それよりも.NET Frameworkのインストール時間が思っていたよりも、はるかに短かったことに筆者は驚いた。このあたりの長いか短いかという感覚は人によって異なる部分だろう。

インストール方法

 ここまでに紹介してきたインストーラ・サイズとインストール時間は、主にユーザーに時間的な負担を強いる要素だが、インストール方法によってはこの負担を大きく軽減することも可能だ。

 両ランタイムのインストール方法は、以下のように整理することができる。

  • アプリケーション・インストール前
    • 手動インストール
      • インストーラのダウンロードと実行
      • Windows Updateの追加選択
    • 自動インストール
      • WSUS(Windows Server Update Services)
      • Active Directoryのグループ・ポリシー、SMS(Systems Management Server)など
  • アプリケーション・インストール時(初回実行時)
    • WPF
      • Bootstrapper(必須コンポーネント)
        • MSI
        • ClickOnce
      • Internet Explorerの.NET Framework自動検出機能(WPFブラウザ・アプリケーション)
    • Silverlight
      • ダウンロード・サイトへのリンク表示(表示画像の変更可)

 最もユーザーの負担が少ないのは、WSUSやActive Directoryのグループ・ポリシーなどを使って事前に自動インストールしてしまう方法だろう。この方法は.NET FrameworkとSilverlightの両方で利用可能である。従って、運用先にこのような環境が整っている場合には、両者のランタイムの導入容易性に大きな違いはないといえる。

 また、WSUSやActive Directoryが使えない環境では、アプリケーションのインストール時、またはアプリケーションの初回実行時にランタイムもまとめてインストールさせる方法が有効だろう。その中でも特に紹介しておきたいのが、WPFブラウザ・アプリケーション(以下、XBAP)の場合に使用可能なInternet Explorerの.NET Framework自動検出機能だ。

 実はInternet Explorer 7以降のバージョンでは、拡張子がxaml、xps、xbapのいずれかである場合、.NET Frameworkがその環境にインストールされているかどうかを自動的に検出するようになっている。

 そして、.NET Frameworkがインストールされていなかった場合には、ユーザーにインストールを要求する以下のようなダイアログを表示し、その後バックグラウンドでのインストーラのダウンロード、インストールの開始という手順で.NET Frameworkのインストールが行われるようになっている。

ユーザーにインストールを要求するダイアログ

 続いて、保守が簡単に行えるかどうかといった点について両技術を見ていこう。


 INDEX
  特集:WPF 4とSilverlight 4 
  これから業務アプリを開発するならどっち?
  1.導入容易性
    2.保守容易性
    3.開発容易性と要件実現性


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH