GW中に強烈な風邪を引いてしまい、1週間ほど高熱に悩まされました。体温が39度を超えたときには、視界全体が黄ばんで見えるありさま。どうにか平熱に落ちつきましたが、今度は世の中が初夏のような暑さで、我がMacBookのパームレストも熱く……ん? 黄ばんで見えるのは熱のせいか?

さて、今回はMicrosoftの「Silverlight」について。Adobeが提唱する「リッチインターネットアプリケーション(RIA)」という概念は、FlashとPDF、そしてJavaScript / Ajaxの実行環境を内部に持つ「Apollo」として先に具現化しているが、このSilverlightも同様のコンセプトを持つ。WindowsとMac OS Xに対応するなど、マルチプラットフォーム指向である点も共通だ。今回は、最新α版の「Silverlight 1.1α」を利用して、その機能の概要を探ってみよう。

SilverlightとApolloを比較する

いきなりだが、Apolloとの比較からSilverlightの分析を始めてみたい。同じ"RIA"を標榜する実行環境のこと、提供する機能やコンセプトに違いがあるのか、共存させることが可能なのか、といった点に関心が集まるはずだからだ。

まずはコンセプトから。メディアリッチでインタラクティブな機能を持ちインターネットとの親和性が高いアプリケーションがRIAだとするならば、ApolloとSilverlightのターゲットは同じだ。両者とも、JavaScript / Ajaxの実行環境を備え、動画やベクターグラフィックスの扱いにも長けている。マルチプラットフォーム指向という点でも、現時点におけるLinuxサポートの有無を除けば変わりがない。

ただし、両者の技術的コアはまったく異なる。Silverlightのそれは、Extensible Application Markup Language(XAML)であり、Windows Presentation Foundation(WPF)の機能に直接アクセスできること。一方のApolloは、Flash / FlexとPDFだ。

構造もだいぶ違う。下表に挙げたとおり、SilverlightはIEやFirefox、SafariといったWebブラウザのプラグインとして動作し、Safari(WebCore / JavaScriptCore)ベースのブラウザを内包するApolloとは出発点が異なる。Apolloのアプリケーションは一度ローカルにインストールしてから起動するが、SilverlightのアプリケーションはWebブラウザ上で起動することが基本(ダウンロードするとHTMLなどリソースファイルがむき出し)、という点も異なる。よって、ApolloとSilverlighはなんの問題もなく共存できる。

Silverlightで注目すべきは、開発言語の豊富さ。Silverlight 1.1以降では、.NETのmini-CLR(Common Language Runtime)がサポートされたことにより、.NETプラットホーム(のサブセット版)がマルチプラットフォーム環境で利用可能になったのだ。マネージド・コードをサポート、C#やVisual Basic、Python(IronPython)といった言語も利用できる。こちらの記事/によれば、近々Ruby(IronRuby)もサポートされるだろうとのこと。ApolloでもFlex経由でJavaや.NETの機能を利用できるが、開発者の分母の大きさと拡張性という点では、Silverlightは互角以上の存在だ。

表: SilverlightとApolloの特徴比較

Silverlight 1.0 Silverlight 1.1 Apollo
ブラウザ内蔵 × ×
Adobe Flex × ×
PDF × ×
Flash × ×
WMV ×
ActionScript × ×
JavaScript
IronPython × ×
Jscript × ×
.NET Framework × ×

OS Xで「.NET」が使えるということ

前置きが長くなったが、サンプルアプリケーションを通じてSilverlightの機能を眺めてみよう。利用した環境は、MacBook / Mac OS X 10.4.9 / Safari 2.04だ。

まず試したのは、MSDNのSilverlight関連ページにあるデモ。文字通り"ページをめくる"表示効果を体感できる「Page Turn」、WMVとMP3を利用したインタラクティブな「Silverlight Piano」、ストリーミング映像を流す「Media Library」。いずれもSilverlight 1.0 Betaで動作可能だ。

こちらのサイトには、mini-CLRをサポートしたSilverlight 1.1以降でなければ動作しないデモが置かれている。なかでもIronPythonのコードを直接実行できる「DLRConsole」は必見。OS Xで.NETおよびmini-CLRが利用可能になったことが体感できるという点で、ほかのマルチメディア機能を強調したアプリケーションより興味深い。

なお、ダウンロードしたパッケージに含まれる「Default.html」を開くと、ローカルでもSilverlightのアプリケーションを実行できるが、ランタイム(ClientBinフォルダにDLLとして置かれるようだ)が含まれない場合はエラーとなる。この問題は自力でDLLをダウンロードすれば解決できるようなので、以下に示すScribblerの事例を参考に、他のアプリケーションでも試してみるといいだろう。

$ cd ~/Desktop/Scribbler
$ mkdir ClientBin
$ cd ClientBin
$ curl -O http://silverlight.net/Samples/1.1/Scribbler/run/ClientBin/Viki.dll

ページをめくる表示効果がおもしろいデモ「Page Turn」

IronPythonのインタープリタとして使える「DLRConsole」

スケッチソフトの「Scribbler」

「Chess」はC#とJScriptで記述されているとのこと