ブラウザー外実行アプリケーションのデバック実行
開発WebサーバーにホストされたSilverlightのアプリケーションでは、F5ボタンでアプリケーションをデバック状態で実行することで、ソースコードの任意の場所で実行を止めるためにブレークポイントを置いたり、変数の値を調べるためにウォッチ式を追加することができました。
では、ブラウザー外実行としてインストールした後のSilverlightアプリケーションをデバックするにはどうしたらいいでしょう。
ブラウザー外実行のアプリケーションはsllauncher.exeがインストールされたSilverlightを実行しているのですから、sllauncher.exeのプロセスにVisual Studioからアタッチすることでデバックを行うことができます。
Visual Studioの[メニュー]-[ツール]-[プロセス]にアタッチからsllauncher.exeのプロセスを探して、更新ボタンをクリックしてください(図12)。
プロセスにアタッチを行うと、Visual Studioがデバック状態になり、ブレークポイントやウォッチ式などを通常のデバックと同じように利用することができます。
オフライン機能の制限
オフライン機能を使うことで、Silverlightアプリケーションと通常のデスクトップアプリケーションと同じように使用することができますが、いくつかの利用制限があります。
ブラウザ外実行のセキュリティ
ブラウザー外実行では、Silverlightはローカルコンピューターにインストールされて動作しますが、あくまでブラウザーのサンドボックスの中で動作するという部分では、通常のSilverlightとまったく変わりません。
つまり、プログラムの中でほかのドメインのコンピューターと通信するためには通信先のコンピューターがポリシーファイルによって許可されている必要がありますし、プログラムから分離ストレージ以外のローカルコンピューターのファイルシステムにアクセスすることはできません。
Silverlight 2時点の記事ですが、Silverlightで他のコンピュータと通信を行う際の注意点を次の記事で掲載しています。この部分は2と3で大きな違いはありませんので、興味がある方はご覧ください。
HTML-DOM連携の非サポート
ブラウザー外実行では、インストールされたアプリケーションはインストールされたフォルダにあるindex.htmlにホストされ、sllauncher.exeによって起動されます。つまり、もともとホストされていたHTMLとは違うHTMLにホストされることになります。
このためブラウザー外実行で実行されたSilverlightからは、HTMLへの相互アクセスは行えません。Silverlight 3までの開発ではよく使われていたWebブラウザーの機能を利用した印刷やWebカメラ、クリップボードの操作といった特定のデバイスへのアクセスは行うことができなくなっています。
印刷やクリップボードアクセスといった機能を提供する場合、前述の制限からオンラインでは使えるけれどオフラインでは使えないといった状況が発生します。オフライン実行時には印刷ボタンを非活性にしたり、警告メッセージを表示したりするという対応が必要がになるでしょう。
このあたりの制限に関しては、Silverlightの次期バージョンであるSilverlight 4でサポートが予定されています。
ブラウザー外実行時のHTMLをみると、HTML-DOM連携を許可するEnableHtmlAccessプロパティーが設定されていないことに気づくでしょう。ブラウザー外実行でHtmlPageオブジェクトにアクセスするとInvalidOperationExceptionが発生するのは、ホストするブラウザー外実行のHTMLがHTMLアクセスを禁止しているためです。
ホストするHTMLにEnableHtmlAccess属性を追加すれば、アプリケーションを再インストールしたり、更新したりするまでは、一時的にHtmlPageオブジェクトにアクセスすることができるようになります。
ただし、一度でもアプリケーションを更新したりインストールしたりするとHTMLごとブラウザー外実行の標準のHTMLファイルで上書きされてしまうためHtmlPageオブジェクトにはまたアクセスすることができなくなります。
ブラウザー外実行でアプリケーションが更新された場合に必ず起動してもらうバッチファイルなどを用意しておけば、企業内であればHTMLアクセスを有効にすることは可能かも知れませんが、一般に公開するアプリケーションでは基本的には不可能と考えてもらった方がいいでしょう。
PDCで発表になったSilverlightの新機能
11月17日から3日間ロサンゼルスで行われたマイクロソフトの大規模カンファレンスであるPDCの2日目のキーノートで、マイクロソフトの副社長であるスコット・ガスリー氏からSilverlight 4の新機能と最新のベータ版に関する発表が行われました。
当日のキーノートの様子は「Day 2 Keynote」で視聴することができます。
また、Silverlightに関するセッションも多く行われました。ブレイクアウトセッションの一部で使われたスライドやセッションの様子などをPDCのWebサイトからダウンロードすることができます。
Silverlight 4ではSilverlightの機能要望に寄せられた最も要望の多かった次の3つの機能がサポートされます。
- 印刷のサポート
- マウスの右クリックイベントのサポート
- Webカメラ/マイクのサポート
また、ブラウザー外実行時に権限を昇格した場合に限り、次の機能がサポートされます。
- ローカルファイルシステムへのアクセス
- クロスドメインネットワークへのアクセス
- デバイスへのアクセス
- HTMLブラウザーコントロールの追加
- COM相互運用
PDCで発表されたSilverlight 4の新機能は上記の通り数多くのものがありますが、特にブラウザー外実行時にサポートされる新機能の強力さはすさまじいものがあります。
ここまで盛大にローカルシステムへのアクセスを許すとなるとセキュリティー面で少し不安になりますが、今後のリリースでそのあたりも十分に手が入り、ほかのRIAアプリケーションとは一線を画すセキュアでパワフルな実行環境になりそうな予感があります。
Siverlight 4 Beta1 は次のURLからダウンロードすることが可能です。
- Silverlight 4 Beta Tools for Visual Studio 2010
- Microsoft Expression Blend for .NET 4 Preview
- Offline CHM help Silverlight 4 Beta Documentation file download
まとめ
Silverlight 3のブラウザー外実行の機能は、今までのブラウザーありきの開発と比べ一味違ったアプリケーションの形態を提供しています。まだリリースされたばかりの機能なため、業務アプリケーションで使うとなると足りない部分も多いですが、これからかなり楽しみな機能の一つだと思います。
特に、発表されたばかりのSilverlight 4の新機能をみると、マイクロソフトがブラウザー外実行を一つのプラットフォームとして定め、Silverlightが単なるブラウザーの拡張機能を超えた新しいアプリケーションのプラットフォームに進化を始めているのを感じ取れると思います。
新しいRIA開発の波を一足先に試してみてはどうでしょうか。