はじめに
はじめまして。今回よりWindows Liveサービスにて提供されているAPI・
Windows Liveとはマイクロソフトのソフトウェアやサービスを総称するブランド名のひとつです。Windows Liveサービスの中にはAPIやSDKが公開されているものもあり、
Live Search API
Live Search APIは、
Application IDの取得
Live Search APIの利用には、
- http://
search. にアクセスしますmsn. com/ developer [2]。
「Create and Manage Application IDs」 からIDの管理ページへサインインします。 - 「Get a new AppID」
からIDの取得ページへ移動します。 - Application Name欄にIDを使用するアプリケーションの名前を入力します
(図1)。名前は後から変更できます。 - 利用規約を確認後、
[I Accept] ボタンをクリックし承諾します。 - 管理ページに自動で戻り、
IDが登録されたことがわかります。Application IDは16進数の文字列です。

プロジェクトの作成とサービス参照の追加
それでは、

Live Search APIは、
- ソリューションエクスプローラからプロジェクト名を右クリックし、
「サービスの参照を追加」 を選択します。 - アドレス欄にLive Search APIのWSDLの場所
(http:// soap. search. msn. com/ webservices. asmx?wsdl) を入力します [3]。 - 「移動」
をクリックします。すると 「1個のサービスが見つかりました」 と表示されると思います。 - 名前空間欄に参照に使用する名前空間を入力します。ここではServiceReferenceという名前にしました。
- [OK]
をクリックします。

以上の操作によりWebサービスを利用するクラスが名前空間ServiceReference以下に作られています。
Webサイトの検索
さっそく、
Imports LiveSearchSample.ServiceReference
Webサービスに要求する内容を書いていきます。まず、
Dim sourceRequest = New SourceRequest With { _
.Source = SourceType.Web, _
.Offset = 0, _
.Count = 10, _
.ResultFields = ResultFieldMask.Title Or _
ResultFieldMask.Description Or _
ResultFieldMask.Url}
- Source
- 検索対象を指定します。SourceType.
Webの場合Webサイトを検索します。 - Offset、
Count - 取得する結果件数
(Count) とその開始位置 (Offset) です。Offsetは0、 Countは10が規定値になります。Offsetは最大1,000まで、 Countは最大50 [4] まで指定可能です。 - ResultFields
- 取得する項目を指定します。複数指定する場合はOr演算子を使います。上記ではタイトル・
説明・ URLを指定しています。
全般的な設定についてSearchRequestオブジェクトを生成します。
Dim searchRequest = New SearchRequest With { _
.AppID = "取得したApplication ID", _
.Query = "技術評論社", _
.CultureInfo = "ja-JP", _
.Requests = New SourceRequest() {sourceRequest}}
- AppID
- 取得したApplication IDを指定します。
- Query
- 検索する文字列を指定します。Live Searchの検索オプションで使用する検索キーワードも指定可能です。
- CultureInfo
- 言語と地域の指定です。日本語・
日本の場合は 「ja-JP」 になります。 - Requests
- SourceRequestオブジェクトの配列を指定します。
以上でWebサービスへのリクエスト内容の作成は完了です。Webサービスを呼び出すクラスのインスタンスを作成し、
Dim service = New MSNSearchPortTypeClient
Dim searchResponse = service.Search(searchRequest)
Dim sourceResponse = searchResponse.Responses.Single
ResponsesプロパティにSourceResponseオブジェクトが配列として格納されています。今回の場合は結果が1つ格納されていることが予測されるため、
結果をコンソールに出力してみましょう。Totalプロパティに検索リクエストに該当する件数の概算値が入っています。For Eachステートメントを使用してResultsプロパティの内容を表示しています。必ずしも、
For Each result In sourceResponse.Results
If result.Title IsNot Nothing Then
Console.WriteLine("Title: " & result.Title)
End If
If result.Description IsNot Nothing Then
Console.WriteLine("Description: " & result.Description)
End If
If result.Url IsNot Nothing Then
Console.WriteLine("URL: " & result.Url)
End If
Console.WriteLine(New String("-"c, 50))
Next
service.Close()
実行するとWebサイトの結果が表示されると思います。うまく動いたでしょうか? ここまでのコードをファイルにまとめました。Searchメソッドを呼び出したとき例外がスローされる可能性がありますのでTry Catchステートメントを使って例外処理をしています。
- SampleModule1.
vbのダウンロード - SampleModule1.
vbファイル
複数のSourceRequestを指定した検索
Webサイトの検索のときにSearchRequest.
複数指定できるよう、
Dim sourceRequests = New List(Of SourceRequest)
SourceType.
sourceRequests.Add(New SourceRequest With { _
.Source = SourceType.News, _
.Count = 1, _
.ResultFields = ResultFieldMask.Title Or _
ResultFieldMask.Url})
Live Search APIでは検索文字列に指定した単語の修正候補を取得することもできます。修正候補があった場合、
sourceRequests.Add(New SourceRequest With { _
.Source = SourceType.Spelling, _
.Count = 3, _
.ResultFields = ResultFieldMask.Title})
SearchRequest.
searchRequest.Requests = sourceRequests.ToArray
検索結果は、
Dim searchResponse = service.Search(searchRequest)
For Each sourceResponse In searchResponse.Responses
Console.WriteLine("Source: " & sourceResponse.Source.ToString)
Console.WriteLine("Total: " & sourceResponse.Total)
For Each result In sourceResponse.Results
If result.Title IsNot Nothing Then
Console.WriteLine("Title: " & result.Title)
End If
If result.Description IsNot Nothing Then
Console.WriteLine("Description: " & result.Description)
End If
If result.Url IsNot Nothing Then
Console.WriteLine("URL: " & result.Url)
End If
Console.WriteLine(New String("-"c, 50))
Next
Next
以上のコードをファイルにまとめましたので参照してください。
- SampleModule2.
vbのダウンロード - SampleModule2.
vbファイル
おわりに
いかがでしたでしょうか。検索リクエストに指定できるオプションは、
次回もLive Search APIを利用してアプリケーションを開発します。