連載:次世代技術につながるSilverlight入門

Silverlightアプリの作り方

岩永 信之
2012/02/24
Page1 Page2 Page3

 マイクロソフトが提供するGUIフレームワークでは、XAMLを使ったUI定義と、データ・バインディングを基本にした開発スタイルが定着してきた。

 WPF(Windows Presentation Foundation)、Silverlight、そして、Windows 8(コードネーム)で導入されるMetroスタイル・アプリでも、このスタイルで開発することになる。これらのGUIフレームワークを総称して、「XAMLファミリ」と呼ぼう。

 本連載では、XAMLファミリの代表として、Silverlightについて説明を行っていく。ほかのXAMLファミリにも共通する部分については特に強調して説明するつもりである。「XAMLファミリ共通開発のすゝめ」で説明したように、共通する部分、しない部分を意識して作れば、SilverlightからほかのXAMLファミリへの移植は容易だろう。

 第1回となる今回は、Silverlightの開発環境の整え方から始めて、Silverlightの開発方法や動作の仕組みについて説明していく。

Silverlightとは

 まず初めに、XAMLファミリ内におけるSilverlightの立ち位置を説明しておこう。

 Silverlightは、ブラウザ・プラグインとして提供されるGUIフレームワークである。

 最近では、スマートフォンやタブレットにおいてブラウザ・プラグインを提供できないということもあり、ブラウザ・プラグインという考え方自体が下火となっている。スマートフォンも含めてクロス・プラットフォームにしたければHTML5が唯一の選択肢である(もちろん、クロス・プラットフォームであることには良しあし両方ある)。

 しかし、依然、デスクトップPCは大きな市場だ。そして、デスクトップにおいては、Silverlightの強みがいくつかある。まず、SilverlightはXAMLファミリの中では最も間口が広い。Windows(Internet Explorer、Firefox、Chrome)とMac OS(Safari、Firefox)での動作が可能だ。

 Windowsだけで使う場合でも、配布が簡単という利点がある。ランタイムのサイズが小さく、エンド・ユーザーにインストールしてもらう負担が小さい。アプリのアップデートも、サーバに配置し直すだけなので楽である。

 また、DRM(Digital Rights Management)付きの動画や、Smooth Streamingを使った動画配信など、メディア関連にはSilverlightにしかない強力な機能がある。

【コラム】Silverlight for Windows Phone 7

 デスクトップ向けのブラウザ・プラグインとしてのSilverlightのほかに、Windows Phone 7(以下、WP7)アプリ開発用のSilverlight for WP7というものも存在する。

 これは、Silverlightといっても、ブラウザ・プラグインのものとは参照できるライブラリに差がある。大まかにいうと、以下のような差である。

  • ブラウザ内に固有の機能(=HTMLブリッジなど)がない
  • WP7固有の機能(=センサーAPIなど)が使える
  • 基本クラス・ライブラリに関しては、(Windows Phone OS 7.1向けのものの場合)Silverlight 3と4の中間程度の機能となっている

開発環境を整える

 次に、Silverlightアプリ開発の下準備をしていこう。

Visual Studio

 SilverlightアプリはVisual Studioなどを使って開発できるものの、Silverlightのリリースのタイミングは.NET FrameworkやVisual Studioと異なるため、最新の開発ツールを別途インストールする必要がある。現在の最新バージョンは5だ。

 開発ツールは、「Silverlight開発者向け情報」のページからダウンロードできる。以下のツール(以下、「Silverlight Tools」と呼ぶ)をダウンロードすればよい。

 開発者向け情報ページにはソフトウェア開発キット(SDK)というものもあるが、Silverlight 5 Toolsに含まれているため、こちらのみのダウンロードで構わない。

 このツールは、有償版(=Professional以上のグレード)のVisual Studioはもちろん、無償版のVisual Web Developerにもインストールできる。

 ちなみに、Silverlight開発は、C#およびVB(Visual Basic)で行える(ライブラリだけであれば、さらにF#も利用可能)。

Expression Blend

 Visual Studioのほかに、Expression Blendというツールもある。Visual Studioは言わずと知れた開発者向けの統合開発環境だが、Expression BlendはUIデザイナー向けのツールとなっている。

 データ・テンプレートや、アニメーションの編集など、Visual Studio上ではXAMLコードを手書きするしか編集方法がないものに対して、Expression Blendを使えばグラフィカルな環境でUIデザインが可能になる。

 残念ながら、Expression Blendは有償製品で、無料版は提供されていない。

