【DO!BOOK・ページリンク】 2009_migaro_techreport_001 54 / 80 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 スキーマを解析してできたクラスユニッ トが自動生成される。このユニットを使 |