検索中インターフェイスの作成
ユーザーに検索用インターフェイスへの入力をさせ、結果を表示させるアプリケーションはでき上がりましたが、SharePoint内のコンテンツの量やユーザーの環境によっては検索に時間がかかる場合もあります。検索パネルのアニメーションと同様に、ユーザーへのフィードバックをここでも追加することでユーザーエクスペリエンスを向上させることが可能です。

if (inProgress)
{
// 検索中のパネル(Rectangle)を表示
this.xtvSearchResult.Visibility = Visibility.Collapsed;
this.txtNumFound.Text = "";
this.txtSearchStatus.Text = "検索中...";
this.recProgressIcon.Visibility = Visibility.Visible;
this.sbProgress.Begin();
}
else
{
// 検索結果(xamWebTileView)を表示
this.xtvSearchResult.Visibility = Visibility.Visible;
this.recProgressIcon.Visibility = Visibility.Collapsed;
this.sbProgress.Stop();
this.txtNumFound.Text = numFound.ToString();
this.txtSearchStatus.Text = " 件のドキュメントが見つかりました。";
}
SharePointへのデプロイ
でき上がった検索用SilverlightアプリケーションをSharePoint Webアプリケーションにデプロイするには下記の準備が必要となります。
CLR 3.5の設定
Silverlightアプリケーションを実行するにはCLR 3.5の環境が必要となるため、Silverlightが使用できるように、SharePoint Webアプリケーションのweb.configファイルにCLR 3.5 ASP.NET AJAX Extensionの機能を追加する必要があります。この手順についての詳細は下記のいずれかの記事をご覧ください。
- MSDN Windows SharePoint Services Version 3.0にASP.NET 2.0 AJAX Extensions 1.0をインストールする
- SharePointでASP.NET AJAXを利用できるようにするには
MSDNの記事はASP.NET 2.0 AJAX Extensions 1.0用として書かれていますが、同じ手順をASP.NET 3.5用のアセンブリ参照に書き換えて適用することでSharePointアプリケーション上でSilverlightアプリケーションをホストするのに必要となるCLR 3.5用の環境設定が可能です。
CrossDomain.xmlとClientAccessPolicy.xml
SilverlightアプリケーションよりWebサービスを使用する際には、セキュリティ上の理由により、クロスドメインアクセスを許可する設定が必要になります。SilverlightランタイムはWebサービスなどのアクセス先にクロスドメインアクセスの情報が含まれるCrossDomain.xmlおよびClientAccessPolicy.xmlのどちらかのファイルがあるかを確認するため、これらのファイルをSilverlightアプリケーションがホストされるSharePoint Webアプリケーションに配置することが必要です。SharePointの場合、Office SharePoint Designerを使用してSilverlightアプリケーションを配布するサイトのルートフォルダに配置します。
ClientBinフォルダの設定
Silverlightアプリケーションは.xapファイルと呼ばれる形式で配布されますが、実際にこのファイルをホストするフォルダをSharePoint Webアプリケーション内(あるいはSharePointハイブ内)に作成する必要があります。フォルダの準備ができたら、Visual Studioでビルドされた検索用Silverlightアプリケーションの.xapファイルをコピーします。
MIMEタイプの設定
.xapファイルがSharePoint WebアプリケーションをホストするIISからSilverlightのアプリケーションとして正しくダウンロードされるようにするには、IISのMIMEタイプの設定に.xap拡張子がapplication/x-silverlight-appタイプとして認識されるように設定をする必要があります。
Silverlightアプリケーションをマスターページに埋め込む
最後に完成したSilverlightコントロールを埋め込むマスターページをOffice SharePoint Designerで編集します。SilverlightアプリケーションはHTMLページ上の<object>タグに埋め込まれるので、Visual Studioで作成したSilverlightアプリケーションのソリューションに追加されるWebアプリケーションのDefault.htmlページにならって、<object>タグをマスターページの任意の場所に追加します。
SharePoint WebアプリケーションはASP.NETのWebアプリケーションですので、通常の.aspxページと同じようにSilverlightアプリケーション配置用のタグを追加することが可能ですが、あらかじめ組み込まれているSharePoint用のタグを誤って消去してしまわないように注意してください。
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="800" height="600">
<param name="source" value="../../ClientBin/SharePointSearch.xap"/>
<param name="onerror" value="onSilverlightError" />
<param name="background" value="Transparent" />
<param name="width" value="800" />
<param name="height" value="600" />
<param name="windowLess" value="true" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>
まとめ
Webサービスとして使用可能なSharePoint上の機能はSilverlightでも簡単に使用することができます。今回はxamWebTileViewを使用しましたが、NetAdvantage Silverlightでは他にも多様なコントロールが提供されています。執筆時点でベータ版となっているSharePointの次期バージョンではSilverlight上でもSharePointオブジェクトが使用できるなど、Silverlightとの相互連携がさらに改善されるようですので、SharePoint上でのSilverlight活用はさらに広がりそうです。これを機にぜひトライしてみてはいかがでしょうか。

