連載:次世代技術につながるSilverlight入門

Silverlightアプリの作り方

岩永 信之
2012/02/24
Page1 Page2 Page3

初めてのSilverlightアプリ

 百聞は一見にしかずということで、まずはSilverlight開発の様子を動画で見てもらおう(Movie 1)。

Movie 1: Silverlightアプリ作成の様子
SilverlightアプリのUI内に「初めてのSilverlight」という文字を表示するだけの簡単なプログラムを作成している。

 40秒ほどの短い動画だが、実行してブラウザ内にSilverlightプログラムを表示するところまで行っている。

 それでは、この動画の内容を中心として、初歩的なSilverlightアプリの開発方法について説明していこう。

プロジェクト・テンプレート

 Visual Studioでのアプリ開発に慣れた人ならご存じのとおり、Silverlight開発でも、まずは用意されたテンプレートを選択し、プロジェクトを作成する。

 Silverlight Toolsをインストールすると、Table 1に示すプロジェクト・テンプレートが追加される。C#向けとVB向けが用意されている(また、F#向けにも、ライブラリ作成用のテンプレートのみあり)。

プロジェクト・テンプレート名 説明
Silverlight アプリケーション 単一ページのSilverlightアプリ用テンプレート
Silverlight ナビゲーション アプリケーション 複数ページあり、ページ間の遷移制御(=ナビゲーション)を行うタイプのSilverlightアプリ用テンプレート
Silverlight ビジネス アプリケーション WCF RIA Servicesという、ASP.NETとWCFを使ったサーバと、Silverlightを使ったクライアントを併せて提供するテンプレート
Silverlight クラス ライブラリ Silverlightから使えるクラス・ライブラリ用のテンプレート
WCF RIA Services クラス ライブラリ WCF RIA Servicesで使えるクラス・ライブラリ用のテンプレート
Table 1: Silverlight用のプロジェクト・テンプレート

 アプリ作成用のものは、作りたいアプリの種類によって3つ(Table 1中の上3つ)の中からプロジェクト・テンプレートを選択する。Movie 1では、「Silverlight アプリケーション」テンプレートを利用している。

 残り(Table 1中の下2つ)はライブラリ作成用のプロジェクト・テンプレートである。Silverlightは、デスクトップ向けの.NET Frameworkとは、標準ライブラリに含まれているクラスが異なるため、Silverlight専用のライブラリを作ることになる。

テンプレートによって生成されるファイル

 「Silverlight アプリケーション」テンプレートを使ってプロジェクトを作成すると、[ソリューション エクスプローラー]に、Figure 1に示すような状態が得られるはずだ。

Figure 1: 「Silverlight アプリケーション」テンプレートによって作成されるプロジェクト
この画像はC#用のテンプレートを使った場合のものである。VBの場合には、「.xaml.cs」という拡張子のファイルの代わりに、「.xaml.vb」という拡張子のファイルができる。

 .xaml拡張子のファイル(=XAMLコード)と.xaml.cs拡張子のファイル(=XAMLコードに付随するC#コード。VBを利用する場合は.xaml.vb拡張子)の意味については次節で説明する。この2つは対になっていて、2つのファイルで1つのクラスを生成する。実質的には、Figure 1の状態で、AppとMainPageという2つのクラス(2対のファイル)ができているものと思ってほしい。

 Appクラスは、アプリ全体を表すクラスだ。アプリ起動直後、終了直前、未処理例外(=誰もcatchしなかった例外)発生時などのイベント処理を記述する。また、アプリ全体で共有したいデータなどは、このAppクラスのメンバとして持てばよいだろう。

 一方、MainPageクラスは、アプリ起動後に表示されるページを表すクラスである。WPF(Windows Presentation Foundation)などのデスクトップ・アプリではウィンドウ(=WPFの場合はWindowクラス(System.Windows名前空間)を継承)が最初に表示されるが、Silverlightではページ(=Pageクラス(System.Windows.Controls名前空間)を継承)がその役割を担う。

プロジェクトのプロパティ

 Silverlightアプリの実行方法にはいくつかのオプションがあり、それらのオプションはプロジェクトのプロパティから設定する。いくつかの設定項目について紹介しておこう。

  • アプリケーション・ライブラリ・キャッシュを使用してXAPを縮小する:
      「アプリケーション ライブラリ キャッシュ」は、ライブラリをSilverlightアプリ本体とは分離して、別途ダウンロードし、クライアント上にキャッシュする仕組みである。
      ライブラリは、アプリ本体よりも更新頻度が低い場合がほとんどで、分離してキャッシュすることによってダウンロードするデータ量を削減できる。

  • アプリケーションのブラウザ外実行を有効にする:
      Silverlight 4から、Silverlightアプリをブラウザの外で、オフラインでも実行できるようになった。この機能をブラウザ外実行(Out-Of-Browser、略してOOB)と呼ぶ。
      ブラウザ外実行を有効にした場合、Silverlightアプリをローカルにインストールする。アプリ本体がローカルに保存され、スタート・メニューやデスクトップにショートカット・アイコンが追加される。Silverlightを(配布が楽な)デスクトップ・アプリとして使う機能だと考えていいだろう。
      ブラウザ外実行では、オフラインで利用できるだけではなく、ブラウザ内では利用制限(例えば、クロス・ドメイン通信の制限など)が緩和される。

  • 実行時に「昇格された信頼」を要求する:
      ブラウザ外実行をしてもまだ機能制限がかかっているが、制限を撤廃するためのオプションとして、「昇格された信頼(elevated-trust)を要求する」という項目がある。
      Silverlight 4ではブラウザ外実行時のみ(「ブラウザー外実行の設定」内に設定項目がある)で選択でき、Silverlight 5ではブラウザ内での実行でも選択できるようになった。
      この項目を有効にすると、Silverlightアプリの実行時にアプリを信頼するかどうかを尋ねるセキュリティ警告が表示される。

【コラム】Propertiesフォルダ

 C#向けのプロジェクト・テンプレートでは、App.xamlファイルとMainPage.xamlファイルのほかに、「Properties」という名前のフォルダができている。このフォルダの中のファイルは、プロジェクトのプロパティ設定が反映されるもので、開発者が直接編集する必要はない。

 例えば、AssemblyInfo.cs/AssemblyInfo.vbファイルには、アセンブリ(=アプリやライブラリ)に関する情報(Silverlightに限らず、.NETアプリには、作者などの情報をメタデータとして含めることができる)が書かれている。

 AssemblyInfo.csファイルにはList 1のような属性が並んでいる。このコードを直接編集することもできるし、Figure 2に示すようにプロジェクトのプロパティからアセンブリ情報を編集することもできる。

[assembly: AssemblyTitle("SilverlightApplication1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SilverlightApplication1")]
[assembly: AssemblyCopyright("Copyright ©  2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
List 1: AssemblyInfo.csファイル内に記述するアセンブリ情報用の属性の例(一部抜粋)

Figure 2: プロジェクトのプロパティから[アセンブリ情報]の編集ダイアログを開いたところ

 続いて次のページでは、XAMLコードやC#/VBコードについて説明し、最後にSilverlightアプリの配布方法について解説する。


 INDEX
  [連載] 次世代技術につながるSilverlight入門
  Silverlightアプリの作り方
    1.Silverlightとは/開発環境を整える
  2.初めてのSilverlightアプリ
    3.XAMLコードとC#(やVB)コード/Silverlightアプリの配布

インデックス・ページヘ  「連載:次世代技術につながるSilverlight入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH