Clicky

Welcome to MSDN Blogs Sign in | Join | Help

News

  • This blog is in Japanese only. コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
Silverlight に関する Scott Guthrie のエントリ

今度は、MIX07 で基調講演を担当した Scott Guthrie のエントリをご紹介します。Scott Guthrie は、本社の開発本部における General Manager であり、ASP.NET/AJAX など多くの開発技術に関わっているキーパーソンです。

※この手のエントリばかりで恐縮ですが、“自分で考えるのを怠けている”のではなく“まとまった情報をご紹介する方がよいと考えている”のだとご理解くださいませ。


先週の月曜日に、ラスベガスで開催された MIX カンファレンスで、基調講演のひとつを担当し、この1年間私が多くの時間を割いてきた新しいプロジェクト、Silverlight について説明しました。

Silverlight は、デザイナと開発者がリッチなメディア体験やリッチインターネットアプリケーション(RIA)を構築できるようにする、クロスプラットフォーム、クロスブラウザの .NET プラグインです。今週リリースされているプレビュー版では、Mac と Windows の両方で Firefox、Safari、Internet Explorer をサポートしています。

Silverlight を使ってどんなリッチブラウザアプリケーションを構築できるのかを感じ取るために、どうぞ Metaliq による "Top Banana" ビデオエディタのサンプルアプリケーションをご覧ください。(訳注:"Top Banana" の意味

"Top Banana" アプリケーションは、C# で構築され、Silverlight がインストールされたどんなシステム上でもクロスプラットフォームで実行できます。アプリケーションの全ダウンロードサイズ(つまり、ユーザーがサイトの URL を入力したときの、すべての XAML とコンパイル済コードのサイズ)は 50KB 程度です。この夏に、このアプリケーションのソースコードバージョンをサンプルとして出荷するつもりです。

私の基調講演

私の基調講演の全体は、ここでご覧ください(注意: 今のところ、このビデオはスライドとデモしか表示していませんが、より完全なバージョンが来週までに公開される予定です)。

大変幸運なことに、ステージでは何人かのすぐれたお客様を招いて Silverlight で構築された本当にリッチな体験を見せることができました。お客様とは、Netflix(ソーシャルネットワーキングをサポートするすぐれた「オンデマンドムービー」ビデオ)、CBS(ユーザー生成によるビデオのサポート)、Metaliq(上記のビデオ編集アプリケーション)、MLB.com(メジャーリーグベースボールの、すばらしく新しいオンライン体験)のことです。

基調講演では、対話型のビデオプレーヤー体験を構築するために 新しい Expression Studio 製品(Design、Blend、Media Encoder 製品)の使い方についてご紹介しました。私は、Visual Studio を使った Silverlight プロジェクトの構築や、(Mac 上の Safari で動作する Silverlight 上の IronPython を使って構築された)動的言語コンソールにおいて、Silverlight アプリケーションを対話的に作成するための、.NET における新たな Ruby のサポートなど、開発のデモをご紹介しました。

Silverlight 1.0

Silverlight の最初のリリースは、この夏に出荷する予定です。このバージョンは、リッチメディアのシナリオの実現にフォーカスしており、1.2MB 以下(※訳注: Windows 版の場合)のダウンロードになります。これには以下のような機能が含まれます。

  • ブラウザ上で VC-1 と WMV ビデオ、MP3 と WMA オーディオを再生できるコーデックのサポートが組み込まれています。とくに VC-1 コーデックは、720p(HD、高解像度)までの高品質ビデオ再生をサポートしており、Web 体験におけるメディア活用の大きな前進だといえます。HD-DVD や blu-ray DVD プレーヤーをはじめ、何億台ものモバイルデバイス、XBOX 360、Windows Media Center、Windows Media Player と同じコーデック形式もサポートしています(誰かがコンテンツをエンコードすれば、これらのすべてのデバイスや Silverlight で変更なしで再生できるようになります)。これにより、Silverlight で既存のビデオコンテンツの巨大なライブラリを使ったり、ビデオコンテンツを生成するためのリッチな編集ツールを使えるようになります。
  • Silverlight は、どんな Web サーバーにあるメディアコンテンツも漸次的にダウンロードして再生する機能があります。ビデオ/オーディオメディアコンテンツを含む URL にある Silverlight を指すことで、ブラウザ中でダウンロードし、再生できるようになります。特別なサーバーソフトウェアは必要なく、Silverlight が(Linux 上の Apache を含め)どんな Web サーバーに対しても動作するのです。皆様のサーバー上でお使いいただける、便利なメディア制御や転送量制限機能を実現する IIS モジュール群も無料で提供する予定です。
  • Silverlight は、任意で使える組み込みメディアストリーミングもサポートします。これは、ビデオ/オーディオのストリーム化をバックエンドで行う Windows Media Server のようなストリーミングサーバーが使えるということです(Windows Media Server は Windows Server 上で実行できる無料の製品です)。ストリーミングは、次のような重要な利点をもたらします、1) 大きなビデオストリームで再生位置を指定するときのエンドユーザー体験の改善、2) 帯域幅のコストを大幅に削減(ほとんどのユーザーはビデオ全体を見ることはないため、漸次的なダウンロードによりビデオを終りまでダウンロードする前に別の場所に移動してしまったら、帯域幅が無駄になります)。
  • Silverlight では、リッチな UI やアニメーションを作成でき、HTML にベクタグラフィックを混在させて強力なコンテンツ体験を作成できます。また、こうした開発のためにJavaScript プログラミングモデルをサポートします。この利点としては、AJAX Web ページに Silverlight 体験を本当に容易に統合できることがあります(HTML と XAML エレメントを一緒に更新する JavaScript コードを書くことができます)。
  • Silverlight では、対話型のリッチなビデオプレーヤーを容易に構築できます。どのようなメディア再生のスタイルも作成できるようなベクタグラフィックのサポートとメディア能力とを混在させられます。Silverlight では、夢中になれる体験を作るために「フルスクリーン表示へ移行」する機能があります。また、再生するビデオコンテンツ上に直接メニューやコンテンツ、コントロール、テキストを重ね合わせることもできます(DVD ライクな体験を実現できます)。Silverlight は、ビデオストリーミングを停止したり、最初に戻すことなく、即座に再生サイズを変更することもできます。