【コラム】Visual StudioとExpression BlendのUI統合

 Visual Studioの次期バージョンとなるVisual Studio 11(コードネーム)では、XAMLビジュアル・デザイナ画面がExpression Blendと共通化されるようだ。

 ただし、最終的にどこまでの機能がVisual Studio側に提供されるかは分からず、少なくとも現状のDP(Developer Preview)版では、アニメーション設定などいくつかの機能はやはりVisual Studioにはない。

そのほかのライブラリ

 Silverlightアプリ開発に必須ではないが、助けとなる定番のライブラリ/フレームワークについても紹介しておこう。

Silverlight Toolkit

 マイクロソフトの製品は、通常、2〜3年周期で大きなリリースがある。Silverlightの場合、バージョン3くらいまでは更新が早かったものの、今はすでにペースが落ち着いている。いずれSilverlight 6になるにせよ、WPFやWinRTに統合されるにせよ、少し間が開くだろう。

 その一方で、新しい機能を2〜3年もの長期間待っていられないという要望も多い。そこで、SDKとは別に、「Toolkit」という呼称で、追加のライブラリを小出しにしている。Silverlightも例に漏れず、「Silverlight Toolkit」というものを、オープンソース・プロジェクトのホスティング環境であるCodeplex上で公開している。

 Silverlight Toolkitには、SDKには含まれていない追加のコントロールがいろいろと含まれている。例えば、タブ・コントロールやカレンダ・コントロールなどである。

 Silverlight Toolkitは、NuGetパッケージ・マネージャを使って入手可能だ。

Expression Blend SDK

 Expression Blendというツール自体は有償製品だが、Blend付属のライブラリだけはExpression Blend SDKという名前で無償提供されている。

 このライブラリには、いくつか便利なコントロールや、図形、エフェクトなどが含まれている。

非同期処理

 Silverlightでは、通信など、時間のかかる処理が全て非同期APIのみの提供になっている。これは、Silverlight for WP7やMetroスタイル・アプリでも同様である。このため、非同期処理を書きやすくするための補助ライブラリが欲しくなるだろう。

・Taskクラス

 Silverlight 5で、Taskクラス(System.Threading.Tasks名前空間)が追加された。デスクトップ版の.NET Frameworkではバージョン4で追加されたが、この.NET 4相当のTaskクラスをSilverlightに移植したものである。Taskクラス登場以前と比べれば、いくらか非同期処理が書きやすくなっている。

・C# 5.0の非同期メソッド

 現在はCTP(Community Technology Preview: ベータ以前の早期プレビュー版)だが、C# 5.0で追加される予定の非同期メソッド機能をお試し利用することが可能だ。

Visual Studio Async CTP

 プレビュー版ではあるが、“as-is”(=無保証・自己責任ではあるが、自由に利用可能)ライセンスで使用できる。正式版は恐らくVisual Studio 11と同時期になるだろうが、今から試してみるのもいいだろう。

・Reactive Extensions

 現状、非同期処理を正式版の範囲で最も簡単に書く方法は、Reactive Extensions(以降、Rx)を使うことだろう。リンク先の言葉を借りるなら、Rxは、LINQが適用できるデータソースの概念を「非同期」と「イベント」に広げた、いわば「LINQ to Asynchronous」「LINQ to Events」とでも言うべきものである。

 Rxは、NuGetパッケージ・マネージャを使って入手可能だ。

MVVMパターン

 Silverlightアプリ開発では、「MVVMパターン」というアーキテクチャ・パターンを使うことが多いため、これを補助するためのフレームワークも押さえておくべきだろう。「MVVMパターンを使ったクロス・ターゲット開発」では、MVVM Light Toolkitというものを利用した。そのほか、以下のまとめ記事が参考になるだろう。

 多くのMVVMフレームワークが、NuGetパッケージ・マネージャを使って入手可能である。

 開発環境が整ったところで、次のページからさっそく、初めてのSilverlightアプリを開発してみよう。


 INDEX
  [連載] 次世代技術につながるSilverlight入門
  Silverlightアプリの作り方
  1.Silverlightとは/開発環境を整える
    2.初めてのSilverlightアプリ
    3.XAMLコードとC#(やVB)コード/Silverlightアプリの配布

インデックス・ページヘ  「連載:次世代技術につながるSilverlight入門」


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