株式会社ATLED
城倉和孝


 はじめに

先日電車に乗ったら一般週刊誌の中吊り広告で「Web2.0」の記事があるのを見かけました。「Web2.0」が「小泉首相」や「オシム・ジャパン」と一緒に取り上げられていることにはなんとなく違和感を覚えますが、それだけWebがインフラとして身近な存在になったということでしょうか。
そんなWebですが、開発を行なう上でJavaは.Netと並び業界標準の開発言語であることはご周知のことかと思います。Javaはベンダー、プラットフォームに依存せず、パフォーマンスに優れ、オブジェクト指向言語ならではの再利用性等により生産性を向上させる優れた言語です。しかし、その反面「難しい」というイメージがついてまわるのも事実です。まず入門書を手にとると「クラスとインスタンス」の概念の話から始まり、開発ツールの設定に一苦労し、「Webコンテナ?」「EJB??」と、登場する難しいキーワードに翻弄されて・・・。結局、従来のVisual Basicのようなメーカー依存の言語のほうが開発ツールも成熟していて、操作性も生産性も高かった、と思っている開発者の方も沢山いらっしゃるのではないでしょうか。

本連載ではユーザーインターフェイス(以下、UI)をX-WebForm Developerで作成し、サーバー側のビジネスロジック(処理手続き)をOracle JDeveloper 10gで開発する手法をご紹介いたします。
リッチクライアントツールとIDE(統合開発環境)の単なる連携ではなく、

1)Javaの経験がなくても簡単に導入でき、
2)高度な操作性のウェブフォームをノンプログラミングで作成し、
3)自動生成されたJavaソースコードに対してサーバー側で効率的にコーディングを行ない、
4)便利なデバッグツールで効率的にデバッグを行ない、
5)本番環境に簡単に導入できる

といった両プロダクトが一体となり、従来にはない容易さでJ2EEアプリケーション(ベンダー依存のないWebアプリケーション)を開発することができます。
また、どちらも開発環境を無償でダウンロードして使用することができ、開発ツールにかかるコストを軽減することができます。
第一線でJavaを開発されている方や、開発部門のマネージメントをされている方には「品質と効率を高める開発手法」として、またこれからJavaを始める方(特にVisual Basicの経験者)には「専門知識を必要としないJava開発」といったテーマで、肩肘張らずお読みいただければ幸いです。

第1回目はX-WebFormの特長、Oracle JDeveloper 10gと連携させた開発の概要をご説明したいと思います。



 Webって意外に使いにくい?

「なんで単価が左寄せなんですか?数値はすべて右寄せにしてください。また、3桁ずつカンマで区切らないと見にくいですよね。あれ、単価に英字が入力できますよ?これってバグですか?」
「いやWebなので大変なのです・・・。」
「前のシステムではできていましたよ。直してもらえますよね?」
Web開発現場の1シーンですが、同じような経験をお持ちの方もいらっしゃるのではないでしょうか?

Webベースのシステムが普及し、クライアントPCに専用ソフトをインストールする必要がなくなった点は大きなメリットですが、操作性は明らかにスペックダウンした感があります。使う側はシステムを使って「業務」を行なうのであって、システムが何のアーキテクチャで構築されているかは関係ありません。先のシーンでの「数値を3桁ずつカンマで区切る」ということも業務上では「常識」です。
片や、作る側からしてみると、Webでシステムを構築する以上、HTMLの制約で実現が難しかったり、手間がかかったりするという技術的な「常識」があり、使う側の要求を無理難題と感じるのも仕方ないことでしょう。
このようにRFPにも記載されない、立場の違いから生じる常識の違いで後からトラブルになり、追加予算もとれないまま開発者が徹夜してJavaScriptでUIの動きをコーディングする、といった現状もまだまだあるようです。
もともとインターネット上で情報共有するための「単なるドキュメント」だったはずのHTMLが、インターネットの利便性を背景に受注入力や伝票入力といった業務システムのフロントで使われているということは、(少し乱暴ですが)ある意味ExcelやWordをシステムの入力フォームとして使うのと同じようなことで、当時の仕様からすると「想定外」であるため無理もないかと思います。



 X-WebFormって何?

X-WebFormは高い表現力と操作性を持つHTMLウェブフォームを、GUIで簡単に作成する「ウェブフォーム開発ツール」です。
従来のHTMLフォームの問題点を解決する、以下のような様々な特長を持ちます。

1) 表現力
X-WebFormは一般的なHTMLフォームと比較して、表現力の高い入力フォームを作成することができます。
一般的なHTMLフォームはHTMLタグで位置が決まりますが、X-WebFormは座標でフィールドの位置を指定しま すので、自由度が高い配置を行なうことができます。



ウェブフォームのバリエーションに興味がある方は以下のサイトでご参照いただけます。
参考サイト 


2) 操作性
冒頭の開発シーンでお話ししたように、標準のHTMLフォームでは操作性に様々な制約があります。
X-WebFormは、以下の図のような入力補助がプロパティ設定だけで簡単に使用でき、Visual Basicで開発するような従来型のWindowsアプリケーションに近い操作性をWeb上で実現できます。



