始めよう!Silverlight

第5回 Silverlight 2でHello world

この記事を読むのに必要な時間:およそ 4 分

はじめに

Silverlight 2 Beta1が発表されてから,もうそろそろ1か月になろうとしてます。最近ではサンプルアプリケーションやブログなどの記事も増えてきました。

前回の最後に次回予告で「簡単なアプリケーションを開発する」と書きましたが,アプリケーションを開発するまでの段階で重要なポイントが多くあり,そちらを重点的にご紹介したかったため,今回はSilverlight 2 Beta1で定番のHello worldを表示するプログラムを作成することにします。その作成の途中で個々の要素とポイントをご紹介します。

開発環境の準備

まずは,開発環境を準備しましょう。

今回はVisual Studio 2008を使用して開発しますので,Silverlight Tools Beta 1 for Visual Studio 2008をダウンロードしてインストールしてください。

残念ながらSilverlight Tools Beta 1 for Visual Studio 2008はVisual Studio 2008のStandard Edition以上が必要なため,Express Editionにはインストールできません。お持ちでない場合はProfessional Editionの評価版をダウンロードしてお試しください。

プロジェクトの作成

では,早速開発に入りましょう。

まず,Visual Studioを起動して[ファイル]-[新規作成]-[プロジェクト]を選択して,[新しいプロジェクト]ダイアログを表示します。そのダイアログで,[プロジェクトの種類]でVisual C#のSilverlightを選択し,[テンプレート]としてSilverlightアプリケーションを選択します。[プロジェクト名]には「HelloWorld」と入力してください。最後に[OK]ボタンをクリックします。

画像

次に[Silverlightアプリケーションの追加]ダイアログが表示されます。ここでは作成したアプリケーションのVisual Studio上での実行方法を指定します。実行方法は3種類から指定できます。 [コントロールをホストするための新しいWebをソリューションに追加する]では,WebサイトもしくはWebアプリケーションプロジェクトを同時に作成します。Silverlightアプリケーションはここで作成されたWebサイトもしくはWebアプリケーションにリンクされ,実行されます。[オプション]で[プロジェクトの種類]を選択できます。通常はこの選択のままでよいでしょう。

[このプロジェクト内のSilverlightをホストするHTMLテストページを生成する]では,Silverlghtプロジェクト内にテスト用のHTMLページが追加されます。実行時にはそのHTMLページが呼ばれ実行されることになります。どちらかといえば,こちらのほうが小さな構成のため簡単に扱えます。ただし,実行方法はローカルのHTMLファイルがブラウザで表示される形式であり,Webサーバーが起動してのHTTP経由での実行ではないため,Silverlightの動作にセキュリティコンテキストなどの面で制限がかかってしまいます。

[このSilverlightコントロールを既存のWebサイトにリンクする]はすでにあるソリューションに新たにSilverlightアプリケーションを追加する時に,WebアプリケーションプロジェクトもしくはWebサイトがあった場合に有効になります。[オプション]ではどのプロジェクトにリンクするかなどが選択できます。

今回は[コントロールをホストするための新しいWebをソリューションに追加する]を選択し,[オプション]の[プロジェクトの種類]にはWebサイトを選択します。[OK]ボタンをクリックしてプロジェクトを作成します。

画像

ソリューション・ファイルの構成

では,作成されたソリューションを見ていきます。SilverlightプロジェクトのHelloWorldプロジェクトとそれをホストするHelloWorld Webサイトが作成されています。

まずはWebサイトです。HelloWorldTestPage.aspxとHelloWorldTestPage.htmlとDefault.aspxが作成されていますが,テストで使用するのはHelloWorldTestPage.aspxになるので,他のファイルは特に必要ありません。また参照アセンブリとしてSystem.Web.Silverlight.dllがBinフォルダに追加されています。このアセンブリはSDKに付属のアセンブリで,Silverlightを表示するためのSilverlightコントロールとSilverlightで動画を表示するためのMediaPlayerコントロールが含まれています。HelloWorldTestPage.aspxでは実際にこのSilverlightコントロールが使用されています。

画像

このSilverlightコントロールのSourceプロパティに指定されているファイルはSilverlightプロジェクトで生成されるファイルで,拡張子がxap(ザップ)になっています。このxapファイルについては後述します。

続いてはSilverlightプロジェクトであるHelloWorldプロジェクトです。こちらはApp.xamlファイルとPage.xaml,そしてそれぞれのC#ファイルが生成されています。App.xamlファイルですが,これはSystem.Windows.Applicationを継承したクラスになっています。ここにはアプリケーション全体を制御するためのイベントやリソースを記述します。Silverlight1.0や1.1の時は通常であればCanvas要素がルートになったxamlを直接読み込んでいましたが,Silverlight 2からはこのApplicationが最上位に位置することになり,WPFと同様のモデルに変更になりました。次にPage.xamlですが,こちらは表示のルート要素になります。ここに様々なコントロールや,その処理などを記述することで,それが画面に表示されます。App.xamlのコードファイルのApp.xaml.csを開いて,StartイベントのハンドラメソッドであるApplication_Startupメソッドを確認してみてください。以下のようなコードがあり,アプリケーションの起動時にPage.xamlのクラスであるPageのインスタンスが設定されていることがわかります。

リスト1

private void Application_Startup(object sender, StartupEventArgs e)
{
  // メイン コントロールを読み込みます。
  this.RootVisual = new Page();
}

Pageクラスの親クラスですが,WPFの場合であればWindowクラスもしくはPageクラスですが,Silverlight 2の場合は,UserControlになっており,表示のルート要素として特別にクラスが指定されているわけではありません。DisplayObjectを継承するクラスであれば,どのクラスでも可能です。これによりルート要素であっても再利用が可能になり,例えばSilverlight 2で開発したアプリケーションを容易にWPFのデスクトップアプリケーションに移植することも可能になります。Scott Guthrie氏のブログでは実際にSilverlight 2で作成したものをWPFに移植する作業が紹介されています。

著者プロフィール

丸山和秀(まるやまかずひで)

株式会社アークウェイ システムクリエイター。趣味はドラム。社会人になりたてのころは職業はドラマーだと豪語していたが,いつのまにかシステム開発の楽しさにのめりこみ,仕事内容が職業になっていた。パッケージベンダにて金融向けパッケージソフトの開発を行うSEを経て現職へ。現在は研究開発としてRIAに取り組み中。

コメント

コメントの記入