Microsoft は Silverlight に対して,Web 開発の状況を支配するフレームワークとツールセットになる,という壮大なビジョンを持っていた。しかし期待は叶わなかった。それどころか Silverlight 6 はもう現れないのではないか,という噂さえある。もしそうなったら,Silverlight 開発者たちははたして簡単に WinRT に移行できるのだろうか? いくつか数値を見る限りでは,それはかなり簡単なことのようだ。
Microsoft はかつて 2005~2006 年頃,Flash を打ち倒して web 業界を席巻する RIA フレームワークおよびツールセットとして Silverlight を思い描いていた。しかし Microsoft が手に入れたのは,成否の相半ばする結果だった。成功という面で挙げられるのは IE6 から IE9 まで最新バージョンの IE, Firefox, Google Chrome, さらには Safari/MacOS/Intel にも Sliverlight が実装されたことだ。いくつかのバージョンは Safari/MacOS/PowerPC, Safari/Windows, SeaMonkey でもサポートされた上,Opera に実装する計画もあった。フレームワークの方は Mono チームの努力により,Moonlight プロジェクトとして Firefox/Linux への移植を果たしている。モバイルにおいては,Silverlight は Windows Phone 7 の主要な開発ツールである。Nokia が Symbian に移植する計画もあったが,同社が WP 7 に移行した今となっては実現することはないだろう。さらにアウトオブブラウザ実行のサポートによって,Silverlight はデスクトップにも進出している。これにより,ブラウザから独立して動作する RIA アプリの開発が実現された。すべてが前途有望に見える。しかし Silverlight は本当に成功したのだろうか?
StatOwl サイトによると,Silverlight の市場浸透率は 2011年10月現在で 67.36% である。Flash の 95.37% や Java の 76.57% と比較した場合,Microsoft 製のこの技術の方がずっと新しいことを考えれば,これは良好な数字だ。一方で W3Techs によれば,Silverlight を開発に使用している Web サイトはわずか 0.3% に過ぎない。対して Java は 0.2%,Flash は 26%,そして JavaScript は 90.9% である。クライアントへの浸透率の高さに比較して,Web サイト開発での広範囲な採用が見られないことが,Silverlight にとってよいニュースでないことは間違いない。開発採用の面で成功を収められない理由はどこにあるのだろう?
ここで挙げるのは主な理由のいくつかだが,これがすべてという訳ではないだろう。第1に挙げられるのは Sliverlight の定義が不明確で,WPF と重複する部分があったことだ。当初の Silverlight には Windows Presentation Foundation/Everywhere (WPF/E) という名称さえあって,Silverlight と WPF のどちらを使うべきか明確になっていなかった。次の理由は iOS, Android, Symbian, その他多くの Linux ベース OS を主役とするモバイルデバイスの急増だ。Silverlight がこれらのプラットフォームすべてをサポートするには,膨大な開発作業が必要になる。互換性の問題ももちろんある。このような状況で HTML5 が徐々に Web プラットフォームの中心となり,Silverlight は Windows クライアントの位置に留まっているのだ。これらすべての理由により,Microsoft は Silverlight の役割の再検討を強いられたのだが,それがさらに開発者の間に混乱を引き起こすことになった。例えば Microsoft は BUILD 2011 に先立って Silverlight 5 RC を発表する一方で Windows 8 に搭載される IE10 Metro では Silverlight を含むすべてのプラグインをサポートしない ことも決めている。
その後,近日中の製品リリースが予想されている Silverlight 5 が Microsoft の開発する最後のバージョン になる,という噂が持ち上がり,今後のサービスパック提供に関して疑問が持たれるようになった。それが真実ならば Silverlight の将来は,Microsoft が Metro によって過去のものにしようとしている Windows デスクトップ上での,わずかな役割を担うだけの危ういものになる。開発者たちはどこに取り残されてしまうのだろう? これまでのスキルは WinRT 上でも活用できるのだろうか? Microsoft は彼らに WinRT へのスムーズな移行パスを用意してくれるだろうか?
Silverlight Insider サイトの Tim Greenfield 氏が WinRT の API と Silverlight の API を比較 している。両者の類似点と相違点,そして開発者が Microsoft の新技術に移行することの容易性の確認が目的だ。結果として Silverlight には WinRT と共通なタイプが 1,582 あり,Windows 8 のコア API に存在しないタイプは 607 のみであった。つまり Silverlight のタイプの 72% が WinRT にも存在することになる。当然だが WinRT は新機能を処理するために,Silverlight に存在しない新しいタイプも多数 (4,396) 備えている。Greenfield 氏はさらに,これら 1,582 のメンバ (プロパティ,メソッド,イベント) も計数している。その結果は共通メンバが 10,375,Silverlight のみに存在するメンバが 651 であった。つまり Silverlight と WinRT に共通なタイプのメンバは,94% がオーバーラップしているのだ。氏はこの結果を,次のように結論付けている。
- WinRT には新しいタイプが大量にある。いくつかは実際に新しい機能,例えばマーケットプレースや加速度センサのサポートなどに関するものだ。さあ,覚えよう!
- Silverlight のタイプのおよそ 1/4 は WinRT には存在しない。その中には DOM ブリッジ関連のタイプのようにもはや関係のないものや,ブラウザでサポートされなくなったものが含まれている。
- 共有タイプの比較から言えるのは,Silverlight 5 は WinRT の真のサブセットと呼ぶに相応しい方向へと踏み出している,ということだ。既存のコードの移植が容易になるという意味で,これは Silverlight 開発者にとってよいニュースだ。
Silverlight 開発者が WinRT に移行するのは,それほど困難なことではなさそうだ。彼らのスキルの大部分は Microsoft の次世代プラットフォーム用アプリケーションの開発に再利用することができる。そして新たな Metro インターフェースは,実を言うと,HTML5 ベースなのだ。我々はいまだに,Microsoft の明確な立場を把握しかねている。彼らは Silverlight の開発を続けるのだろうか? Silverlight 6 はもはや存在しないのか? 彼らは Silverlight から WinRT への移行を,多少なりとも楽にしてくれるのだろうか?