【DO!BOOK・ページリンク】
2009_migaro_techreport_001   54 / 80

BOOKをみる

10秒後にBOOKのページに移動します


52  一般的には、SOAP は、XML メッセー ジのやり取りを定義する必要があるため 難易度が高く、REST は、URL を指定 するだけで情報がXML で受け取れるた め難易度が低いといわれる。  しかし、どちらの手法もDelphi/400 では容易に使用可能である。それでは、 それぞれの使用方法について具体例を挙 げながら説明を進めていこう。 SOAPの使用方法  SOAP を使用するのに必要なのが 「WSDL」と呼ばれるものだ。WSDL と いうのは、Web Services Description Language の略で、XML でメッセージ 交換を行うためのルールが定義されたも のである。(WSDL 自体がXML で記述 されている)。  このWSDL を使用することで、 Delphi/400 アプリケーションから容易 にWeb サービスが利用可能になるのだ。  今回、SOAP の具体的な使用例とし て「Webservicex.Net」(http://www. webservicex.net/WCF/webServices. aspx)と呼ばれるサイトで公開されて いる、「Currency Convertor」という 為替レート情報取得Web サービスを使 用してみよう。  このWeb サービスを使用したサンプ ルプログラムを実行したアプリケーショ ンが、図1 である。このアプリケーショ ンは、ボタンをクリックすると、米ドル に対する日本円のレートを表示するとい うものだ。【図1】  Currency Convertor のサイトを確認 すると、WSDL ロケーションとして、 以下のように記載されていることがわか る。この情報をもとに、Delphi/400 で 使用可能なクラスを生成することが可能 なのである。 h t t p : / / w w w . w e b s e r v i c e x . n e t / CurrencyConvertor.asmx?WSDL  作成手順は次の通りである。 @新規プロジェクトを作成 A メニューより[ファイル]→[新規作 成]→[その他]を選択 B [WebServices]から[WSDLインポー ター]を選択【図2】 C WSDL ファイル URL を入力【図3】 D[完了]ボタンを押下  上記ウィザードを実行すると、WSDL を解析し、Delphi/400 で使用可能なク ラスユニットが自動生成されるので、こ れをアプリケーションから利用すればよ い。  ソース1 は、先程の図1 のサンプルア プリケーションのソースコードである。 【ソース1】  自動生成されたCurrencyConvertor ユニットをuses 節に含めることにより、 為替レート取得のために定義されたクラ スやメソッドが使用可能になったことが わかるであろう。 RESTの使用方法  REST は、先程も述べた通り、Web サービスを提供するサーバーに対して URL を与えると結果としてXML を受 け取れるというものだ。  REST の具体例としては、「Yahoo! デベロッパーネットワーク」(http:// developer.yahoo.co.jp/)で提供されて いるWeb サービスを紹介しよう。それ らのWeb サービスは、Yahoo! JAPAN で提供されているさまざまな機能を Web サービス化したものとなる。(サー ビスを使用するには、アプリケーション ID が必要なので、事前に取得しておこ う)。  例えばYahoo! 検索Web サービスを 使用し、キーワードWmigaro”で問い 合わせを行うには、以下のようなURL を使用する。 http://search.yahooapis.jp/WEB SearchService/V1/webSearch? appid=< アプリケーションID>&query =migaro  これをブラウザに入力し実行すると、 図4 のようにXML が取得できることが わかる。【図4】 Delphi/400 からREST の使用  このようにREST とは、HTTP リク エストに対してXML をレスポンスとし て返すものなのである。では、これを Delphi/400 から使用するにはどうすれ ばよいだろうか?  Delphi/400 でHTTP クライアントを 実装するのは、TIdHTTP と呼ばれるコ ンポーネントである。URL を指定して 結果を取得するには、Get メソッドを使 用すればよい。  ここで具体的なサンプルアプリケー ションを紹介しよう。図5 のように TIdHTTP コンポーネントを貼り付けた フォームを用意し、ソース2 のようにボ タンクリックイベントを記述する。【図 5】【ソース2】  本サンプルは、Yahoo! ニュースのト ピック用Web サービスであるが、実行 すると、メモコンポーネント内に、先程 のブラウザの場合と同じようにXML が 表示されることがわかるだろう。 Delphi/400 からXML の扱い  これでDelphi/400 でXML が取得で きることはご理解いただけたと思う。で は、どうすればこのXML をプログラム からアクセスしやすくできるのだろう か?  XML 文書というのは、HTML と同 じマークアップ言語と呼ばれるものだ が、HTML とは違い使用するタグ自体 の定義を自由に行えるのが特徴である。 その定義にあたるのがXML スキーマと 呼ばれるものだ。実はこのXML スキー マを使用すると、Delphi/400 からXML の扱いが容易になるのである。  Yahoo! ニュースのトピック用Web サービスのサイトを確認すると、レスポ ンス用のXML スキーマの定義(拡張子 xsd)が記載されているのがわかる。こ れをDelphi/400 に取り込めばよいのだ。  その手順は次の通りである。 @[新規作成]→[その他]を選択 A XML フォルダの[XML データバイ ンディング]を選択 B ソースコード欄にXSD ファイルを指 定【図6】 C ウィザードを進み、データバインディ ングの[設定を保存しない]に設定。 【図7】 D[完了]ボタンを押下  上記ウィザードを実行すると、XML スキーマを解析してできたクラスユニッ トが自動生成される。このユニットを使