PDC2日目の基調講演、シノフスキー氏の後は、Silverlightを担当するScott Guthrie氏(.NET Developer Platform)。話があったのは、この日から開発者向けのプレビューが開始されたSilverlight 4だ。非常にざっくりいうと、Silverlightは、Adobeのフラッシュのように、ブラウザ内で多彩な表示を行う機構なのだが、拡張が行われてきた結果ちょっと複雑なことになっている。

Silverlight 4に関して語るScott Guthrie氏(.NET Developer Platform)

当初、Silverlightは、WPF/E(Windows Presentation Foundation / Everywhere)と呼ばれており、.NETのWPF(表示/プレゼンテーションを司るAPIフレームワーク)のサブセットとしてスタートした。サブセットとしたのは、ブラウザ内で動作し、Windows以外のプラットフォームでも動作させるためで、WPFが持つ3Dオブジェクトなどの扱いが除外された。

その後、Silverlightは、WPFとは別に進化を始め、Silverlight 2でC#などを動作させるCLR(Common Language Runtime。仮想コードの実行エンジン)を取り込み、Silverlight 3では、WPFにない機能も追加された。

Silverlight 4では、WPFと共通のエンジンを使うようになり、ようやく両者の基盤が共通化された。

今回のSilverlight 4では、いくつかの機能が追加された。大きなものとしては、Webカメラやマイクなどのハードウェアの取り扱いおよび、HTML表示(ただしレンダリングエンジンとしてはIEを利用)などが強化された。また、実行速度的には約2倍、起動も30%高速化したという。

ステージのデモでは、カメラから取り込んだ画像を加工して、twitterのアイコンとしてアップロードするといったことが行われた。

Webカメラでリアルタイムに取り込んだ画像に対して、クロマキー効果を適用し、服の部分に別の動画を合成している

Webカメラの画像をリアルタイムに変形、スナップショットを撮る。その後、この画像をTwitterのアイコン画像としてアップロードするデモが行われた

Webカメラによるバーコードの認識のデモ

現在のSilverlightでは、画面の表示などを記述するXAMLとC#などで作ったコードファイルの2つを使う。Silverlight 1.xでは、JavaScriptを使っていたが、これは互換性のためにのみ現在はのこされている状態で、現在では、C#やVisual BASIC.NETなどのCLRで動作する言語を使うことが推奨されている。

また、Silverlightは、ブラウザの中だけでなく、単体としても実行可能となっている。これは、フラッシュに対するAirのようなもので、RIA(Rich Internet Application)と呼ばれている。Silverlightは、ブラウザのプラグインとして動作するため、実態としてはDLL。これを呼び出して、デスクトップ上に表示させるプログラムが容易されたため、単体アプリケーションとしても実行できるようになったわけだ。

現在のSilverlightは、.NETをコンパクトにして、単体として配布実行が可能な形にまとめ、ブラウザ、オフブラウザ(ブラウザの外)環境で実行が可能なWeb/RIAアプリケーション実行環境となったといえるだろう。

Silverlightで作った多国語対応テキストエディタのデモ

また、オフブラウザ実行環境を想定し、プリンタやクリップボードのアクセス、右クリックやホイールイベントなどに対応した。単体実行されるアプリケーションとして、ユーザーが信頼すると設定した場合、ドラッグ&ドロップのターゲットとしても動作し、ローカルファイルへのアクセスも可能だ。通常、ブラウザ内で実行されるアプリケーションは、セキュリティ上の問題があるため、これらの動作やフルスクリーン、キーボードの占有などが行えないようになっている。さらに、COMオートメーションオブジェクトが扱えるようになり、たとえば、Excelを起動して操作するといったことができる。また、Windowsが持つ機能、たとえば、ロケーションAPIなどもCOMオートメーション経由で利用できるため、GPSからの位置情報なども取得できるようになる。

信頼されたアプリケーションとして実行された場合、Silverlightでは、ローカルファイルシステムへのアクセスやハードウェアアクセス、COMオートメーションオブジェクトの呼び出しが可能となる

カメラや、位置情報、そしてリアルタイムの画像合成など、AR的な要素を取りそろえているところが、流行には敏感なところを感じさせる。

現状、.NETとSilverlightの間には、機能差があるため、これをよりどころに使い分けを判断することは可能だが、Silverlight 4で、アプリケーション実行環境としても、幅を広げたというのが現状だろう。