尾崎 浩司
株式会社ミガロ．
システム事業部 システム3課

Delphi/400を使用したWebサービス
アプリケーション
インターネット技術を応用し、XML 処理を行うというとたいへん敷居が高く感じる。
実は、Delphi/400 を用いるとそれらは容易に使用可能である。

●Webサービスとは●SOAPとREST●SOAPの使用方法●RESTの使用方法●最後に

略歴
1973 年 8 月 16 日生れ
1996 年三重大学工学部卒
1999 年 10 月株式会社ミガロ．入社
1999 年 10 月システム事業部配属
現在の仕事内容
ミガロ．入社以来、主に Delphi/400を利用した受託開発を担当している。

Web サービスとは
Web サービスとは、インターネットXML で処理を行うというとすごく敷居

直接、出張精算システムと連携することが高いような話にも思えるが、実はが可能になったのである。

Delphi/400 を用いると、これらを容易の技術を活用し、遠隔サイトにあるアプつまり、使用した路線を指定すると、に使用することが可能である。
本稿では、リケーションの機能をネットワークを通自動的に交通費を出張精算システムに登具体例を挙げながら、Delphi/400 を使じて、自社アプリケーションから利用で録するといったことができるわけだ。し用した Web サービスの活用方法についきるようにしたものである。

かも、路線情報を提供するサイトは常にて触れていくこととする。

インターネットが発達したおかげで、最新の運賃情報を提供しているため、自現在では有用な情報が容易に取得できる社アプリケーションでは、運賃マスターようになった。だが、従来の Web アプといった情報をまったく管理する必要がリケーションでは、取得した情報をそのないというメリットもある。

SOAPとREST
Web サービスを使用するにあたって、まま自社のアプリケーションに取り込む

このように Web サービスを使用する

Web サービスを提供しているサイトをことができなかったため、自社アプリことで、自社のアプリケーションの利便

調 査 す る と、 お そ ら く 使 用 方 式 にケーション自体が有用な情報を直接活用性を大きく向上させることができるので「SOAP」あるいは「REST」といったするということは難しかった。しかし、ある。

言葉がでてくるであろう。

Web サービスの普及により、企業の枠

では、Web サービスは、どのようにSOAP と は、Simple Object Accessを超えた情報の連携および活用が可能にして、システム間の連携を可能にしていProtocol の略で、SOAP メッセージとなった。

るのだろうか？ 従来の Web システムでいう XML によってメッセージ交換を行一例を挙げると、従来であれば「乗換は、人がサイトにアクセスして処理結果う方法である。

案内」のような路線情報を提供するサイをブラウザで見るのに対し、Web サー

対して、REST とは、Representational

トを使って、使用した路線の交通費をブ

ビスでは、プログラムがサイトにアクセState Transfer の略で、HTTP の GET

ラウザで確認し、その結果を自社の出張スして処理結果を XML 形式で受け取るメソッドを使って指定された URL にア

精算システムに手で入力するといった手というのが特徴である。

クセスすると、XML が返ってくるとい順が必要であった。しかし、路線情報サ
50

イトの Web サービスを使用することで、インターネットの技術を応用して、うものである。

図1

図2

図3

図451

一般的には、SOAP は、XML メッセージのやり取りを定義する必要があるため④ WSDL ファイル URL を入力【図 3】⑤［完了］ボタンを押下め難易度が低いといわれる。

上記ウィザードを実行すると、WSDLンポーネントである。URL を指定してを解析し、Delphi/400 で使用可能なク結果を取得するには、Get メソッドを使用すればよい。

しかし、どちらの手法も Delphi/400ラスユニットが自動生成されるので、こでは容易に使用可能である。それでは、れをアプリケーションから利用すればよそれぞれの使用方法について具体例を挙い。

げながら説明を進めていこう。

SOAPの使用方法

ここで具体的なサンプルアプリケー
シ ョ ン を 紹 介 し よ う。 図 5 の よ う に

ソース 1 は、先程の図 1 のサンプルア

TIdHTTP コンポーネントを貼り付けたプリケーションのソースコードである。

フォームを用意し、ソース 2 のようにボ【ソース 1】

タンクリックイベントを記述する。
【図

自動生成された CurrencyConvertor

5】【ソース 2】

SOAP を 使 用 す る の に 必 要 な の がユニットを uses 節に含めることにより、本サンプルは、Yahoo! ニュースのト「WSDL」と呼ばれるものだ。WSDL と為替レート取得のために定義されたクラピック用 Web サービスであるが、実行

い う の は、Web Services Description

スやメソッドが使用可能になったことがすると、メモコンポーネント内に、先程Language の略で、XML でメッセージわかるであろう。のブラウザの場合と同じように XML が表示されることがわかるだろう。

交換を行うためのルールが定義されたものである。
（WSDL 自体が XML で記述されている）。

RESTの使用方法

Delphi/400 からXML の扱い

こ の WSDL を 使 用 す る こ と で、REST は、先程も述べた通り、Web

