XForms は、フォーム・データの表示と収集のために W3C によって開発された標準です。W3C 勧告で述べられているように (「参考文献」を参照)、XForms は「Web のための次世代のフォーム」となるように意図されています。この勧告の宣言によると、「従来の XHTML フォームを XForms モデル、インスタンス・データ、そしてユーザー・インターフェースの 3 つの部分に分割することで、フォームのコンテンツからプレゼンテーションを分離し、再利用を可能にし、強い型付けを行います。これによって、サーバーとやりとりする回数を減らすとともに、機器への依存性を低くし、スクリプト作成の必要性を減らします」。XForms 文書に備わったデータ・モデルには、1 つ以上の XML インスタンス文書が含まれます。フォームはこれらの XML インスタンス文書を操作して、バックエンド・システムへの送信を可能にします。
XML Forms Generator は、フォーム開発を後押しするツールです。このツールは、XHTML 文書に XForms マークアップを組み込んだ機能的で妥当性のあるフォームを素早く、自動的に生成します (この記事では、XHTML 文書と XForms マークアップの組み合わせを「XHTML/XForm」と呼びます)。フォームを生成するための入力は、XML データ・インスタンス (XML Schema を伴う場合とそうでない場合) にすることも、WSDL 文書にすることもできます。
XML Forms Generator はオープンソースの Eclipse ワークベンチのプラグインとして、2005年4月に alphaWorks に初めてリリースされました。Eclipse ワークベンチのダウンロード・サイトへのリンクについては、「参考文献」を参照してください。同じく「参考文献」に記載されている alphaWorks ページの XML Forms Generator のへのリンクでは、このツールについて学べるとともに、ツールをダウンロードしてインストールすることができます。
Data Studio と Data Web Services
IBM Data Studio は統合データ管理環境として、データベース・オブジェクト、クエリー、データベース・ロジック、そして pureQuery アプリケーションを作成するための完全な開発環境およびテスト環境を提供します。Data Studio のツールでは、SQL および XQuery 用に統合されたクエリー・エディターを使って短時間でデータベース・アプリケーションを開発できるだけでなく、アプリケーションとクエリーを手軽に最適化することも、対話型ルーチン・デバッガーで (Java™ コードおよび SQL の) ストアード・プロシージャーを作成およびテストすることもできます。また、Java アプリケーション内部の SQL を素早く開発、あるいはカスタマイズできるようにもなります。
IBM Data Studio ソリューションに組み込まれている多くの新機能の 1 つに、Data Web Services のサポート機能があります。Data Web Services は、IBM データベース・サーバーのための次世代の Web サービス・プロバイダーで、REST スタイルのサービス (HTTP の GET/POST バインディング)、SOAP over HTTP Web サービス、自動 WSDL 生成をサポートする完全な Web サービス・インターフェースを提供します。Data Web Services は IBM DB2® データベース・ファミリー、IBM IDS (Informix® Dynamic Server) の他、よく使用されている Web サーバーの大多数をサポートします (Apache Tomcat v5.5、IBM WebSphere® Application Server V6.1、IBM WebSphere Application Server Community Edition V1.1 など)。Data Studio を使用して Data Web Services を作成する方法についての詳細を学ぶには、公開されている developerWorks の記事を読んでください (「参考文献」を参照)。
Data Studio はデータベース層とミドルウェア層での Data Web Services 開発を大幅に簡易化します。一方、XFG は WSDL ファイルからフォームを生成することによって、XForms ベースの UI 開発を効率化します。したがって、XFG を Data Studio に統合すれば、Data Studio と XFG 両方の機能を利用する包括的なソリューションを作成して、データベース開発、Web サービス開発、および XForms ベースの UI 開発全般にわたってプロセスを自動化および迅速化することができます。
XFG と Data Studio との統合によってもたらされる明らかな価値には、以下のものがあります。
- XFG は、Data Studio でのデータベース・プロジェクトにとって、迅速なプロトタイプ化ツールおよび XML メッセージのビジュアライザーになります。
- XFG は、迅速な UI 開発によって Data Studio を補完します。
- XFG は、DB2 pureXML データを XHTML/XForm に可視化することができます。
- XFG は、データベースのメタデータおよび XML Schema から検証情報を生成します。
- 統合によって、開発のワークロードを減らすことができると同時に、ユーザー・エクスペリエンスを大幅に改善することができます。
XFG と Data Studio はどちらも Eclipse プラグインであることが、統合を容易にしています。XFG を簡単に Data Studio に統合できるようにするには、更新サイトから XFG プラグインをダウンロードして Eclipse にインストールしてください (XML Forms Generator については「参考文献」を参照)。
このセクションでは、XFG と Data Studio が連動して Web アプリケーションを作成する仕組みを説明します。図 1 に、XFG と Data Studio によって構成されるアーキテクチャーとこの両者の間の相互作用を示します。
図 1. Data Studio と XFG によって構成されるアーキテクチャーおよび相互作用
相互作用のフローでは、まず Data Studio がデータベースのメタデータから Data Web Services を生成します。すると、XFG は生成された Data Web Services とデータベース両方のメタデータを利用して XHTML/XForm を生成します。生成された XHTML/XForm は、最終的に REST/SOAP を介して Data Web Services と通信します。
Data Studio と XFG が連動する仕組みについて段階を追って詳しく説明するため、これから以下の表に記載した構成に基づく小規模な患者情報管理アプリケーションを作成します。
| 列名 | 列の型 | 必須かどうか | 内容 |
|---|---|---|---|
| ID | INTEGER | 必須 | テーブルに挿入された各レコードに固有の ID |
| NAME | VARCHAR(10) | 必須 | 各患者の名前 |
| BIRTHDAY | DATE | 必須 | 各患者の誕生日 |
| HEIGHT | DECIMAL | 必須 | 各患者の身長 |
| WEIGHT | DECIMAL | 必須 | 各患者の体重 |
| DESCRIPTION | VARCHAR(10) | 必須 | 各患者についての簡単な説明 |
この例を実行してみるには、無料の DB2 Express-C をダウンロードしてください (ダウンロード・サイトについては「参考文献」を参照)。DB2 Control Center を使用してデータベースを作成してから、図 2 の説明に合うように表を作成します。この記事では、スキーマに「DB2ADMIN」を使用して「PATIENT」という名前の表を作成しました。
DB2 で表を作成した後、私たちは Data Studio を使用して Data Web Services を作成しました。そのために、Data Studio では Web サービスを定義するために作成された SQL を使用します (この記事のように SQL ステートメントを単独で作成するか、ストアード・プロシージャーを作成してください)。SQL ステートメントを使用して、Data Web Services の WSDL ですべてのパラメーターを入力パラメーターにマッピングします。Data Studio と XFG は両方とも、無名パラメーターと名前付きパラメーターという 2 つのパラメーター・スタイルをサポートします。
無名パラメーターを使用した場合の SQL ステートメントは以下のようになります。
INSERT INTO DB2ADMIN.PATIENT (NAME, BIRTHDAY, HEIGHT, WEIGHT, DESCRIPTION) VALUES (?,?,?,?,?)
このように、値は変数プレースホルダー (?,?,?,?,?) によって表されます。
名前付きパラメーターを使用する場合には、SQL ステートメントには以下のように、挿入される値を保持する名前付き変数のリストを使用します。
INSERT INTO DB2ADMIN.PATIENT (NAME, BIRTHDAY, HEIGHT, WEIGHT, DESCRIPTION) VALUES (:NAME, :BIRTHDAY, :HEIGHT, :WEIGHT, :DESCRIPTION)
名前付きパラメーターの場合、生成される XHTML/XForm 内での各ラベルは、それぞれに対応するパラメーター名と同じになります。一方、無名パラメーターの場合には、各ラベルには p1、p2 といった具合に名前が割り当てられます。ここでは、このプロセス全体については説明しません。SQL ファイルから Data Web Services を作成する方法を調べるには、「参考文献」を参照してください。この記事のサンプルでは、insertPatient.sql という名前の SQLファイルを作成した後、対応するサービスを作成し、WSDL ファイル insertPatient.wsdl を生成しました。
Data Studio でサービスを作成してデプロイしたら、今度は XFG を使用して、サービスと通信するための XHTML/XForm とそれに対応する XML ファイルを生成することができます。
- XFG で insertPatient.wsdl ファイルを選択し、この WSDL ファイルを右クリックして XForms Generator メニュー項目から Generate XHTML/XForms ウィザードを選択します。図 2 に、このウィザードの最初のステップを示します。
図 2. XFG のウィザードによる最初のステップ
このステップでは、基礎となるデータベースに接続するためのユーザー名とパスワードが必要です。「Generate validation information (妥当性検査情報を生成する)」オプションと「Retrieve PureXML instance from Database (データベースから PureXML インスタンスを取得する)」オプションは、どちらも DB2 での pureXML サポートで使用します。この 2 つのオプションについては連載第 2 回の記事で説明するので、今回はチェック・ボックスのチェック・マークを外したままにしておいてください。
- XFG によるフォーム生成の操作を選択します。ここでは、insertPatient 操作を選択してください。
図 3 ターゲット操作の選択
- 生成された XHTML ファイルを配置する場所を指定します。
図 4. ターゲット・ファイルの場所の指定
- 図 5 で強調表示されているサブミット・ターゲットを、デプロイした Web サービスのエンドポイントに変更します。エンドポイント (点線の枠を参照) が正しく設定されていない限り、生成された XHTML/XForm は Web サービスと通信することができません。
図 5. 出力文書のカスタマイズ
- XML インスタンスの作成オプションを図 6 のように構成します。
図 6. XML インスタンスの作成に合わせたオプションの選択
- XML インスタンス・ファイルを配置する場所を入力するか、選択します。
図 7. XML ファイルの場所の指定
- XML スキーマ・ファイルの場所を指定します。
図 8. スキーマ・ファイルの場所の指定
- 最後に Finish をクリックして XHTML/XForm を生成します。生成された XHTML ファイルの名前は、insertPatient.xhtml となります。
リスト 1 を見るとわかるように、insertPatient.xhtml には XFG によって XForms モデルおよび関連するバインド属性が生成されます (リスト 1 の拡大版を参照)。XForms モデルには、XFG がデータの制約を XForms バインド属性として生成します。これらの属性はデータベース・メタデータ (列の型、長さ、必須かどうかなど) に対応します。
リスト 1. 生成された XForms モデルとバインド属性
insertPatient.xhtml を Firefox で表示すると、図 9 の画面になります (図 9 の拡大版を参照)。
図 9. Firefox ブラウザーでの insertPatient XHTML/XForm の表示
insertPatient.xhtml をレンダリングして表示される画面からは、以下のことがわかります。
- すべての必須フィールドの後には、赤いアスタリスクが付きます。DESCRIPTION フィールドを除くすべてのフィールドは必須フィールドです。
- 誤った値を入力すると、ユーザーに検証エラーをアラートするために該当箇所のラベル表示が赤に変わります。図 9 では、10 進数でなければならない「HEIGHT」に、ストリング値が入力されています (図 9 をカラー表示で見ていれば、ラベルが赤くなっていることがわかるはずです)。
- ※訳注: 上記段落の「図 9」は、原文では「Figure 5」となっておりますが、「Figure 9」の誤りのようなので、「図 9」と訳してあります。
- このフォームのすべてのフィールドには、ヒントとなるメッセージがあります。上記の図では、「HEIGHT is (decimal, REQUIRED)」というメッセージが表示されています。
- フィールドの型が日付型やブール型のフィールド、または特殊なウィジェットによって仮想フィールドにすることができるその他のフィールドについては、値を編集するときに、対応するウィジェットが値フィールドに表示されます。例えば、日付型のフィールドにはデートピッカー、ブール型のフィールドにはチェックボックスが表示されるといった具合です。
insertPatient.xhtml を使用すれば、フォームをサブミットするという方法で Web サービスと通信することが可能です。Web サービスは前に記載した SQL INSERT ステートメントを呼び出し、フォームの値で構成される行を表に挿入します。バックエンドのデータベース表にアクセスして、表の内容を確認してください。対応するレコードが正常に表に追加されていることがわかるはずです。
この記事では、XForms, XForms Generator、Data Studio、Data Web Services を概説した後、XFG を Data Studio に統合する理由について説明しました。続いて、XFG が Data Studio と連動して、完全なデータ・サービス・ソリューションを作成するためのシームレスな方法をエンド・ユーザーに提供する仕組みを説明しました。この連載の第 2 回では、XFG での DB2 pureXML サポートについて要点をまとめます。pureXML インスタンスに対応する登録済みの XML スキーマを利用して、XFG と Data Studio との統合によって pureXML インスタンスを XHTML/XForm に表示する方法を学んでください。
学ぶために
- 「Integrate between XML Forms Generator and Data Studio, Part 2: DB2 pureXML support in XFG」(Xiao Feng Zhao、Qiang Wang、Susan Malaika、Keith Wells 著、developerWorks、2008年12月): この連載の第 2 回では、Data Studio の中で XML Forms Generator を使用して XForms アプリケーションを作成します。このアプリケーションでは XML スキーマの取得や、型情報の生成、フォームを作成するための制約の定義などが可能であり、さらに Data Web Services を使用して DB2 にフォーム・データを挿入します。
- XForms についての W3C 勧告: この Web の基盤技術で、目的と表示、そして XML 形式で得られる結果とを分離する機能を組み合わせてください。
- 「Data Web Services: Build Web services the new way to access IBM database servers: Service-enabling your access to DB2 and Informix Dynamic Server」(Vijay Bommireddipalli 著、developerWorks、2007年12月): Data Web Services について概説するこの記事で、Data Web Service を作成する方法、データベースへの Web サービス・ベースのアクセスを生成する方法を学んでください。
- DB2 XML ウィキ: DB2 9 と pureXML に関する記事、プレゼンテーション、デモを調べてください。著者たちは出発点として、DB2 demo program (George Baklarz 作、developerWorks、2008年2月更新) を推奨します。
- XML Forms Generator/Data Studio Overview (alphaWorks、2008 年 11 月): この Eclipse プラグインで XForms 1.0 標準に準拠したフォームを生成してください。
- XForms Tutorial (W3 Schools): 次世代の HTML フォーム、XForms をアプリケーションで使用する方法を学んでください。
- developerWorks Web services: SOA と Web サービス分野でのスキルを磨くために必要なリソースを入手してください。
- developerWorks Information Management: このサイトにアクセスして、IBM Information Management 製品では SOA および Web サービスをどのように使用できるかを学習するためのリソースを探してください。
- Eclipse.org: Eclipse のサイトにアクセスしてください。このオープン・ソース・コミュニティーのプロジェクトでは、ソフトウェアの作成、デプロイメント、そしてそのライフサイクル全体での管理を可能にする拡張可能なフレームワーク、ツール、そしてランタイムからなるオープン開発プラットフォームの構築を重点としています。
- IBM XML 認定: XML や関連技術の IBM 認定技術者になる方法について調べてください。
- XML Technical library: 広範な技術に関する記事とヒント、チュートリアル、標準、そして IBM レッドブックについては、developerWorks XML ゾーンを参照してください。
- developerWorks technical events and webcasts: これらのセッションで最新情報を入手してください。
- technology bookstore: この記事で紹介した技術やその他の技術に関する本を参照してください。
- developerWorks podcasts: ソフトウェア開発者向けの興味深いインタービューとディスカッションを聞いてください。
製品や技術を入手するために
- Web Tools Platform (WTP) Project: Eclipse の WTP プロジェクトを入手して、Eclipse プラットフォームを Web および Java EE アプリケーションの開発用ツールで拡張してください。このプロジェクトには、開発を容易にする各種言語に対応したソースとグラフィカル・エディター、ウィザード、組み込みアプリケーション、そしてアプリケーションのデプロイメント、実行、テストをサポートするツールと API が含まれています。
- DB2 Express-C:DB2 Express 9 データベース・サーバーの試用版を無料でダウンロードしてください。
- DB2 for Linux™, UNIX™, and Windows: DB2 のハイパフォーマンスと使い易さ、そして自己記述的な XML の利点を兼ね備えた対話型データ・サーバーの無料試用版をダウンロードしてください。
- alphaWorks の XML Forms Generator: 標準ベースのデータ駆動型 Eclipse プラグインをダウンロードしてください。このプラグインは、XML データ・インスタンスまたは WSDL 文書から、XHTML 文書に XForms マークアップを組み込んだ機能的フォームを生成します。
- IBM Data Studio: 統合データベース開発環境の無料試用版をダウンロードしてください。データ・アクセスの効率性とパフォーマンスを向上させるこの環境では、アプリケーションを素早く設計、開発、デプロイメントできます。
- IBM 製品評価用試用版ソフトウェア: developerWorks から直接ダウンロードできる試用版ソフトウェアで、次のプロジェクトを構築してください。DB2®、Lotus®、Rational®、Tivoli®、および WebSphere® によるアプリケーション開発ツールおよびミドルウェア製品の試用版が揃っています。
議論するために
- ディスカッション・フォーラムに参加してください。
- Data Studio Team のブログ: このブログから Data Studio Space に加わってください。
- XML ゾーンのディスカッション・フォーラム: XML 関連のフォーラムに参加してください。
- developerWorks blogs:developerWorks blogs から developerWorks コミュニティーに加わってください。

