オープン・ソースのフレームワーク「Struts」を採用するユーザー企業やベンダーが増えている。今後,Struts対応のフレームワーク製品,開発ツールなどが増えていくことが予想され,JavaのWebアプリケーションを構築する上で有効な選択肢となりつつある。Strutsの概要を押さえておきたい。

表1●Strutsを利用しているユーザー/ベンダーの例
 JavaサーブレットとJSP(JavaServer Pages)を使ったオープン・ソースのWebアプリケーション開発用フレームワーク「Struts」を利用するユーザー企業やベンダーが増えている。例えば,ムラウチは家電を販売するECサイトをStrutsでリニューアルして2003年1月に稼働開始する予定のほか,清水建設もStrutsを利用して建物・工事(海外),保全などのデータベース・システムを構築中である(表1[拡大表示])。「欧米では金融業で採用されている例もある」(Strutsのオリジナル開発者であるCraig R.McClanahan氏)。またシステム・インテグレータへの依頼でも「最近では顧客からStrutsで構築してくれと指定されることも多い」(テンアートニ Web Solution本部 プロジェクト推進グループ ソフトウェア・エンジニア 浅井秀一氏)という。

 一方,日本IBMが2002年10月にStrutsの機能を追加,拡張するソフト「Extension for Struts」を無償提供するなど,Strutsに対応したフレームワーク製品,Strutsを使ったシステム構築を提供するベンダーも増えており,JavaによるWebアプリケーション開発における一種の“デファクト標準”となりつつある。

画面遷移の処理を肩代わり

図1●Strutsを利用したWebアプリケーションの処理の流れ
MVC(Model-View-Controller)モデルをベースとする。ActionServletという制御用サーブレット(Controller)が用意されており,開発者はView(表示画面)とModel(ビジネス・ロジック)の開発に専念できる。表示画面とビジネス・ロジックのマッピング(画面遷移)情報は,定義ファイルとして分離されているので,途中で画面遷移に変更があったような場合も対応しやすい

 Strutsは,Javaを中心とした開発支援ツールやフレームワーク,ユーティリティなどを開発,無償提供しているJakartaプロジェクトが公開しているWebアプリケーション開発用のフレームワークである。同プロジェクトのサイトにあるhttp://jakarta.apache.org/struts/からダウンロードできる。

 StrutsはMVC(Model-View-Controller)モデルと呼ぶデザイン・パターンに基づいており,アーキテクチャは図1[拡大表示]のようになっている。MVCモデルとは,ビジネス・ロジック(Model)と表示画面(View)を分離し,どの画面でどのビジネス・ロジックを呼び出すかをControllerで制御するアプリケーションの開発デザインのことである。StrutsにはActionServletと呼ぶ制御用サーブレットがあらかじめ用意されており,それを利用すれば画面遷移の処理を開発する手間が省ける。

 さらに,Viewの開発にはStrutsが提供するタグ・ライブラリを利用できる。JSPの中に直接Javaのコードを記述したり,複雑なHTMLなどを記述したりしなくて済む。Modelも,入力データを格納,検証するBeanとビジネス・ロジックを実行するBeanを用意するだけである。それぞれ,ActionForm,ActionというStrutsが提供するクラスを継承して開発する。

 こうして開発したViewとModelのマッピング(画面遷移)情報はXMLの定義ファイルとして分離し,ActionServletが読み込む仕組みになっている。そのため,例えば画面1と画面2の間に追加の画面を挿入しなければならなくなったような場合もこの定義ファイルを修正するだけで対応できる。

フレームワーク,ツールの対応が進む

 Strutsが提供するControllerの機能や定義ファイルによるマッピング情報の分離などは,Webアプリケーションを作成する際に毎回必要となる基本的なもの。Javaを利用する多くのユーザー企業やベンダーでは,既に自社のフレームワークで同様な機能を実装していることが多い。そのノウハウを,オープン・ソースとして無償で利用できる点がStrutsの最大のメリットだ。

 ベンダーのStruts対応も進んでいることを考えると,今後は汎用性という面でも期待できそうだ。ウルシステムズや日立ソフトウェアエンジニアリングのように自社のフレームワークをStrutsに対応させるベンダーが出てきたほか,Javaの統合開発環境(IDE)でもStrutsに対応する動きが見られる。

 例えば米Borland Softwareが提供するJBuilderの次期バージョンでは,StrutsベースのWebアプリケーションを開発するためのウイザードや支援ツールを提供する予定だ。

 市販のフレームワーク製品は数多く提供されているが,機能や仕組みを理解するのに時間がかかるだけでなく,ツールや利用環境が制限されることも多い。Strutsに対応したフレームワーク製品やツールが今後増えてくれば,Strutsを知っているだけでフレームワークの習得が早くなる,ツールや利用環境を自由に選べる,といった汎用性のメリットを享受できるようになる。

 こうした動きが加速されれば,今後StrutsがWebアプリケーション開発におけるデファクト標準のような位置付けになりそうだ。

 ただし,StrutsだけでWebアプリケーションがすぐに構築できるわけではない。Strutsが提供するのは画面遷移の処理が中心である。市販のフレームワークに比べると機能はかなり少ない。データベース・アクセスを含むロジック部分をはじめ,認証,メール,帳票,ワークフローなどの機能は自分で開発する必要がある。入力チェックやダブル・クリック対策機能なども不足しているが,この点に関しては今後の機能拡張に期待したい。

 またオープン・ソースであるために,何か問題が発生した場合に技術力が要求される点も,普及へのハードルとして懸念する声が多い。

(榊原 康=sakakiba@nikkeibp.co.jp)