フレームワークにStrutsを採用するインテグレータが増えている。Strutsはシンプルで習得しやすいが,業務システムには足りない機能もある。現場ではユーザー認証やDBアクセス,2重送信の禁止などの機能を追加して使用している。これらの機能を持つ無償ソフトウエアも実際に使われている。

表1●オープンソースのWebアプリケーション・フレームワーク採用事例
図1●MVCアーキテクチャ
MVCはプログラム本体であるModel,表示であるView,全体を制御するControllerが役割を分担し,連携するアーキテクチャ。StrutsではControllerであるActionサーブレットが,Webブラウザからのリクエストを,ModelであるActionクラスへ振り分ける。処理結果を表示するためにViewとなるJSPをWebブラウザにレスポンスとして返す。Actionクラスは,Strutsの用意するクラスを継承して,行わせたい処理を記述し作成する
 オープンソースのWebアプリケーション・フレームワークが,デファクト・スタンダードとして定着してきている。Jakarta Project*1が開発,配布しているStrutsである。

 野村総合研究所が運営するアグリゲーション・サービス,日興コーディアル証券の外為倶楽部,ムラウチのECサイトmurauchi.comなど,すでに多くのミッション・クリティカルなシステムで使用されている(表1[拡大表示])。

 大手インテグレータが標準的なフレームワークとして使用している例も多い。日立ソフトウェアエンジニアリングでは独自に開発していたフレームワークAssam anyWarpをStrutsベースにした。NTTデータでも,同社で開発していたTERASOLUNAをStrutsベースに移行した。

シンプルで習得しやすく,技術者が多い

 Strutsの特徴は,シンプルで習得しやすいことだ。加えてオープンソース・ソフトウエアとして無償公開されているため,Strutsに触れる機会や情報が多く「技術者の確保が容易」(日立ソフトウェアエンジニアリング ンターネットビジネス部部長 紀平篤志氏)であることが普及の原動力になっている。オープンソースであるため,構築した企業でなくても,システムを保守したり拡張したりすることも可能だ。

 ただし,Strutsはシンプルであるがゆえに,業務システム向けには不足する機能も多い。システム構築の現場では,それらの機能を補うことでStrutsを大規模基幹システムに適用している。

 また,オープンソースのWebアプリケーション・フレームワークはStrutsだけではない。Strutsにない特徴を持ったフレームワークがいくつも開発されている。例えば,Strutsより歴史の古いTurbineは,DBにアクセスするためのO-Rマッピング・ツールTorqueやHTMLテンプレート・エンジンのVelocityなどを生んでおり,これらはTurbineと独立に利用できる。すでに日本でも野村総合研究所などによる利用事例が出てきている(表1参照)。

MVCアーキテクチャで柔軟性を向上

 まずStrutsの仕組みと構造について整理しておこう。StrutsはMVCアーキテクチャと呼ばれる構造をとる(図1[拡大表示])。MVCはStrutsに限らず,多くのフレームワークで基本構造として採用されているアーキテクチャである。プログラム本体であるModel,表示であるView,全体を制御するControllerが役割を分担し,連携する。

 StrutsではControllerであるActionサーブレットが,Webブラウザからのリクエストを,ModelであるActionクラスへ振り分ける。Actionクラスを実行後,処理結果を表示するためにViewとなるJSP*2をWebブラウザにレスポンスとして返す。どのようなリクエストをどのActionクラスに振り分けるかは設定ファイルで記述するため,柔軟に変更できる。

 Actionクラスは,Strutsが用意しているひな型となるクラスを継承して,行わせたい動作を記述し作成する。

 図1には示していないが,StrutsにはWebブラウザから送られた入力データを格納するためのActionFormBeanクラスがある。Actionクラスと同様にStrutsのひな型を継承して作成する。設定ファイルに入力データの型や範囲などの条件を記述するだけでデータをチェックできるValidatorと呼ぶ機能もある。

 そのほか,StrutsはJSPを簡単に記述できるようにするためのカスタム・タグと呼ばれるライブラリを提供している。

(高橋 信頼=IT Pro)