|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
普及進む無償のフレームワーク「Struts」
一方,日本IBMが2002年10月にStrutsの機能を追加,拡張するソフト「Extension for Struts」を無償提供するなど,Strutsに対応したフレームワーク製品,Strutsを使ったシステム構築を提供するベンダーも増えており,JavaによるWebアプリケーション開発における一種の“デファクト標準”となりつつある。 画面遷移の処理を肩代わり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)
連載新着記事一覧へ >>
|