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.NETやWPFなどでおなじみの各種コントロールがサポートされるということです。筆者もそうですが、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
- CLR
- 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やRuby、Pythonなどの動的言語を.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 = |
ここで使用される構文は、相手がデータベースでも、XMLファイルでも、テキストファイルでも、エンティティでもほとんど変わりません。従来であれば、対象のオブジェクトごとに処理方法が異なりましたが、LINQでは共通の構文で使い回すことが可能です。
LINQそのものに関しては、以下の記事が参考になると思います。
ほかにもSilverlight 2の新機能はいっぱい
Silverlight 2の機能はほかにも、RESTやSOAP、RSSなどのWebサービスのサポートやサーバ・プッシュ、Deep Zoom、クロスドメインソケット、データバインディング、Visual State Managerなど多数ありますが、まずはこれだけ押さえるだけでも十分に魅力を感じていただけたのではないでしょうか。
次のページでは、Silverlight 2 の開発と実行に最低限必要なものを紹介します。
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” |
リッチクライアント&帳票 全記事一覧へ |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|