最終回 Webサービス・プロバイダを作ろう(後編)
中林 紀彦
日本アイ・ビー・エム株式会社
2003/3/29
Webサービスによるポータル・アプリを作ろう
それでは連載の締めくくりとして、Webサービスを利用したポータル的なソリューションをイメージできるクライアントを作成してみましょう。
ユーザーIDを入力すると、郵便番号から住所(都道府県名)を検索し、都道府県名から今日と明日の天候を検索・表示するというアプリケーションです。実際には、お天気情報のWebサービスもローカルにありますが、別のサーバで提供していると考えてください。
図1 作成するポータルの全容 |
■データベースとテーブルの準備
ここでは、1つのテーブルを持つ以下のようなデータベースを作成します。
データベース:user
|
||||||||||||||||||||
|
まずデータベースを作成するために、以下のDDLファイルを作ってdb2コマンドを実行します。
CREATE DATABASE USER; |
create_db_user.ddl |
$ db2 -tvf create_db_user.ddl |
次にテーブルを作成するDDLファイルを準備します。
CONNECT TO user; |
create_tb_user.ddl |
上記のDDLファイルを利用して、テーブルを作成します。
$ db2 -tvf create_tb_user.ddl |
■データのインポート
以下の2つのファイルを用意します。ユーザーとその郵便番号を記述したCSVファイルと、それをテーブルにインポートするDDLファイルです。
CONNECT TO user; |
import_user.ddl |
001,Norihiko,3300843 |
user.csv |
ファイルを作成したらデータをインポートします。
$ db2 -tvf import_user.ddl |
■新機能の実装
データを準備したら、先ほどのアプリケーションをベースにポータル・アプリケーションを作成します。
ユーザー情報はローカルのデータベースに持っているので、このデータベースを検索する準備を行います。そのために、データベース関連のコンポーネント(SQLConnection、SQLDataSet)を配置して各プロパティを設定します。
配置したSQLConnection1をダブルクリックし、先ほど作成したデータベース用の「DB2User」という接続を作成し、プロパティを画面9のように設定します。また、LoginPromptは「False」にします。
画面9 SQLConnection1のプロパティ設定 |
SQLDataSet1は、SQLConnectionを「SQLConnection1」、NoMetaDataをwTrue、CommandTextには、
'SELECT uid, uname,
zipcode from user_address WHERE uid = :uid' |
というSQLを入力します。パラメータuidは画面10のように設定します。
画面10 パラメータuidの設定 |
これで、ローカルのデータベースuserからユーザーの郵便番号を検索する準備が整いました。
次に、郵便番号から都道府県を検索するためのWebサービス・クライアントを実装します。このWebサービスは、Webサービス同好会(http://objectclub.esm.co.jp/webservice/)で公開されている「郵便番号検索Webサービス」を利用します。
同Webサービスを利用するために、WSDL(http://nile.esm.co.jp:8080/wsdl/ZIPSearch.wsdl)をインポートします。
画面11 WSDLインポートウィザードの画面 |
ZIPSearch1.pasというファイルが生成されるので保存します。次にHTTPRIOコンポーネント(HTTPRIO1)を追加して、WSDLLocationを「http://nile.esm.co.jp:8080/wsdl/ZIPSearch.wsdl」とし、ServiceとPortをドロップダウンリストから選択します。
画面12 HTTPRIO1のプロパティ設定 |
準備の仕上げとして、[ユニットを使う]でZIPSearch1とEditコンポーネント(Edit2)を追加します。
それでは、Button1をダブルクリックしてロジックを実装しましょう。
procedure TForm1.Button1Click(Sender: TObject); |
それでは、実行してみましょう。
画面13 ユーザーIDで各地の天候を表示するアプリケーション |
Edit1にユーザーIDを入力して[O.K.]ボタンをクリックすると、そのユーザーの住所の天候が表示されるはずです。
最後にちょっとした味付けとしてLabelコンポーネントを追加し、ログインすると「ようこそ○○さん」と表示されるようにしてみましょう。ソースに、オレンジの部分を追加します。
procedure TForm1.Button1Click(Sender: TObject); |
ちゃんとユーザー名が表示されたでしょうか?
画面14 完成したポータルの画面 |
ここまでできれば、パーソナル・ポータルの完成です。Webブラウザから使えるWebアプリケーションにすることも、もちろん簡単にできます(第2回参照)。12星座占いを提供するWebサービスやニュースを提供するWebサービスなどがどんどん増えてくれば、パーソナル・ポータルをさらに充実させることができます。
また、今回の連載ではWSDLを使ってWebサービスを利用する例を紹介しましたが、UDDIで必要なサービスを検索して利用するといった例も今後増えていくことでしょう。例えば、天気予報を提供するサイトが複数存在していてUDDIに登録されていれば、要件にマッチしたWebサービス提供者を探し出す、といったことも近い将来可能になるでしょう。
最後に
この連載に最後までお付き合いいただき、ありがとうございました。Kylixを利用すれば、Webサービス・アプリケーションを非常に簡単・短時間で作ることができます。また、DB2自体もWebサービス関連の機能を持っています。
Webサービス・プロバイダ(Web Services Object Runtime Framework for DB2):http://www7b.software.ibm.com/dmdd/zones/webservices/worf/
Webサービス・クライアント(Web Services Consumer):
http://www7b.software.ibm.com/dmdd/zones/webservices/wsconsumer/
KylixもDB2も、評価版を無償で利用できるので(第1回参照)、皆さんもぜひWebサービス・アプリケーションにチャレンジしてみてください。
2/2
|
|
|
||||
|
連載 Kylix 3とDB2で作るWebサービス・アプリ |
Linux Squareフォーラム プログラミング関連記事 |
特集:オブジェクト指向に生まれ変わるPHP5[前編] 現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? |
|
特集:Windows開発者に贈る
Kylixの全貌 注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう |
|
特集:Kylixプログラミング作法 GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説 |
|
連載:PHP4で作るWeb-DBシステム(全5回) PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある |
|
連載:ステップ・バイ・ステップ・シェルスクリプト(全7回) Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する |
|
連載:Kylix
3とDB2で作るWebサービス・アプリ(全5回) Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|