Windows Phoneアプリケーション開発入門

第28回WebServiceを利用してみよう!(1)

はじめに

マイクロソフト社が、Microsoft Translatorと呼ばれる翻訳サービスを提供しているのをご存知でしょうか?

Microsoft Translatorは、翻訳機能や、入力したテキストを異なる言語にて読ませることができます。異なる言語グループ同士の人々が言葉や音声を使ってコミュニケーションを取るのをサポートしてくれます。

例えば、Twitterクライアントに取り入れると面白そうです。Twitterは世界中で使われているウェブサービスですので、日本語よりも圧倒的に外国語のほうが多いです。異なる言語の方のツイートを自分の母国語に翻訳した上でタイムラインに表示できれば、言語を意識することなくコミュニケーションが図れるクライアントが開発できそうです。

なお、Microsoft Translator APIは現在バージョン2ですが、新しいバージョンがリリースされる時には新旧2つのバージョンが90日間ホスティングされます。ですのでアプリケーションやウェブサービスでTranslator APIを使用している場合、90日の間で移行を完了させる必要があります。

新しいバージョンの公開情報や、旧バージョンのAPIのサポート打ち切りのスケジュールなどは、以下のフォーラムにて発表されます。一度目を通しておくと有益な情報が得られるかもしれません。

このTranslator APIは、AJAX ServiceHTTP ServiceSOAP Serviceの3種類のサービスで提供されています。Windows Phone 7アプリケーション開発でもっとも相性がよいと思われるのは、Visual Studio 2010のサービス参照機能が使用できるSOAP Serviceでしょう。

さて、早速Windows Phone 7アプリケーション上からMicrosoft Translator APIを使ってみましょう。

SOAP Serviceをサービス参照する

SOAP ServiceをVisual Studio 2010にてサービス参照を行い、コード上から呼び出しを行うまでの準備をしていきましょう。例として、Microsoft Translator APIのサービスURLを使用したいと思います。

「New Project...」をクリックして新規プロジェクトダイアログを表示します。沢山Windows Phone 7向けのテンプレートが並んでいますが、今回は「Windows Phone Application」を選択します。プロジェクト名称とソリューション名称は「TranslatorTest」と入力しておきます。

画像

Solution Explorerで、追加したいプロジェクト(ここではTranslatorTest)「References」を右クリックして、⁠Add Service Reference」をクリックします。日本語版のVisual Studio 2010をお使いの方は、⁠サービス参照の追加」をクリックします。

画像

サービス参照の追加ダイアログが表示されます。Address欄に使用するSOAP ServiceのサービスURLhttp://api.microsofttranslator.com/V2/Soap.svcを入力します。入力が終わったら「Go」をクリックします。

画像

サービスのチェックやどんなサービスを提供しているかを読み込みを開始します。少し経つとSerives欄に使用可能なサービスの一覧が表示されます。Web Serviceがプロジェクトで使用できるのかと、提供されているコードが信頼できるかどうかを確認します。

Translator APIにて主に使用するのは、SpeakメソッドとTanslateメソッドです。Serives欄からLanguageServiceを選択して、Operations欄にSpeakメソッドとTanslateメソッドが提供されているのを確認します。

画像

問題なければ次に進みます。Namespace欄にサービス参照の名前空間の名称を入力しましょう。追加するTranslator APIをコード上からアクセスするのに使用します。ここでは「Translator」と入力して、OKボタンをクリックしてください。

画像

プロジェクト下にService Referenceフォルダが無い場合は作成され、Namespace欄で入力した名前で、SOAP Serviceで定義されているAPIを扱うためのクライアントクラスが生成されます。

画像

オブジェクトブラウザにて、LanguageServiceClientクラスが生成されているかどうかの確認を行います。追加されていれば問題ありません。これでコード上でTranslator APIを使用する準備が整いました。

画像

もし操作に誤って意図しないWebサービスが登録されてしまった場合は、追加と同じ要領でサービス参照の削除を行うことが可能です。Solution Explorerで削除したいサービスを右クリックして、⁠delete」をクリックします。

画像

プロジェクトから参照の追加を行ったサービスが削除されます。

Bing Developer CenterでAppIDを取得する

Bing API 2.0用のAppIDをお持ちの方は、この作業は必要ありません。Translator APIを使用するには、Bing Developer Centerにてアプリケーションの登録をしてAppIDを取得しておく必要があります。

にアクセスして頂き、Windows Live IDを既にお持ちの方はそのまま自分のアカウントでサインインして頂いて、持ってない方は新規登録を行ってください。

Bing API 2.0の画面が表示されますので、⁠Get started by applying for an AppID now.」のリンクをクリックします。AppIDの新規登録画面へ遷移しますので、適切な情報を入力してAgreeをクリックします。

正常に登録されると、Bing Developer CenterのHoem画面に戻った時に「Application name and AppID」が表示されています。Translator APIを使用するためにはこのAppIDが必要になります。

翻訳を行う

Visual Studioに戻ります。MainPage.xamlを開いてください。

デザイナにて翻訳前の文章を入力するTextBoxと翻訳後の文章を表示するTextBlockを用意します。翻訳処理を開始するトリガーとなるButtonも忘れずに配置しておきましょう。それぞれ名前は、textBefore、textAfter、btnTranslateとします。

画像

ボタンのイベントハンドラに以下のコードを書いておきます。サービス参照の追加で作成したクライアントクラスのインスタンスを生成し、翻訳完了イベントのTranslateCompletedのハンドラにラムダ式で翻訳後の文章をTextBlockに設定しています。最後にTranslateメソッドを非同期にて実行するようにしています。

下記のサンプルコードにあるTranslateAsyncメソッドの第一引数の "{Bing AppID}" には、Bing Developer Centerにて登録したAppIDを入力しておく必要があります。

private void btnTranslate_Click(object sender, RoutedEventArgs e)
{
    Translator.LanguageServiceClient client = new Translator.LanguageServiceClient();
    // 翻訳が完了したらTextBlockに翻訳後の文章を設定する
    client.TranslateCompleted += (sx, ex) => { textAfter.Text = ex.Result; };
    // TextBoxに入力した文章を英語から日本語への翻訳を行う
    client.TranslateAsync("{Bing AppID}", textBefore.Text, "en", "ja", null, null); 
}

準備は整いました。⁠Hello world」を英語から日本語に翻訳してみましょう。TextBoxに「Hello world」と入力して、ボタンをタップします。

画像

インターネットに接続されている環境なら、すぐに日本語訳された文章が返ってきます。TextBlockに「ハロー ワールド」と表示されているのが判るでしょうか。無事、表示されていれば英和翻訳アプリの完成です。

画像

さいごに

今回はマイクロソフト社が提供しているMicrosoft Translator APIを使用して、英和翻訳の処理を実装してみました。Microsoft Translatorがサポートしている言語は英語、日本語だけではありません。次回はもっと沢山の言語同士の翻訳に対応してみましょう。

以上で今回は終わりです。ありがとうございました。

おすすめ記事

記事・ニュース一覧