Silverlight アプリケーションは、標準的なテキストエディタを使って開発できます(特別なツールは必要ありません)。マイクロソフトは、Silverlight 1.0 アプリケーションを対象にした(メディア管理やビデオエンコーディングをサポートするリッチなツールを含む)Expression Studio 製品群の出荷を予定しています。現在の Silverlight をサポートする Expression Blend と Expression Media Encoder のプレビュー用 CTP ビルドを、ここからダウンロードできます。

Silverlight 1.0 の機能や、Silverlight 体験を構築しはじめる方法について学ぶために、すぐれた "How do I?" ビデオをご覧になることを強くお勧めします。このビデオは、新しく開設された http://www.silverlight.net/ コミュニティサイトの、ここに投稿されています。

また、Silverlight 1.0 とメディアシナリオを扱った以下のカンファレンスセッションをご覧になることもお勧めします。

Building Rich Web Experiences using Silverlight and Javascript for Developers
Deep Dive on Silverlight Media Integration
Developing ASP.NET AJAX Controls with Silverlight
Creating and Delivering Rich Media and Video on the Web with Silverlight, Expression Studio, and Windows Server

Silverlight 1.1

MIX では、Silverlight 1.0 のベータ版を出荷するとともに(最終版は、この夏に出荷予定)、Silverlight 1.1 のアルファ版の出荷も開始しました。

Silverlight 1.1 は .NET Framework のクロスプラットフォーム版を含み、ブラウザ上でリッチな .NET 開発体験を実現します。(1.0 の全機能 + CLR + WPF と .NET FX ライブラリ API のサブセット + 動的言語のサポートを含む)Silverlight 1.1 パッケージの全ダウンロードサイズは 4MB 以下になり、マシンへのインストールは 20 秒以下になる予定です。

