オープン・ソースのJ2EE(Java2 Platform Enterprise Edition)対応フレームワークであるStrutsを利用するシステムが増えている。パソナテックが2002年3月に再構築した「人材派遣/人材紹介管理システム」は,Strutsを利用したウルシステムズのフレームワーク「UMLaut」を使用している。ネットワールドが2002年5月にカットオーバーしたプロジェクト原価管理システムに採用したほか,清水建設やムラウチもStrutsを利用したシステムを構築中だ。Strutsを拡張するツールやフレームワーク,業務パッケージも多数登場している(詳しくは日経オープンシステム12月号「普及進むオープン・ソースのフレームワーク『Struts』」を参照)。Strutsの開発者であり,オープン・ソースのServletコンテナTomcatの主要な開発者でもあるSun Microsystems J2EE Webレイヤー・アーキテクトのCraig R.McClanahan氏に,Strutsを開発した経緯や今後の構想を聞いた。(聞き手は,高橋 信頼=日経オープンシステム)

Craig
R.McClanahan氏

---Strutsを開発した経緯は。

 Servlet,JavaServer Pagesなどサーバー・サイドJavaは多様な技術により構成され,複雑なため,どのように構成すべきか分かりにくい。そのため,フレームワークが必要だと感じていた。

 また,私はSun Microsystemsに来る前に様々な仕事をしていたが,ヨーロッパで複数の言語を扱うシステムを開発しなければならないという事態に直面した。その際に,簡単なフレームワークを作成した。それがStrutsの原型になっている。

 実際にStrutsを開発したのは,休暇中だった。ビーチでノート・パソコンを使い,3日間で開発したものがStrutsの基本部分だ(笑)。そして2000年5月に,オープン・ソース・ソフトウエアを開発するプロジェクトであるApache Software FoundationへStrutsを寄贈した。それ以後,多くの開発者がStrutsの開発に貢献してくれている。

 正式版であるバージョン1.0は,2001年6月にリリースされ,多くのユーザーに使ってもらっている。実際のシステムへの適用が早かったのはヨーロッパで,すでに金融業で使われている事例もある。携帯電話会社VoiceStreamは,ECでStrutsを使っている。ほかにも,Strutsのホームぺージに,採用したサイトへのリンク集が掲載されているので見てもらいたい。

---今後の開発の方向について教えてほしい。

 現在,Strutsの最新バージョンは1.1のベータ版だ。1.0が備えているMVC (Model-View-Controller)モデル・ベースの画面遷移管理機能やHTMLタグ・ライブラリ機能などに加え,1.1では,入力データの条件をXMLで指定し検査する「Validator」や,アプリケーション起動時や終了処理を簡単に記述できるようにする「PlugIn」などの機能を実装した。1.1の正式版のリリース時期? 私のバグ・フィックスの速度次第だ(笑)。

 1.1以降の機能強化は,まだプロジェクトで議論していないので,私の個人的なアイデアの段階だが,マルチ・ぺージ・ダイアログ・ウィザード,マスター/ディテール形式データへの対応,XML処理機能,Action Scriptingといった機能を考えている。

 マルチ・ページ・ダイアログ・ウィザードとは,Strutsでアプリケーションを作成する際に,ウィザードの質問に答え,ダイアログに必要なデータを入力していくと,プログラムのひな型などを生成する機能だ。ゼロからプログラムを記述しなくても済むようにする。

 マスター/ディテール形式データとは,注文番号と,その明細書のような,項目とその詳細といった関係にあるデータだ。このようなデータ形式はビジネス・アプリケーションなどによくあるが,それぞれの関係を維持するアプリケーションを作ろうとすると煩雑になる。このようなデータを簡単に扱えるような機能を加えたい。

 XML処理機能は,Webサービスへの関心が高まっていることに対応するものだ。WWWブラウザに対してはHTML,Webサービスに対してはXMLで,同様にデータを扱えるようにする。

 Action Scriptingは,現在は直接呼び出せないEJB(Enterprise JavaBeans)のビジネス・ロジックを,直接呼び出せるようにしようというものだ。XMLべースのフォーマットのスクリプトで,JSPの標準タグ・ライブラリに似た形で,EJBを呼び出せるようにしようと思っている。

 ユーザー認証機能をStrutsに持たせることは考えていない。認証機能はServletコンテナ側のものを使用すべきだと考えている。Strutsのメーリング・リストでも議論があったが,SecurityFilterというモジュールを組み込もうと書かれているはずだ。

---StrutsがJ2EEの標準のフレームワークになる可能性は。

 標準のフレームワークが必要かどうかの議論は進行中だ。Strutsがそのモデルとなる可能性は考えられるが,どれか一つのフレームワークだけがベストということはない。ベストなアイデアをいろんなところから取り込むべきだと思う。

---あなたが中心になって標準化を行っているJava Server Faces(JSF)は,Webアプリケーションをどう変えるのか。

 JSFは,Webアプリケーションのユーザー・インタフェースを使いやすく,構築を容易にする技術と仕様だ。

 例えば,ファイルのディレクトリ構造などを表すツリー構造のインタフェースがある。現在でも,WWWアプリケーションでこのようなツリーを作ることはできるが,開発には時間がかかる。JSFでは,このようなツリーを広げたり,閉じたりというリクエスト・イベントを標準化し,Servletや開発ツールで容易に扱えるようにする。表計算ソフトのようなインタフェースを作れるデータ・グリッドも扱う。また,入力データのチェック,つまり,このフィールドは日付でなくてはいけない,金額なのでゼロ以上でなければいけない,といったチェックの機構もある。

 そして,このようなユーザー・インタフェースの開発と,サーバー側アプリケーションの開発を容易に分離できるようにする。例えば,ユーザーに複数の候補から1つ選ばせるときに,リスト・ボックスを使うのか,ラジオ・ボタンを使うのか,ページのデザイナが指定できる。サーバー・アプリケーション開発者は知らなくていい。

 チェック・ボックスがチェックされているかといった,ぺージの状態を保存する機構もある。Sessionにリクエストの一部として,ページの状態を保存する。

 JSFのゴールは,Webアプリケーションの,非常に有効な開発ツールを作り出すことだ。もちろん,主要なJava開発ツールのベンダーと協力して開発を進めている。そう,MicrosoftのVisual Studioに見劣りしないJava開発ツールを実現できるようにする。

 JSFは,現在,Javaの標準化プロセスであるJava Community Processの下で標準化が進められている。公式には何とも言えないが,2003年くらいにリファレンス・インプリメンテーション(標準実装)とツール・キットをリリースしたい。当然,StrutsもJSFに対応していく。

---日本のユーザーに伝えたいことは。

 日本の開発者のフレンドシップとホスピタリティに感謝したい。特に,Jakarta Projectのドキュメントなどをボランティアで日本語に翻訳してくれているJa-Jakarta Projectに感謝している。このきずなが,今後さらに深まっていくことを祈っている。