はじめに
Web Tools Platform(WTP)プロジェクトは、Eclipse 3.2と共にリリースされた新しいCallistoプロダクトスイートの非常に興味深いコンポーネントの1つです。WTPはEclipseの分野で活躍している多くのユーザーの貢献と参加をベースとして、J2EE Webアプリケーションの開発を支援する包括的なツールスイートを提供し、より簡単で生産性の高い開発作業を実現します。
WTPは、J2EE Standard Tools(JST)とWeb Standard Tools(WST)の2つのサブプロジェクトから構成されています。
JSTプロジェクトは、各種のJ2EEファイルに対応する機能豊富なテキストエディタやグラフィカルエディタ、さらにはデータベースアクセスツール、Webサービス開発向けウィザードなど、J2EE開発の生産性の向上を目的とする豊富なツールセットを提供します。WSTプロジェクトは、Eclipse内からアプリケーションを各種Webサーバー上で実行するための統合的なサポートを提供し、使用するアプリケーションサーバーに関係なく統一された方法でJ2EEアプリケーションの実行およびテストが可能です。
WTPには、J2EEアプリケーションプロジェクト向けの幅広い新しいプロジェクトテンプレートも用意されています。例えば、Dynamic Web Projectは、Java Web Archive(WAR)アプリケーションの作成、テスト、デバッグに役立ち、Enterprise Application Projectは、Enterprise Archive(EAR)アプリケーションの構築を目的としています。
本稿では、WTPの主要機能を紹介し、WTPがJ2EEアプリケーションの開発にどのように役立つかを説明します。
WTPのインストール
EclipseにWTPをインストールする方法はいくつかあります。一番簡単なのは「Remote Update」サイトを使う方法でしょう。この場合は、Eclipse内で[Remote Update]ウィンドウを開き([Help]-[Software Updates]-[Find and Install])、[Callisto Discovery Site]を選択します。Callistoプラグインの全リストが表示されるので、[Web and J2EE development]を選択します(図1)。また、その従属プラグインの[Enabling Features]、[Graphical Editors and Frameworks]、および[Models and Model Development]も選択する必要があります。また、時間的に余裕がある場合はすべて選択します。他のプラグインも必ず役立ちます。
もう1つは、Eclipse Foundation Memberのいずれかから、バンドル済みのインストーラをダウンロードする方法です。例えば、IBMのインストーラにはWTP付きのEclipse 3.2がバンドルされています。この方法は、Eclipse 3.2をまだインストールしていない場合や、既存の構成とプラグインを廃棄しても構わない場合に有効です。
WTPをインストールしたら、IDEを再起動して新しい機能を見てみましょう。
Javaファイル以外のファイルの編集
最近まで、標準バージョンのEclipseには、Javaファイル以外のファイルを編集する高度な機能がありませんでした。しかし、Webアプリケーション開発者であればお分かりのように、Java Webアプリケーションには、HTML、JSP/JSTL、XML、JavaScript、CSSなど、Javaファイル以外のファイルもたくさん使われています。確かにこれらのファイル形式に対応しているエディタがサードパーティ製プラグインとして提供されており、中には素晴らしいものもありますが、これは最新のIDEならばデフォルトで用意されていなければならない部類の機能です。WTPの登場により、ようやくこれらの非常に貴重な機能とEclipseとの統合が実現されました。
WTPには、HTML、JSP、JSTL、XML、DTD、XML Schema、XSL、WSDL、JavaScript、CSSなど、Java Webアプリケーションプロジェクトで使われる主要なすべての種類のファイルに対応する最高級のエディタが用意されています。Eclipse 3.2と一緒に提供されるWTP 1.5は、JSF JSPファイルの初期サポートも備えています(将来のバージョンで完全サポートが予定されています)。現行バージョンでのJSFのサポートは、JSTLタグで使われているような、構文チェックとコード入力支援に限定されています。
各エディタでは、構文のカラー表示とコード入力支援の機能に加えて、文書構造を[Outline]ビューに便利なツリー形式で表示することもできます(図2)。HTML、JSP、JSTL、JSF、その他のXML系エディタなど、これらのエディタの大半は、ファイルがうまく構成されていなかったり、不正だったりした場合に警告/エラーを発行します。こうした機能はすべて、これらの種類のファイルを作成するときの生産性とユーザー経験の向上に貢献しています。
図2 WTPエディタによるJSP/JSTLファイルの編集
また、JavaScript、CSSなどのクライアントサイドのHTMLファイルにも対応しています(図3)。これらのエディタでは、構文のカラー表示と便利な構造表示を利用できますが、エラー検出機能とコード入力支援機能はいくらか制限されています。
図3 WTPエディタによるCSSスタイルシートの編集
XMLの処理
XMLを扱う必要のないJ2EE開発者はまずいません。これまでは、構文のカラー表示機能と文書の検証機能を実行するにはXML-Buddyなどのプラグインが必要でした。
この状況を改善するため、WTPプロジェクトには、XMLおよびXML関連の文書を扱える包括的なエディタセットが用意されました。標準のXMLエディタでは、XML文書を便利な三区画のビューで表示ができます(図4)。
XMLソースコードは中央のパネルに表示され、そこで編集します。このパネルでは、必要不可欠な構文のカラー表示がサポートされ、文書のフォームが適正か(XML構文が適正か)、および有効か(文書の構造がXMLスキーマまたはDLDに従っているか)をチェックすることもできます。
[Outline]ビューには、文書の構造がツリービュー形式で表示されます。画面の下部の[Properties]パネルには、選択したXML要素の属性が一覧され、編集できます。この機能は、Springの構成ファイルやHibernateのマッピングなど、複雑なXML文書内の要素の有効な属性をすべて覚えていない場合に便利です。
WTPはXMLスキーマ文書にも対応し、XMLスキーマをテキスト形式およびグラフィック形式で表示し、編集することもできます(図5)。
[Properties]ビューでは、要素の種類とカーディナリティを一目で確認し、変更できます。また、例によって[Outline]ビューでは、文書構造の概要を把握できます。新しいスキーマを効果的に作成するためにはXSDの知識が必要となることに変わりはないものの、WTPのグラフィックエディタでは、この種のファイルを簡単に効率よく処理できます。
Webサービスの処理
最近のソフトウェア開発では、SOAアーキテクチャの人気がますます高まっています。Webサービスは、SOAアーキテクチャを実装するための幅広く採用されている標準ベースのアプローチとして、標準のXMLベースのプロトコルを使った異機種システム間のやり取りを効果的に実現します。
WTPパッケージには、Apache Axis Webサービスライブラリに基づいて、Webサービスを処理するための非常に便利なツールが用意されています。これらのツールはWebサービスとWebサービスクライアントの両方に対応しています。
Webサービスの概念の中心に位置するのがWSDL(Web Services Description Language)です。これは、Webサービスによって提供されるサービスを厳密に記述するXML文書です。WTPには、WTP XMLエディタをベースとする、WSDL用の強力なグラフィックエディタが用意されています(図6)。前述のように、WSDLの知識が不要になるわけではありませんが、WSDLファイルの作成、編集、表示の作業は楽になります。
Webサービスクライアントの生成は簡単です。必要なのはサービスを定義するWSDLファイルだけです。新規のWebサービスクライアントを作成し([File]-[New]-[Other]-[Web Services]-[Web Service Client])、対応するWSDLファイルを提供します。
WSDLは、ローカルファイルとしてプロジェクト内で定義および管理することも、組織内または他の場所のWebサイト上で、一括管理して公開することもできます。Webサービスを呼び出すために必要なJavaクラス(サービスエンドポイントインターフェイス、サービスロケータクラス、サービスバインディングスタブなど)はすべてEclipseによって自動的に作成されます。
このアプローチは、商用サービスなど、非常に安定したWebサービスを処理する場合に有効です。Webサービスを内部で、クライアントと同じプロジェクトの一部として開発している場合は、ビルドプロセスの一部にWebサービスクライアントの生成を含めるなど、もっとダイナミックなアプローチが必要かもしれません。
WTPは、ユーザー独自のWebサービスの作成、デプロイ、テストもサポートしています。Webサービスを作成するための2つのアプローチとしては一般に、ボトムアップアプローチとトップダウンアプローチが知られています。
ボトムアップアプローチでは、最初にビジネスロジックを実装するJavaクラスを作成し、Eclipseによって自動的にWSDLファイル、および関連するクラスを生成し、このビジネスロジックをWebサービスとして公開します。トップダウンアプローチでは、最初にWebサービスを(WSDLファイル、および対応するSMLスキーマの形式で)定義し、対応するJavaビジネスクラススケルトンを生成します。
どちらのアプローチに対しても、WTPはWebサービスの開発作業を簡便化する強力な機能を提供します。Eclipseを通して、Webサーバーの起動、サーバーへのWebサービスのデプロイとテスト、およびWebサービスとそのクライアントの間でやり取りされるSOAPメッセージのモニタを実行できます。
Webサービスを短期間で開発して実行するには、ボトムアップアプローチを使うのが一番簡単です。[Web Service]ダイアログ([File]-[New]-[Other]-[Web Services]-[Web Service])を開き、ボトムアップアプローチを選択します(図7)。次に、公開するビジネスクラスを指定します。公開するメソッドの指定が求められ、Eclipseによって対応するWSDLファイルが自動的に生成されます。必要に応じて、指定したローカルアプリケーションサーバーを起動し、そのサーバーにWebサービスをデプロイすることもできます。
一方、トップダウンアプローチでWebサービスを作成する場合の最初のステップは、WSDLファイルを指定することです。[Web Service]ダイアログ([File]-[New]-[Other]-[Web Services]-[Web Service])を開き、WSDLファイルの場所を指定します。クライアントと同様、WSDLファイルは、ローカルファイルでもリモートサーバー上のファイルでも構いません。
次に、Eclipseによって実装スケルトンクラスと、その他の複数の下位クラスが自動的に生成されます。実装クラスには、提供する必要がある空のビジネスメソッドが含まれます。それ以外の基本的な詳細はすべて、その他の生成されたクラスに既にコーディングされているので、ユーザーはビジネスロジックの作成に専念できます。
このアプローチは、外部で定義されているWSDLを使う場合に適しています。WSDLファイルをローカルに残しておけば、使っている正確なデータ構造を適切に制御することもでき、それにより、例えば、.NETのWebサービスクライアントを処理する場合の微妙な相互運用性問題を回避できます。このアプローチの欠点は、WSDLファイルの理解、作成、維持にかかわる時間が増えることです。
Webサーバーの構成
J2EEアプリケーションを(またはその一部だけでも)作成し終えると、実際のサーバーでどのように実行するかを確認したい気持ちになります。
WTPは、数多くのオープンソースのアプリケーションサーバー、および市販のアプリケーションサーバーをデフォルトでサポートするように作られています。現時点では、Jakarta Tomcatサーブレットコンテナから、JBoss、JOnAS、Geronimoなどの本格的なオープンソースのJ2EEアプリケーションサーバーや、BEA WebLogic、IBM WebSphereなどの市販のアプリケーションサーバーまで、15のアプリケーションサーバーをサポートしています。
新規のサーバー定義を追加するには、Eclipseの[Preferences]画面で[Server]-[Installed Runtimes]と選択して表示されるウィンドウを使います(図8)。ここで、JREと、アプリケーションサーバーのインストールディレクトリを指定します(必要に応じて、アプリケーションサーバーごとに異なるJREを使うことができます)。
サーバーを構成し終えると、そのサーバーをプロジェクトプロパティでプロジェクトのデフォルトサーバーとして設定するか、Eclipse内からアプリケーションを実行するときに明示的に選択することができます。
Webアプリケーションのテストとデバッグ
サーバーを正しく構成し終えたら、[Run As]-[Run on Server]と選択して、Eclipse内からアプリケーションを直接実行できます。Eclipseによってアプリケーションサーバーが起動され、アプリケーションがデプロイされて、EclipseのコンソールとEclipse IDE内のアプリケーションWebページにログメッセージが表示されます。
また、[Debug As]-[Debug on Server]と選択して、Webアプリケーションを非常に簡単にデバッグすることもできます。この場合、アプリケーションはデバッグパースペクティブで実行されます。このパースペクティブでは、通常のクラスと同じように、JSPページにブレークポイントが挿入され、変数のチェックが行われて、ページ生成プロセスに進みます。
おわりに:Eclipseで行うWeb開発
WTPツールセットは、EclipseがWeb開発の分野に踏み出した大きな一歩です。
WTP以前にも、さまざまなサードパーティ製プラグインがそれぞれに多彩な機能を提供していましたが、品質や信頼性のレベルにばらつきがありました。しかし、WTPプロジェクトによって、これらの機能が、一貫性があり、信頼性が高く、適切に統合された1つのグループにまとめられ、標準のEclipseシステムで簡単に利用できるようになりました。
公平に言えば、Exadel Studio Pro、BEA Workshop、MyEclipseなど、他にもEclipse向けの同様のプロダクトはあります。実際、これらのプロダクトは、WTPをベースに作成されたものであり、WTPの機能に加えて、JSPの高度なサポートや、その他のオープンソースプロジェクト(Spring、Hibernateなど)のサポートを提供しています。
いずれにせよ、EclipseでJava Webアプリケーションを開発するときには、WTPの機能を理解すればかなりのメリットがあります。ぜひ試してみてください。