WEB サービスというと、XML だとか SOAP だとか WSDL だとか UDDI だとか、そういった象徴的な言葉だけが先行しているせいもあって、なんだか難しいものだなと思っている人が多いようです。
でも、WEB サービス・クライアントとしてちょいと使うだけなら、そんなに難しくはありません。むしろ、Visual Studio .NET などの強力な開発環境があれば、細かい点なんてほとんど考えずに簡単に使えます。
その実例ということで、 以前に Passion For The Future で紹介されていた WEB サービスを使って翻訳(英日)ソフトを作ってみます。
[C# と WEB サービスを使って翻訳ソフトを作る]
とりあえず、Visual Studio .NET を起動します。
今回は C# を使った Windows アプリケーションを作るので、「プロジェクトの種類」は “Visual C# プロジェクト” を選択し、「テンプレート」に “Windows アプリケーション”、「プロジェクト名」に “TransSample” 、「場所」に “e:\dev\cs\ws” を指定します。場所とか名前は適当につけてください。
フォームのデザイン画面で、以下のようにコントロールを配置します。かなり適当です。
コントロールには、次のように名前を付けました。
・原文テキストボックス(txtFrom)
・訳文テキストボックス(txtTo)
・翻訳ボタン(btnTranslate)
さて、画面の準備ができたのでいよいよ WEB サービスを追加します。今回利用するのは WebserviceX.NET というウェブサイトの Translation Engine というWEB サービスです。
WEB サービスをクライアントとして使うときに必要なのは、WSDL スキーマの場所だけです。
Translation Engine のウェブサイトを開くと、真ん中ぐらいに
http://www.webservicex.net/TranslateService.asmx?WSDL
と、あります。これが WSDL スキーマです。
プロジェクト → Web 参照の追加 を選択して、
Web 参照の追加ダイアログの URL の欄に WSDL スキーマの URL を入力し、移動ボタンを押します。
Web サービスを探しに行ってます。わーい。
どうやら見つかったみたいなので、Web 参照名に TransProxy という名前を付けて「参照の追加」ボタンを押します。
なんかそれっぽいのが追加されてます。
これでコーディングの準備ができました。先ほど作った「翻訳」ボタンをダブルクリックして、btnTranslate_Click メソッドに以下のコードを追加します。
private void btnTranslate_Click(object sender, System.EventArgs e)
{
string from = txtFrom.Text;
TransProxy.TranslateService trans = new TransProxy.TranslateService();
txtTo.Text = trans.Translate(TransProxy.Language.JapaneseTOEnglish, from);
}
とても簡単なプログラムです。原文テキストボックスから文字を取得して(1 行目)、翻訳サービスプロキシクラスのインスタンスを作って(2 行目)、そのインスタンスの翻訳メソッドの結果を訳文テキストボックスに入れてる(3 行目)だけです。
3 行目の Translate メソッドの第一引数には、何語から何語へ訳すのかという定数を入れるのですが、今回使った「日本語→英語」だけじゃなく、「英語→日本語」や「英語→韓国語」など他にもいろいろあってオモシロイです。
さて、せっかく作ったので実行してみます。
やりました! わほほーいです。
なんとなく正しいっぽい感じで翻訳されています。何気にフォントとか画面のサイズが変わってますが、仕事じゃないのでドキュメントとしての整合性とかは気にしないことにします。
さて、ここまで見てもらえばわかるように、えらそうに作ったとかいってもただ単に WEB サービスのほうで提供されているメソッドを呼んで戻り値を表示しているだけです。そもそもコード自体はは 3 行しか書いてません。事実、文章はダラダラ書いてますが、実際にはスクリーンショット撮りながらでも 10 分くらいしかかかってません。
このエントリを見て、今までは「難しそう」なだけで避けてきた人が少しでも WEB サービスを使ったアプリケーションを作ったりするきっかけになればと思います。
コメント