Silverlight 2で.NET技術をカッコよく使おう
連載インデックスへ

Silverlight 2で.NET技術をカッコよく使おう(1)

ついにRTWされたSilverlight 2は1.0と何が違うの?


松原晋啓
2008/10/16


画面描画のコアプレゼンテーションフレームワーク

 Silverlight 2から追加された機能として、まずは「コアプレゼンテーションフレームワーク」の部分から説明します。

  • DRM(Digital Rights Management=デジタル著作権管理※注意
    Microsoft PlayReady」をベースとして提供
  • コントロール(Controls)
    • コアコントロール
    • 拡張コントロール
※注意:DRMとは、デジタルデータコンテンツの著作権を保護し、利用や複製の制御や制限するための技術の総称。例として、インターネット映像販売でシェアを持ち、SilverlightのDRM技術「Microsoft PlayReady」とも関係の深い「Windows Media DRM(以下、WMDRM)」がある

携帯電話やPCなどクロスデバイスで著作権保護できるDRM

 1つ目の「DRM」は、すでに各デバイスのランタイムがリリースされている「Microsoft PlayReady」をベースとしてクロスプラットフォーム対応されたものが搭載されています。

 PlayReadyは携帯電話やPCなど複数のデバイス間で著作権保護されたコンテンツを共有できる機能を持ち、さらにWMDRM 10と後方互換があるため、PlayReady対応端末でWMDRM 10ベースのコンテンツを利用できます。

 ただしSilverlightは、既存のWMDRMのライセンスサーバを直接参照しないので、新たにライセンス発行サーバを構築しない限りは、WMDRMで保護されたメディアの再生はできません。DRMのライセンス発行サーバの構築には、PlayReady Server SDKが必要です。

ASP.NETやWPFなどでおなじみの各種コントロールをサポート

 2つ目の「コントロール」は、Silverlight 1.0ベースで開発を行ってきた方にとっては一番の朗報ともいえることだと思います。これは、Silverlight 2からASP.NETWPFなどでおなじみの各種コントロールがサポートされるということです。筆者もそうですが、Silverlight 1.0はコントロールがなかったため、ツールを使って簡単に画面を作るということが難しかったのですが、Silverlight 2からは可能です。

 コントロールが格納される名前空間は、基本コントロールなどを含む「System.Windows.Forms」です。主要なコントロールには以下のようなものが含まれます。

  • Button
  • CheckBox
  • HyperlinkButton
  • Image
  • ListBox
  • RadioButton
  • TextBlock
  • TextBox

 DRMに関しても、コントロールに関しても、連載の中で詳しく説明していく予定ですので、ご期待ください。

Silverlight用の.NET Framework

 次に「.NET Framework for Silverlight」で変わった点を見ていくわけですが、こちらは新規追加といっても過言ではありません。図1を見ると、ネットワーキングのPOX(Plain Old XML)やJSON(JavaScript Object Notation)だけはSilverlight 1.0からサポートされていると書いてありますが、事実上.NETとは関係ない世界(JavaScript上)でサポートされていました。

 しかしDLR(Dynamic Language Runtime)をインストールすることで、JavaScriptも.NET Framework for Silverlightに組み込まれ、「Managed JScript」として.NETランタイム上でも実行できます。ほかに新しく追加された機能として押さえておきたいポイントは以下のようになります。

  • CLR/DLR
    • CLR
      • C#
      • VB.NET
    • DLR
      • IronRuby
      • IronPython
      • Managed JScript
  • LINQ

 Silverlight 2が持つ多くの機能については、すべて連載の中で詳しく紹介する予定ですが、Silverlight 2で目玉となる素晴らしい機能について、筆者の視点で挙げてみました。

CLR/DLRサポートで実行環境が増えた!

 まずは、なんといっても「CLR/DLRのサポート」です。これによってSilverlight 2が真の実力を発揮できるようになったといっても過言ではないと思います。Silverlight 1.0 では、実質上「XHTML+JavaScript」に近い構成であったため、どうしても制限があったりと使い勝手の悪い言語のように思えましたが、.NETのランタイム上で実行することでその使い勝手の悪さが一気に解決されています。

 前述しましたが、Silverlightに搭載されているCLRは、フルの.NET Frameworkの一部をSilverlight用に再設計した専用ランタイムなので、すべてのことができるわけではありませんが、Silverlightに特化した形で最適化されているので、不便さを感じることは少ないと思います。

 CLR/DLRを使用したSilverlight 2アプリケーションの開発は、ほかの.NETアプリケーションと同様にVisual Studioで行う必要がある(後述)ため、チーム開発やデバッグなどのVisual Studioが持つ機能をそのまま使えるようになった点が非常に魅力的です。

 DLRは新しく提供が開始された動的言語用の.NETランタイムで、前述のJavaScriptやRubyPythonなどの動的言語を.NETランタイム上で実行可能になります。

 なお、DLR自体はCLRに含まれるものではなく、Silverlight 1.0連載の最終回「百花繚乱なSilverlightのオープンソースプロジェクト集」でも紹介した「Silverlight Dynamic Languages SDK」でオープンソースプロジェクトとしてCodePlexから提供されるものです。

 Silverlight 2リリース時点でサポートしている動的言語は、以下になります。

  • Managed JScript
  • IronRuby
  • IronPython

 2008年10月の時点では、まだ上記の3つのみしか正式にサポートされていませんが、上記Silverlight 1.0連載の最終回でも紹介した「IronLisp」のように、現在開発が進められている動的言語もあるので、今後より充実していく可能性は高いです。

 IronPythonに関しては、以下の記事が参考になると思います。

DBやXML、テキストで共通のデータ操作をLINQで

 次は「LINQのサポート」です。「LINQ」とは、.NET Framework 3.5における目玉となった最新の最重要技術ですが、このLINQをSilverlightから扱うことができます。LINQは「Language Integrated Query」の略で、言語埋め込みクエリ言語となります。

 LINQ to XMLを例に取ると、以下のようにSQLのような構文を使い、XMLデータからオブジェクトのコレクションを作成する処理を簡単に記述できるものです。

MSDNよりの引用したサンプル
IEnumerable<string> partNos =
    from item in purchaseOrder.Descendants("Item")
    select (string) item.Attribute("PartNumber");

 ここで使用される構文は、相手がデータベースでも、XMLファイルでも、テキストファイルでも、エンティティでもほとんど変わりません。従来であれば、対象のオブジェクトごとに処理方法が異なりましたが、LINQでは共通の構文で使い回すことが可能です。

 LINQそのものに関しては、以下の記事が参考になると思います。

ほかにもSilverlight 2の新機能はいっぱい

 Silverlight 2の機能はほかにも、RESTSOAPRSSなどのWebサービスのサポートやサーバ・プッシュDeep ZoomクロスドメインソケットデータバインディングVisual State Managerなど多数ありますが、まずはこれだけ押さえるだけでも十分に魅力を感じていただけたのではないでしょうか。

 次のページでは、Silverlight 2 の開発と実行に最低限必要なものを紹介します。

1-2-3

 INDEX
Silverlight 2で.NET技術をカッコよく使おう(1)
ついにRTWされたSilverlight 2は1.0と何が違うの? 
  Page1
「Silverlight、“2”と“1.0”の違いとは?
Page2
画面描画のコアプレゼンテーションフレームワーク
Silverlight用の.NET Framework
ほかにもSilverlight 2の新機能はいっぱい
  Page3
Silverlight 2に必要な開発環境
コラム 「SilverlightのためのEclipseプラグインも」
Silverlight 2アプリを実行するには?
機能的に見ればまるで別物の“2”



リッチクライアント&帳票 全記事一覧へ




HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間