3) ノンプラグイン
一般的にWeb入力インターフェイスの問題を解決する技術は、「リッチクライアント」と総称されています。
以前までのリッチクライアント製品は、プラグインと呼ばれる専用プログラムをブラウザに組み込む(つまりインストールして使う)「プラグインタイプ」が主流でしたが、X-WebFormは専用ソフトを必要とせず、JavaScriptなどのブラウザ標準技術だけで高い表現力、操作性を実現する「ノンプラグインタイプ」です。つまり、構造的には従来のHTMLフォームと基本的には何ら変わりがありません。


4) Ajaxを標準で装備
Ajax(Asynchronous JavaScript + XML)はGoogle Mapなどのサイトで注目を浴びたJavaScript、DHTML、XML等の技術を組み合わせてサーバーと非同期通信を行ない、動的なインターフェイスを実現する技術です。特別新しい技術というわけではないのですが、従来のHTMLページが画面を更新する際にページ全体を書き換えるのに対し、Ajaxでは画面のフィールドの一部だけを更新するなど、視覚的にも新しい感覚の表現が可能です。X-WebFormではAjaxによるRPC開発の機能を標準で備えています。実はこの技術こそJavaをVisual Basicと同等の容易さに導く鍵かもしれない、と言われることもあります。詳しくは後の章でご説明いたしますのでご期待ください。



 GUIでビジュアルにウェブフォームを作成

業務系・情報系システムの開発ではSEがお客様と打ち合わせしながら項目やデザインを作成するケースが多々あります。「綺麗な見た目」よりもヒューマンインターフェイスを意識した「使い勝手」が重要になるため、Webデザイナーに頼むよりも、ユーザーの業務的な要求仕様を理解しているSEが画面を考えたほうが良いに決まっています。ただ、SEの方の中にはプログラムは得意だけど、デザインはちょっと?と苦手意識を持っている方も多いのではないのでしょうか?一旦は作業を他の人に依頼しますが、項目の追加、削除、配置変更など、細かい指示をしているうちに、えーい、面倒なんで自分で作ってしまえ、と結局HTMLエディタなるものを開きますが、思うような位置にうまく配置できなかったりします。例えばエディタによっては<P>タグが自動で入ってしまい、「<br>を入れるにはどうすればいいの?」と人に聞くと、突然GUIの画面からHTMLの画面に切り替えてソースコードを当たり前のように書き換えだしたりします。そもそもGUI画面は大枠を作成するまでで、細かいことをやろうとすると結局、HTMLを直接なおす必要があります。自分のイメージでUIを作成して、開発チームに要件を出したいと思われているマネージャの中にも、こういったご経験をお持ちの方もいらっしゃるのではないでしょうか?実は私自身だったりしますが・・・。

X-WebFormのウェブフォームを作成するには、GUIデザインツールの「X-WebForm Developer」を使います。
X-WebForm Developerはマウス操作とプロパティ設定だけでビジュアルにウェブフォームを作成することができます。したがってHTML、JavaScriptの知識がなくてもウェブフォームを作成することが可能です。




 ユーザーと一緒にUI設計

Webベースの開発が一般的になった現在でも、最も多く用いられている開発手法は、いまだに「ウォーターフォールモデル」ではないでしょうか?基本設計→詳細設計→プログラミング→システムテスト→ユーザーテストと、上流のステップから下流のステップに成果物を受け渡しながら進めるこの手法は、管理がしやすい反面、使う側と作る側でシステムの完成イメージの共有が難しく、ユーザーへ引き渡してからの手戻りが多いということが一般的に言われています。
これに対し「使い勝手を見ながら開発を進めたい」というユーザーの要求に応えるために、従来から「プロトタイプモデル」という手法があります。要求仕様に基づき試作品(プロトタイプ)を作成し、使い勝手を確認しながら開発を進めるこの手法は、近年注目されている「スパイラルモデル」とか「アジャイル」といったアプローチにも思想が受け継がれています。「プロトタイプモデル」は使う側と作る側のギャップを埋めながらシステム開発を進めるので認識の違いが少なく、後工程での手戻りは低く抑えられるメリットがあります。反面、試作品といえどもプログラムを作成するので、開発期間中は工数を確保し続ける必要があり、通常のウォータフォール型の開発に比べ大きなコストを必要とします。
プロトタイプでユーザーが気にするのは画面の動きが大半かと思います。先の説明の通り、X-WebFormではプログラムを作成することなく、画面の見た目、動きを作成できますので、ある意味UI設計=画面動作の設計といえます。この利点を生かし、SEが自ら作成した画面でちょっとしたプロトタイプ開発ができます。 お客様に触ってもらい、「この項目をもう少し右にずらしてもらえますか?」とか「こういう計算を入れてください」といったお客様の要求を聞きながらその場で画面を微調整することも可能です。また、こだわりのあるお客様であれば、ご自分でフォームを作成して開発チームに指示するようなことも可能かと思います。
作成したフォームからドキュメントが出力できたら、もっと良さそうですね。そのあたりの機能は今後のご期待ということで。



 Oracle JDeveloper 10gって何?