Xiao Feng Zhao は、China Software Development Laboratory の China Emerging Technology Institute に勤務するスタッフ・ソフトウェア・エンジニアです。IBM インキュベーター・プロジェクトを専門とする彼は、Web 2.0、SOA、J2EE、そして Web 技術に関心を持っています。現在取り組んでいるのは、Ajax および SOA 標準に対応した PoCs 開発です。

Qiang Wang は、China Software Development Laboratory の China Emerging Technology Institute でテクニカル・リーダーを務めています。専門は、IBM インキュベーター・プロジェクトと SOA 関連のトピックです。彼が関心を持っている分野には、J2EE、SOA、MDA/MDD、AOP、RUP、そしてプロジェクト管理があります。現在は、産業関連の SOA ソリューションのリーダーとして活躍しています。

Susan Malaika は (IBM Software Group の一部である) IBM Information Management Groupのシニア・テクニカル・スタッフです。専門分野は XML、Web、データベースであり、Global Grid Forum ではグリッド環境でデータをサポートする標準を開発しました。彼女は IBM 製品のソフトウェア開発者としての経験の他に、インターネット・スペシャリスト、データ・アナリスト、アプリケーションの設計者および開発者としての経験もあります。また Web に関する共著作があり、トランザクション処理や XML に関する記事も執筆しています。彼女は IBM Academy of Technology の一員でもあります。
