【DO!BOOK・ページリンク】
2008_migaro_techreport_001   84 / 136

BOOKをみる

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


82 と、メソッドおよびプロパティの新規作 成が選択可能になるので、必要に応じた インターフェース定義を行う。メソッド であれば名前を定義し、プロパティであ れば名前と属性(タイプ)を定義する。  ここでは、メソッドとして"GetData" を定義し、[読み込み| 書き込み]プロ パティとして"CustNo"(タイプは数字 属性[Long])と[読み込み専用]プロ パティとして"CustName"(タイプは文 字属性[BSTR]) を定義する。【図 1d】。  インターフェースの定義が終了した ら、「ソースコード更新」というボタン を押してみよう。するとソース2 のよう なソースコードが自動作成される。あと は、そこに仕様に応じたユーザーコード を追加すればよい。【ソース2】 COMサーバーのサンプル  今回は、"CustNo" プロパティに得意 先コードを指定し、GetData メソッド を呼び出すことにより、データベースか ら得意先マスターを検索し、取得した得 意先名を結果としてCustName プロパ ティにセットするCOM サーバーを作成 してみた。【ソース3】  このサンプルでは、新規プロジェクト 作成時にあらかじめ用意されている フォーム(ここではfrmMain と命名)に、 DataBase コンポーネントとQuery コ ンポーネントを貼り付け、データベース 接続定義ならびにデータ抽出用のSQL の定義を行っている。  なお、今回作成しているCOM オブ ジェクトは、データベースへのアクセス 機能のみを持ったものとなる。そのため、 画面(フォーム)は表示不要である。  このようなCOM オブジェクトを作成 する場合、プロジェクトファイルのソー スコードを表示し、"Application. ShowMainForm := False;" の1 行を追 加して完成となる。【ソース4】 COM登録  完成したプログラムを他のアプリケー ションより利用可能にするためには、レ ジストリ登録が必要になる。  Delphi/400 開発環境下でレジストリ 登録を行う場合は、Delphi のメニュー から[実行]→[実行時引数]を選択し、 「パラメータ」欄に「/regserver」と入 力し、プログラムを実行する。(反対に レジストリを解除する場合、「/ unregserver」を指定して実行する)。【図 2】  プログラムを実行するとどうなるか。 実行後、画面は何も表示されず、そのま まプログラムが終了するはずだ。ここで は、レジストリへの登録が行われるだけ だからである。つまり、これでCOM 登 録が完了となり、他のアプリケーション から利用可能になる。  実際にこの作成したプログラムが動作 するのは、COM を利用するクライアン トがオブジェクトを生成したときとな る。 COMを使用するクライアント  では、COM を使用するクライアント はどうなるか。今回は、Excel から利用 してみよう。  Excel を起動し、シートの中に得意先 コードのセルと得意先名のセル、それか ら検索用のボタンを用意する。【図3】  そして、ボタンのクリックに対するイ ベント処理として、次のようなVBA コードを入力する。【ソース5】  完成したExcel を「マクロを有効」 にして実行する。画面上で得意先コード を入力した後、検索ボタンを押すことで、 データベースから検索された得意先名が セットされるだろう。【図4】  ここで、Excel 上で作成したソース5 のソースをよく見てみよう。言語の違い はあるが、ソース1 で、Delphi から、 Excel オブジェクトを生成して使用した のと似ていないか。同じように、Excel から、今回作成したCOM のオブジェク トを作成し、プロパティおよびメソッド を使用しているのがわかる。  今回は、単純なマスター検索を行う連 携ではあるが、このCOM オブジェクト を使用するユーザーは、IBM i のデータ 構造を意識せずにデータにアクセスでき る。  つまり、IBM i 上のデータをそのまま 公開すると機密上よくない場合にも、こ のような仕組みを検討することにより、 必要に応じた項目のみを公開できる。 ユーザーが、IBM i のデータを、自由に 安全に利用できるのではないだろうか。  それ以外にもいろいろな連携が実現で きると思うので、ぜひ皆様も新たな連携 にチャレンジしてほしい。 Webで提供される 情報との連携  インターネットには多彩な情報が公開 されている。ふだん皆様もいろいろ利用 されているだろう。これらの情報とシス テムとが連携すれば、便利になるのでは と考えたことはないだろうか?  例えば、システムに登録されている得 意先マスターの住所情報から、地図の Web サイトが表示できたり、出張精算 画面で入力した駅名から路線検索ができ たりするとたいへん便利と思われる。 Webサービス  世の中には一般に「Web サービス」 と呼ばれる仕組みがあり、SOAP と呼 ばれるプロトコルを使用すると完全な連 携が可能だ。また、Delphi/400 から Web サービスを使用する仕組みも用意 されている。  しかし、これらを使いこなすには、 SOAP やXML 等の知識が必要になって くるため、少し敷居が高いのも事実であ る。ゆえにWeb の連携は難しいと考え ていないだろうか? 実は、そこまでの ことをしなくても、ちょっとした連携で あれば容易に実現可能である。 郵便番号検索Webアプリケーション  インターネットエクスプローラで、ア ドレス欄に以下のように入力してほし い。 http://search.post.japanpost.jp/cgizip/ zipcode.php?zip=5560017  これは、日本郵便の郵便番号検索 Web アプリケーションである。この URL から、郵便番号556-0017 地域の所 在地がわかる。【図5】  このように、一般的なWeb アプリケー ションは、Web ブラウザからWeb ア プリケーションに問い合わせを行うこと で動作する。  このときの問い合わせ方法には、 GET メソッドとPOST メソッドという 2 種類が存在するのだが、その中で