さあ、フォームが簡単に作成できるので問題はすべて解決。といきたいところですが、残念ながらX-WebFormでできるのはここまでです。当然のごとく、フォームだけあってもシステムは成り立ちません。画面を遷移したり、入力データをデータベースに保存したりと、プログラミングによるビジネスロジックが必要となります。そこで登場するのがOracle JDeveloper 10gです。
Oracle JDevelper 10gはIDE(統合開発環境)と呼ばれる開発ツールで、Javaソースコードのコーディング機能はもちろん、Javaの実行環境、デバッガ、データベースユーティリティ、本番環境への導入ツールなどなど、J2EE(Java2 Enterprise Edition)開発に必要なツールを備えた、オールインワンタイプの開発環境です。
X-WebFormで作成したウェブフォームに対するプログラムの作成を効率よく行なうことができます。



Oracle JDeveloper 10gには以下のような特長があります(説明上、少々専門用語が混じりますが、わかる範囲でお読みいただければと思います)。

1) 簡単な導入
Oracle JDeveloper 10gの導入は簡単です。インストール(といってもzipを展開する作業が大半ですが)した後、最初の起動時にJ2SEのインストールディレクトリを指定する以外は、ほぼ何もの設定もすることなく動作させることが可能なので、初心者の方でも十分インストール可能です。


2) サーバーサイドJavaの実行環境を標準で装備
JavaでWebアプリケーションを構築するにはサーブレットやJSPといった技術を使います。Webサーバー上でこれらを動作させるには「Webコンテナ」と呼ばれるエンジンが必要です。IDEの多くはWebコンテナを別途インストールし、連携設定してから使いますが、設定にはある程度の専門知識を必要としますので、初心者には敷居が高い面があります。Oracle JDeveloper 10gはOracle Application Server 10gのWebコンテナである「OC4J」を標準で装備しており、特別な設定をせずにJ2EEアプリケーションの実行環境を手にすることができます。


3) 強力なデバッガ
Javaに限ったことではありませんが、Webアプリケーションは意外にデバッグが大変です。これはページベースで処理を行なうWebの構造上、仕方ないことですが、IDEを使用するとVisual Basicのようにソースコードの特定箇所で実行を止めながらデバッグ(いわゆるステップ実行)することが可能となります。特にOracle JDeveloper 10gはサーブレットだけでなく、JSP(JavaServer Pages)もステップ実行できますと、Eclipseを使っていた技術者がえらく感動していました。


4) 充実したデータベース開発環境
Webアプリケーション開発においてデータベース開発は不可欠です。Javaでデータベースにアクセスする際には、一般的にJDBC(Java Database Connectivity)という技術を使いますが、これを使えるようにするには設定ファイルを手で修正したりと、これまた結構厄介です。Oracle JDeveloper 10gではデータベースへの接続がウィザードで設定することができますので、マイクロソフト社のODBCのように簡単に設定することができます。また、SQLをデバッグするツールも標準で装備しています。


5) 豊富なユーティリティ
上記でご紹介したもの以外にも、様々な操作がビジュアルで行なえることが特長です。JSF(JavaServer Faces)やStrutsを使ってビジュアルに画面遷移を設定したり、Oracle Application Server 10g等の本番環境にウィザードで導入したりといった、充実したインターフェイスが利用できます。



 シームレスな連携

X-WebForm DeveloperとOracle JDeveloper 10gはそれぞれが最小限の知識で操作できる、容易さを持ち合わせていることはご説明してまいりましたが、連携することでさらに効率性が高まります。
Oracle JDeveloper 10gのアプリケーション(開発プロジェクトの単位とお考えください)からX-WebForm Developerを起動すると、作成したウェブフォームに関連したソースコードを所定ディレクトリに自動的に保存します。このソースコードに対し、Oracle JDeveloper 10g上でコーディング、デバッグをすぐ行なうことが可能となります。




 UIとビジネスロジックをスマートに分離

X-WebForm DeveloperからOracle JDeveloper 10gに保存されるソースコードは、大きく分けて2種類あります。ひとつはウェブフォームを表示するためのJSP、もうひとつはJSPにロジックを入れるためのJavaクラスのソースコードスケルトンです。詳しくは後の章でご説明いたしますが、前者はデザインが変更になるたびに自動的に書き換えられますので、Oracle JDeveloper 10g上では一切触りません。後者は初回のみ作成され以降は自動で置き換えられることはありませんので、デザインが変更になりもう一度ロジックを入れ直し、などということは起こりません。少なくともページへロジックを入れなければならないWebアプリケーション開発において、デザインとロジックの分離は永遠のテーマといえるものですが、X-WebForm DeveloperとOracle JDeveloper 10gの開発においては、両者の役割分担が明確なため、スマートに分離した管理が行なえます。




以上、X-WebFormとOracle JDeveloper 10gの概要についてご説明しました。

第2回、3回は実際にX-WebForm Developerによるウェブフォーム作成方法についてご説明いたします。
今回は概要の説明が中心のため文章が多くなってしまいましたが、次回からは具体的な図を交えつつ操作方法をご説明したいと思います。