これで Delphi/400 で XML が取得でDelphi/400 アプリケーションから容易サービスを提供するサーバーに対してきることはご理解いただけたと思う。でに Web サービスが利用可能になるのだ。

URL を与えると結果として XML を受は、どうすればこの XML をプログラムけ取れるというものだ。

からアクセスしやすくできるのだろう

今回、SOAP の具体的な使用例として「Webservicex.Net」（http://www.

REST の 具 体 例 と し て は、「Yahoo!

webservicex.net/WCF/webServices.

デベロッパーネットワーク」（http://XML 文書というのは、HTML と同aspx）と呼ばれるサイトで公開されてdeveloper.yahoo.co.jp/）で提供されてじマークアップ言語と呼ばれるものだ

い る、「Currency Convertor」 と い ういる Web サービスを紹介しよう。それ

が、HTML とは違い使用するタグ自体為替レート情報取得 Web サービスを使らの Web サービスは、Yahoo! JAPANの定義を自由に行えるのが特徴である。

用してみよう。

で提供されているさまざまな機能をその定義にあたるのが XML スキーマとこの Web サービスを使用したサンプWeb サービス化したものとなる。
（サー呼ばれるものだ。実はこの XML スキー

ルプログラムを実行したアプリケーショ

ビスを使用するには、アプリケーション

マを使用すると、Delphi/400 から XMLンが、図 1 である。このアプリケーショ

ID が必要なので、事前に取得しておこの扱いが容易になるのである。

ンは、ボタンをクリックすると、米ドルう）。

に対する日本円のレートを表示するというものだ。
【図 1】
Currency Convertor のサイトを確認すると、WSDL ロケーションとして、か？

Yahoo! ニュースのトピック用 Web

例えば Yahoo! 検索 Web サービスをサービスのサイトを確認すると、レスポ使用し、キーワード＂migaro”で問いンス用の XML スキーマの定義（拡張子合わせを行うには、以下のような URLxsd）が記載されているのがわかる。こを使用する。

れを Delphi/400 に取り込めばよいのだ。

以下のように記載されていることがわか

その手順は次の通りである。

る。この情報をもとに、Delphi/400 でhttp://search.yahooapis.jp/WEB使用可能なクラスを生成することが可能

SearchService/V1/webSearch?

①［新規作成］→［その他］を選択なのである。

appid=< アプリケーション ID>&query② XML フォルダの［XML データバイ=migarohttp://www.webservicex.net/CurrencyConvertor.asmx?WSDL①新規プロジェクトを作成②メニューより［ファイル］→［新規作成］→［その他］を選択
から［WSDLインポー③［WebServices］
ター］を選択【図 2】

ンディング］を選択③ソースコード欄に XSD ファイルを指これをブラウザに入力し実行すると、
図 4 のように XML が取得できることが作成手順は次の通りである。

52

Delphi/400 で HTTP クライアントを実装するのは、TIdHTTP と呼ばれるコ

難易度が高く、REST は、URL を指定するだけで情報が XML で受け取れるたばよいだろうか？

わかる。
【図 4】

Delphi/400 からREST の使用

定【図 6】④ウィザードを進み、データバインディングの［設定を保存しない］に設定。
【図 7】⑤［完了］ボタンを押下

このように REST とは、HTTP リク
エストに対して XML をレスポンスとし上記ウィザードを実行すると、XMLて返すものなのである。では、これをスキーマを解析してできたクラスユニッ

Delphi/400 から使用するにはどうすれトが自動生成される。このユニットを使図5

図8

図6

図753

用することで、容易に XML の各要素にアクセス可能になるのである。
なお、XML 文書を Delphi/400 から使用するには、TXMLDocument コンポーネントを使用するのであわせて覚えておこう。
では、先程のサンプルアプリケーションを改良してみよう。TXMLDocument
コンポーネントを 1 つ追加した後に、XML スキーマをデータバインディング
ウィザードでユニットを作成し、ソース3 のようにプログラムを修正する。
【ソース 3】XML ス キ ー マ の 定 義 に も と づ き、ニューストピックの結果セット集合体や各要素がプログラムから使用可能になっているのがわかるだろう。
このサンプルプログラムを実行すると、図 8 のようにメモコンポーネントにトピックが一覧表示されるのである。また、
このサンプルプログラムでは、ニュースの件数やトピック名等がクラス変数として取得できているのもわかる。
【図 8】

最後にWeb サービスを Delphi/400 から使用するのは、SOAP であっても RESTであっても容易であることがおわかりい
ただけたであろう。
今回紹介した「Webservicex.Net」や「Yahoo! デベロッパーネットワーク」だ
けでなく、他にも多様な Web サービスが提供されているので、いろいろ試してみてほしい。そして、自社のアプリケーションと Web サービスをどう組み合わせるか、いろいろ検討してほしい。
自社アプリケーションに Web サービ
スを活用することで、これまで以上の利便性をユーザーに提供できると思われるので、ぜひともチャレンジしていただきたい。
M54

ソース1

ソース2

ソース355