通常、SilverlightアプリケーションはHTML文書に組み込まれてInternet ExplorerやFirefoxなどのブラウザ内で動作するものです。しかし、Silverlight 3からはブラウザ外実行(Out of Browser)と呼ばれる新機能によって、デスクトップアプリケーションのようにブラウザとは独立したプロセスとして実行することができるようになりました。

SilverlightやFlashなどの新しいプラットフォームによって視覚的な表現力は補えるようになりましたが、それでもWebベースのアプリケーションやサービスは従来のデスクトップアプリケーションと比較して不便な側面もあります。代表的なデメリットはオンラインでなければ使えず、アプリケーションを利用するためにブラウザを起動して対象のページに移動するという手間を強いられることです。特にWebで動作することが重要ではない業務系の社内アプリケーションではこの点が導入のハードルとなることがあるでしょう。

ブラウザ外実行はSilverlightアプリケーションをクライアントPCにインストールし、デスクトップアプリケーションと同じようにアイコンから直接起動できる仕組みを提供します。これによって、利用者はブラウザを起動せずにアプリケーションにアクセスできるようになります。また、アプリケーションはオンラインとオフラインの状態を識別できるため、オフライン時にはデータをキャッシュしてオンラインになったときに操作を実行するなどの仕組みも実現できます。

図01 ブラウザ上で実行されているSilverlightアプリケーション

Silverlightアプリケーションのインストールはガジェットのように簡単です。プログラムからApplicationクラスのInstall()メソッドを呼び出してインストールを開始することも可能ですが、通常Silverlightアプリケーションがブラウザ外実行に対応していれば、右クリックで表示されるコンテキストメニューにインストール項目があるので、それを選択するだけです。

図02 右クリックで表示されるコンテキストメニューからのインストール

すると「アプリケーションをインストールします」ダイアログが表示されるので、ショートカットを作成する場所のチェックを設定して「OK」ボタンを押します。これだけでアプリケーションがインストールされるため、利用者にとっても開発者にとってもアプリケーションの配置が楽になるでしょう。ブラウザ外実行の仕組みはXAPファイル内のマネージコードをクライアントPC上のSilverlightランチャーが読み込んで実行しているだけので、プログラム自体に特別な仕掛けは必要ありません。

図03 インストールの確認を行うダイアログ

インストールされたアプリケーションは、ブラウザとは別の独自のプロセス(ウィンドウ)で実行できるようになります。インストール後は、ブラウザを起動することなく「スタート」メニューやデスクトップに作られたくショートカットから直接アプリケーションを起動できます。

アプリケーションは自分自身がブラウザ外で実行されているのか、インストールされているかどうかを調べて処理を分けることもできます。

図04 ブラウザ外で実行されているSilverlightアプリケーション

図04は、ブラウザ外実行で起動しているSilverlightアプリケーションです。インストールしたアプリケーションは、右クリックで表示されるコンテキストメニューの「このアプリケーションを削除します...」からアンインストールできます。

ブラウザ外で実行されるアプリケーションは、ブラウザ情報の取得やJavaScriptとの連携などブラウザに関連する機能を使うことはできません。よって、Silverlightアプリケーションをブラウザ外実行に対応させるには明示的にアプリケーションがブラウザ外実行に対応していることをアプリケーションマニフェストで宣言しなければなりません。Visual Studio 2008を使っている場合、プロジェクトのプロパティを開いて「Silverlight」タブを選択し、「アプリケーションのブラウザー外実行を有効にする」にチェックを入れてください。

図05 ブラウザ外実行の有効化

続いて「ブラウザー外実行の設定」ボタンを押して、インストールするアプリケーションのタイトルや説明、アイコンなどを設定します。各項目に必要な情報を入力して「OK」ボタンを押してください。

図06 「ブラウザー外実行の設定」ダイアログ

Visual Studioは、プロジェクトにブラウザー外実行の設定を保存したXMLファイル「OutOfBrowserSettings.xml」を追加します。このファイルを開いて、ブラウザー外実行の設定をテキストエディタで編集することも可能です。

図07 生成された設定ファイル

ただし、これはビルド時にアプリケーションマニフェストである「AppManifest.xml」と統合されます。ビルド後に生成されたXAPファイル内のアプリケーションマニフェストを開くと、以下のように「Deployment.OutOfBrowserSettings」要素以下に「OutOfBrowserSettings.xml」の内容が結合されています。

コード01 AppManifest.xaml

<Deployment
 xmlns="http://schemas.microsoft.com/client/2007/deployment"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 EntryPointAssembly="SilverlightApplication1"
 EntryPointType="SilverlightApplication1.App"
 RuntimeVersion="3.0.40818.0"
>
 <Deployment.OutOfBrowserSettings>
  <OutOfBrowserSettings ShortName="Test アプリケーション" EnableGPUAcceleration="False" ShowInstallMenuItem="True">
   <OutOfBrowserSettings.Blurb>Silverlight ブラウザ外実行のテストアプリケーションです。</OutOfBrowserSettings.Blurb>
   <OutOfBrowserSettings.WindowSettings>
    <WindowSettings Title="Kitty on your lap" Height="600" Width="800" />
   </OutOfBrowserSettings.WindowSettings>
   <OutOfBrowserSettings.Icons />
  </OutOfBrowserSettings>
 </Deployment.OutOfBrowserSettings>
 <Deployment.Parts>
  <AssemblyPart x:Name="SilverlightApplication1" Source="SilverlightApplication1.dll" />
 </Deployment.Parts>
</Deployment>

Visual Studioを使わずにXAPファイルを直接編集してブラウザー外実行に対応させる場合は、コード01のようにアプリケーションマニフェストにブラウザー外実行の設定を記述します。これらブラウザー外実行の設定情報は、実行時にDeploymentオブジェクトのOutOfBrowserSettingsプロパティから取得できます。

アプリケーションがインストール用のUI(図01の「インストール」ボタンのような)を独自に提供し、右クリックで表示されるコンテキストメニューが不要であれば「OutOfBrowserSettings」要素の「ShowInstallMenuItem」属性をFalseに設定することで非表示に変更できます。この項目のみ、Visual Studio 2008からは設定できません。

このように、ブラウザ外実行によって、Silverlightアプリケーションをデスクトップアプリケーションのように見せることができます。Silverlightでは、ファイルの読み込みや書き込みダイアログで選択されたファイルに対してアクセスできるので、完全にオフラインでの利用を想定した(Web サービスと連動しない)アプリケーションにも応用できるでしょう。

著者プロフィール:赤坂玲音

フリーランスのテクニカルライタ兼アプリケーション開発者。主にクライアント技術、プレゼンテーション技術が専門。2005年から現在まで「Microsoft MVP Visual C++」受賞。技術解説書を中心に著書多数。近著に『Silverlight入門』(翔泳社)などがある。