前回は,マイクロソフトのリッチ・クライアント技術のメインとも言うべき「WPF (Windows Presentation Foundation)」について解説しました。今回はそのWPFから生まれたクロスプラットフォーム/クロスブラウザのRIAテクノロジである「Silverlight」を解説します。Silverlightは,軽量で,かつ多くの技術と連携することができるため,既存のテクノロジにリッチなコンテンツを容易に加えることができる新世代テクノロジです。

Silverlightの主な機能

 Silverlightは,当初の開発コード「WPF/E (Windows Presentation Foundation / Everywhere)」の名前が示す通り,「WPF (Windows Presentation Foundation)」のサブセットとして誕生しました。そのため,WPFと同様に「XAML (Extensible Application Markup Language):ザムル」というXMLベースのプレゼンテーション記述言語を使用します。

 Silverlightは,クロスブラウザ/クロスプラットフォーム(表1)に対応したリッチなメディア・エクスペリエンスとRIA (Rich Interactive Application:表現力/操作性に優れたアプリケーション) を実現する開発実行環境です。Webブラウザにプラグインする形で動作します(図1)。

表1 Silverlight動作環境
対応OSWindows XP Service Pack 2,Windows Vista,Mac OS X
対応ブラウザInternet Explorer 6以降,Firefox 1.5以降,Safari 2.0以降

図1 Silverlightのアーキテクチャ

 Silverlightは現在,1.0と1.1という二つのバージョンの開発が同時に進行しています。これらについての詳細は後述しますが,アーキテクチャ(図1)のコアや動作方法は1.0と1.1でほとんど変わりません。

 Silverlightは以下のような特徴を備えています。

軽量なランタイムと簡単なインストール
 ランタイムは主要なWebブラウザに対応し,ダウンロードサイズも2MB程度と軽量。ブラグインが未インストールの場合はインストール・サイトへの誘導を行うため,手軽にインストールできます。

ベクターベースのグラフィック
 グラフィックはWPFと同様,ベクターベースであるため,任意のサイズへの拡大/縮小も可能。多彩で柔軟性の高いグラフィックを表現できます。

統合的なメディア形式
 統合的なメディア形式をサポートすることで,高精細(HD)からモバイルまで幅広く対応。さらに,ブロードキャスト型オーバーレイを統合することで,品質を損なうことなく,滑らかなビデオやアニメーションを使った配信が可能になります。対応するメディア形式は,以下の通りです。
・WMV (Windows Media Video)
・SMPTE (Society of Motion Picture and Television Engineers)
・VC-1
・WMA (Windows Media Audio)
・MP3 Audio

既存のWebテクノロジとの容易な連携
 JavaScriptや.NET Frameworkをベースとしているため,既存の技術 (XHTML,Ajax,PHP,Apacheなど) との連携も容易です。また,JSON,RSS,POX,RESTなどの共通プロトコルやLINQ (Language Integrated Query) もサポートしているため,Webサービスやマッシュアップともシームレスに連携できます。

検索エンジンとの連動
 インタフェースやコンテンツがすべてXMLベースのXAMLで記述されているため,インデックス化や検索エンジンへの最適化 (SEO: Search Engine Optimization) が容易です。

多彩な開発言語(1.1以降)
 Silverlight 1.0はイベントハンドラにJavaScriptを使用していますが,Silverlight 1.1ではJavaScriptに加え,.NETマネージドコードをサポートします。そのため,C#,Visual Basic .NETをはじめ,IronRubyやIronPythonなどのCLRベースの各種開発言語を利用できます。

二つのSilverlight?

 先述したように,Silverlightには同時に開発が進められている二つのバージョンが存在します。「Silverlight 1.0」と「Silverlight 1.1」です。図1のアーキテクチャをご確認いただくとわかる通り,Silverlight 1.1はSilverlight 1.0を完全に含む形となっているため,構成から動作まで方法は同じです。

 Silverlightアプリケーションは,テキストエディタでももちろん開発できますが,描画部分の記述は非常に複雑です。そのため,WPFと同様に開発者向けの「Visual Studio 2005 / 2008」,デザイナー向けの「Expression Blend (正式対応はExpression Blend 2)」といった統合開発環境が用意されています。

 Silverlight1.0と1.1が登場したことによってWebにおける可能性は以下のように大きく広がりました(表2)。

表2 Webアプリケーションの可能性
従来のWebアプリケーションSilverlightの
Webアプリケーション
・HTML / JavaScript (Dynamics HTML)
・HTML / .NET (ASP.NET)
・HTML / JavaScript / .NET (ASP.NET AJAX)
・XAML / JavaScript (Silverlight 1.0)
・XAML / .NET (Silverlight 1.1)

 さらに,これらを組み合わせることによりWebアプリケーションで非常に豊かな表現を生み出すことが可能となります。Silverlight 1.0は特に,XAMLを使用することを除けば,通常のDynamics HTMLと変わりがありませんので,他の言語(例えば,JavaやPHPなど)と連携することも容易です。

 SilverlightはWPFと同じくXAMLを使用しますが,WPFとまったく同じ表現ができるわけではありません。以下は,Silverlight 1.0と1.1の各機能と,WPFにある機能のうちSilverlightでできないことを解説します。

 Silverlight1.0では以下の機能を提供しています。
・2Dグラフィック -- シェープ,マスキング,切り抜き,変換(傾斜,回転,拡大/縮小,変形,マトリクス)
・アニメーション -- 直線アニメーション,離散アニメーション,スプラインアニメーション
・入力 -- マウス,キーボード,インク
・メディア -- WMV,WMA,MP3
・イメージ -- JPEG,PNG
・テキスト
・HTTPダウンローダー
・XAMLパーサー
・JavaScript DOM

 現在のSilverlight 1.1(アルファ版)で提供している機能は以下の通りです。
・Silverlight 1.0の機能
・マネージドコード (CLR)
・XAML拡張
・ユーザーコントロール
・キャンバス
・ボタン (※1)
・スクロールバー (※1)
・スライダー (※1)
・リストボックス (※1)
・マウスイベント (※2)
・キーボードイベント (※2)
・リソースディクショナリ (※2)

※1 アルファ版ではサンプル・コントロールとして提供
※2 アルファ版では一部の機能のみ提供

 正式リリース版では上記の※1,※2を付けた機能が正式版になるのに加えて,以下の機能が追加される予定です。
・テキストボックス
・チェックボックス
・ラジオボックス
・チェックボックス
・グリッド
・スタックパネル
・ビューボックス
・データバインディング
・スタイリング

 また,WPFにある機能のうち,Silverlightでできないこととして以下のようなものがあります。
・ツリービュー
・リッチテキストボックス
・3Dベクタグラフィック
・GPU処理
・ブラウザ外での実行
・オフライン実行

SilverlightとASP.NET AJAXの連携

 マイクロソフト・テクノロジーの中で同じWebアプリケーションとして動作する「ASP.NET AJAX」があります。ASP.NET AJAXは従来のASP.NETをAjax対応にするためのテクノロジであり,リッチメディアやRIAのようなコンテンツを表現するテクノロジではありません。

 しかし,ASP.NET AJAXの機能の一つにFuturesと呼ばれる今後追加予定の機能を集めたコンポーネントが存在します。この中にSilverlightを使用するためのコントロールが含まれているため,容易に連携させることが可能です。それにより,従来のWebアプリケーションに加え,Ajaxを使ったインタラクティブなアプリケーション,SilverlightによるRIAアプリケーションを組み合わせて,より柔軟なアプリケーションを作成することが可能になります。

 次回は,Silverlightとも縁の深い,従来のWebアプリケーションを容易にAJAX対応のインタラクティブなWebアプリケーションにするためのテクノロジである「ASP.NET AJAX」に焦点を当てて紹介していきます。

 なお,インフラジスティックでは,Silverlightのデモを9月7日開催のセミナー「XDev(X-over Development Conference)」(日経BP主催)の展示会で紹介します。ぜひ,お越しいただき,ご自分の目でSiliverlightの技術を確認してください。