TOP
>
設計・移行・活用
> コンポーネントベース開発の実際
IdbAで構築する生産性が高いリッチクライアント
第3回:コンポーネントの開発事例
著者:
日立システムアンドサービス 田中 一義
2005/10/25
前のページ
1
2
3
次のページ
コンポーネントベース開発の実際
「一括!コマース『速販』」は、ECショッピングモール・ネットショッピングサイトの出店者のストア運営を支援するアプリケーションです。基本的なセットでは商品管理と受注管理の機能を持っています。『速販』で特徴的なのは、複数のショッピングモールに出店しているストアにおいて、いままで出店先ごとに個別に行っていた受注管理や商品データ登録の作業を一括で処理できるようになっていることです。
図1:『速販』の概要
商品の登録や受注参照の仕組みや利用手順はショッピングモールごとに異なっており、そのため『速販』ではそれぞれのショッピングモールごとに合わせた接続プログラムを用意し、それらを1つのクラアントプログラムへ集約することによって、出店先を横断した一括処理を可能にしています。
今回紹介する開発の内容は、この出店先ごとの接続プログラムに関して、新たにlivedoorデパート用の接続プログラムを追加することでした。
図2:接続プログラム
出店先ごとの接続プログラムは、それぞれオートコンポーネントとしてモジュール化されています。オートコンポーネントは、プラットフォームであるIdbAが管理するオブジェクトモジュールの単位で、『速販』本体それ自身もこのオートコンポーネントで構成されています。『速販』本体は出店先ごとの接続プログラムを実装したオートコンポーネントに対し、それらが実装する「商品アップロード」「商品詳細」といった機能ごとのインターフェースを呼び出すことによってそれぞれを機能させます。
今回の接続プログラムも、新たにオートコンポーネントとして開発しました。商品管理や受注管理の実現のために実装しなければならない機能が、あらかじめJavaのインターフェース定義として開示されます。それに対して、livedoorデパート用に必要な新しい機能を実装します。このように呼び出される側のオートコンポーネントの開発作業の内容は、基本的に呼び出す側から要件として開示されるインターフェースに所定の機能を実装していくことに尽きます。
このあたりの考え方はオーソドックスなコンポーネントベース開発と変わらないため、Javaでの開発にある程度親しんだ技術者には馴染みやすいはずです。このようにインターフェースによって仕様の境界を明確に分けた開発は、各コンポーネントを並行に開発することが容易になるため、迅速なシステム開発を促進する効果もあります。
一方で、呼び出す側が規定すべきインターフェースの設計、すなわちコンポーネントの境界面をどのように切るかを決めるためには、設計者にそれなりのスキルや方針が必要になるでしょう。『速販』がそうであるように、商品管理や受注管理といった機能を一般的に定義し、将来も含めてすべての出店先に適用可能なインターフェースをうまく設計する必要があるからです。
ショッピングモールとの接続
出店先への接続そのものもJavaによる開発です。livedoorデパートでは商品や受注の管理ツールをWebで提供しています。接続プログラムは、管理ツールを構成するWeb画面での認証や入出力のやり取りをWebブラウザになり変わって行います。これによって接続プログラムが、『速販』からのデータをHTTP通信で送信したり、逆にHTTP応答としてHTML形式で返されてくるlivedoorデパートからのデータを受信して『速販』へ渡したりする役目を担います。
図3:ショッピングモールとの接続
IdbAでは、こうしたWebブラウザ向けのHTTP通信をとりこむための機能をライブラリで提供しています。接続プログラムではこのライブラリを使って上記のような機能を実装することができます。ライブラリの機能は比較的簡易なもので、例えば接続先URLや送受信するパラメータやそれに接続と切断のタイミングなどと通信の手順をある程度アプリケーションで意識して管理する必要があります。
前のページ
1
2
3
次のページ
著者プロフィール
株式会社日立システムアンドサービス 田中 一義
株式会社 日立システムアンドサービス 研究開発センタ 主任技師
J2EE、Web多階層アプリケーションに関わる技術開発と社内普及活動をきっかけとして、自社フレームワークおよびコンポーネント開発に従事。オブジェクト指向/サービス指向モデリングの適用、エンタープライズアーキテクチャへの取り組みなどをテーマとして、要素技術の研究開発プロジェクトを推進。
INDEX
第3回:コンポーネントの開発事例
はじめに
コンポーネントベース開発の実際
ユーザインターフェースの開発