Silverlight 1.1 の機能には、以下のものが含まれます。

  • ブラウザ上で超高性能な実行を実現する組み込み CLR エンジン。Silverlight は、現在 .NET Framework のフルバージョンとして出荷しているものと同じ CLR エンジンを使っています(同じソースツリーで構築しています)。同じ型システム、ガベージコレクタ、JIT(※訳注Just In-Time)コード生成エンジンを提供しており、ブラウザ上で JavaScript をインタプリタ処理するよりも 250倍も高速にコード実行できるようになります。
  • Silverlight は、ブラウザベースのアプリケーション開発に使える組み込みクラスで構成されるリッチなフレームワークライブラリを提供します。このフレームワークライブラリは、現在提供されている .NET Framework クラスライブラリのサブセットであり、既存のスキルや知識を容易に再利用できます。ここでは、コレクション、ジェネリック、IO、スレッド、グローバル化、ネットワーク、LINQ のサポートが含まれます。
  • Silverlight は、WPF UI プログラミングモデルをサポートします。Silverlight 1.1 アルファ版では、マネージコード/イベントハンドラで UI をプログラムし、(どんなマネージベースの .NET 言語で構築された)カプセル化された UI コントロールを定義したり、使うことができます。最初の Silverlight アルファ版は、組み込み UI コントロールのリッチなサポートはありません -- 私たちは、まず中心となる UI 基盤の構築に忙しいのです。でも、心配はいりません。将来は必ず高機能なコントロールのリッチなサポートが提供されます(当面、ここから素敵なコントロールのサンプルをダウンロードできます)。Silverlight の WPF は、最終的にはレイアウトマネージャやデータバインディングのような WPF の中心機能をサポートするようになります(これらの機能は現在のアルファ版ではまだ実装されていませんが、搭載される予定です)。
  • Silverlight は、HTML DOM のマネージ API を提供し、.NET 言語を使ってブラウザにおける HTML をプログラムできるようにします(つまり、HTML ボタンに C# や VB を使ったイベントハンドラを関連づけられるということです)。また、Silverlight コントロールやアプリケーションの中で外部に公開した .NET メソッドを呼び出す JavaScript コードを HTML 中に組み込めるようになります。Silverlight は、.NET データ型を JavaScript とやり取りする自動的なマーシャリングをサポートする JSON シリアライザを提供します(これは、標準的なブラウザの JavaScript から Silverlight 中の C# メソッドを呼び出したり、C# が返す .NET コレクションを Silverlight が JavaScript コレクションにシリアライズして、ブラウザの JavaScript から使えるようになるということです)。
  • Silverlight は、バックエンドの Web サーバーとして ASP.NET を必要としません(つまり、使いたければ Linux 上の PHP から Silverlight を使うこともできます)。しかし、クライアント上の Silverlight をサーバー上の ASP.NET に容易に統合できるような、ちょっと素敵な機能を追加しています。Silverlight は、標準的な ASP.NET のアプリケーションサービス(メンバーシップ、ロール、プロファイルなど)を使うことができ、ASP.NET でホストされる WCF や ASMX web サービスを呼び出すことができます。今週出荷した 新しい ASP.NET サーバーコントロールでは、ASP.NET ページ中に Silverlight コントロールを容易にホストできるようになります。

以下の22分のビデオは、Visual Studio と Expression Blend を使ってスクラッチから Silverlight アプリケーションを構築するようすを私が記録したものです(私が使った UI コントロールをダウンロードするには、ここをクリックしてください)。

以下の図をクリックすると、現在 Silverlight 1.1 のアルファ版でサポートされている主要な .NET のネームスペースと機能の全体像を提供する、素敵なポスターをダウンロードできます。

Channel9 のインタビューも受けました。Silverlight においてマネージプログラミングモデルががどのように動作するのか、CLR サポートをどうやって追加したかを、もう少し紹介しています。

Silverlight 1.1 と .NET シナリオを扱った MIX カンファレンスの以下のセッションをご覧になることもお勧めします。

Building Silverlight Applications using .NET (Part 1)
Building Silverlight Applications using .NET (Part 2)
Extending the Browser Programming Model with Silverlight

Part 1/Part 2 のサンプルは Nick のサイトのここからダウンロードできます。

動的言語のサポート

MIX では、動的言語ランタイム("Dynamic Language Runtime"、略称 DLR)と呼ぶ、新しい .NET ライブラリを発表し、最初のバージョンをリリースしました。

.NET や CLR を動的言語のための最高の環境にするために膨大な投資を行ってきました。このために、私のチームにおいて1年ほど前に専任のグループを組織して、動的言語をサポートする、よりすぐれた CLR ランタイムの構築や人気のある動的言語のすぐれた .NET 実装を提供することに焦点を合わせました。

新しい動的言語ランタイム(DLR)は、動的言語のシナリオのために設計された、いくつかのサービスを CLR に追加しています。これには、共有される動的型システム、言語ホストモデル、高速な動的コードの容易な生成が含まれます。これらの機能の追加により、.NET 上で高品質の動的言語を実装することが劇的に容易になります。

重要なことは、新たな DLR サポートを使った動的言語の実装はインタープリタではないということです。CLR 2.0 に追加した軽量なコード生成機能を使うことで、インメモリの IL(訳注:Intermediate Language、中間言語)を生成し、JIT を使って実行時にネイティブコードに変換できます(ディスクに何かを保存する必要はありません)。これは、インタープリタコードに比べて実行時のパフォーマンスを大幅に向上でき、軽量なコード生成機能で生成された JIT コードはメモリリークを回避するためのガベージコレクションを使うこともできるようになります。これにより、動的言語によるプログラミング環境は大幅に改善、強化され、開発者が動的言語を使って .NET API を呼び出すことも簡単にプログラムできるようになります。

DLR、そして、この上に構築されるすべての動的言語は、ブラウザ上のクロスプラットフォーム Silverlight アプリケーション、サーバー上の ASP.NET 2.0 アプリケーション、そしてデスクトップ上の WPF/WinForms アプリケーションにおいて使うことができます(基本的に CLR が使えるところなら、どこでも)。

MIX では、マイクロソフトが .NET のために 4 つの動的言語の実装を出荷することを発表しました。

  • Python
  • Ruby (新規)
  • Javascript
  • Dynamic VB (新規)

Python と Ruby の実装についてのソースコードとともに、基盤となる DLR ライブラリにのソースコードも CodePlex で出荷します(出荷されるすべてのソースは完全な修正の権利がともないます)。現在、IronPython サイトから DLR と Python の実装("IronPython" として知られています)をダウンロードできます。Ruby の実装("IronRuby" と呼ぶ予定です)のソースコードは、数週間後に CodePlex で公開する予定です。

さらに動的言語サポートについて学ぶためには、IronPython における動的言語コンソールと Mac 上の Silverlight での実行を紹介した John Lam の 15分のビデオをご覧になることをお勧めします。開発者は、ブラウザ上で Ruby、Python、JavaScript、VB を使って、対話的に Silverlight アプリケーションを開発できます(IntelliSense のサポートもあります!)。

また、Silverlight 1.1 と動的言語を扱った MIX カンファレンスの以下のセッションをご覧になることもお勧めします。
 
Just Glue It! Ruby and the DLR in Silverlight

Jim Hugunin - DLR のチーフアーキテクト。.NET による動的言語についてのすばらしいブログを書いているので、どのように動作し、何ができるを理解するために購読することをお勧めします。

www.silverlight.net

先週開設された最新のオンラインコミュニティサイト: http://www.silverlight.net/

http://www.asp.net/http://www.iis.net/ と同じく、一般的なサンプルや "How-do-I?" ビデオを提供するために新しい Silverlight のサイトを用意しました。ここでは、Silverlight に関する疑問を手助けできるよう、フォーラム機能も提供されます。

毎週、毎月、サイト上に投稿される新しいコンテンツの RSS フィードを購読するには、ここをクリックしてください。

まとめ

Silverlight は、クロスプラットフォーム、クロスブラウザで実行できる、かなりリッチなクライアント体験を構築する、山ほどの機会を切り開くものです。

.NET 開発者にとっては、Web ブラウザ(Silverlight を使う)、Web サーバー(ASP.NET を使う)、そしてデスクトップアプリケーションやモバイルデバイスのために、あらゆる開発言語(VB、C#、JavaScript、Python、Ruby など)を使って、.NET コードを書くことができるようになります。さらに、それぞれの対象に対して、Visual Studio というすばらしい開発ツールや Expression Studio というすばらしいデザインツールを使うことができます。

言うまでもなく、今後 Silverlight で提供されることにエキサイトしています。まだ、バグフィックス、高レベルの UI コントロールや機能の追加など、なすべきことはあります。しかし、先週リリースした中心となるグラフィック/メディア/ランタイムエンジンは、実に強力であり、将来構築されるであろう確固たる拡張可能な基盤を提供しています。

Silverlight については、その使い方を含め、今後数週間、数か月の間に、より多くのブログを書くつもりです。

これが手助けになることを願います。

- Scott

追伸 先週は休暇を取っており(そのため基調講演から投稿が遅れました)、今週の残りはスコットランドで休暇を取ります(ですから、コメントへの対応が遅れることをお許しください。お返事には数日くらいかかります)

Posted: Tuesday, May 08, 2007 8:56 PM by mohno
Filed under: ,

Comments

Anonymous comments are disabled
Page view tracker