多くのインテグレータが使用

表2●Strutsをフレームワークに利用している企業の例
図2●Strutsの足りない機能を補う
Strutsはシンプルであるため比較的習得が容易だが,業務システムで使用するためには不足する機能や注意点がある。活用企業はこのような機能を追加している

 多くのインテグレータは,JavaによるWebアプリケーション・フレームワークを自社で開発してきた。しかし,前述したように多くの企業が,自社のフレームワークにStrutsを取り込んでいる(表2[拡大表示])。

 NTTデータでは「特にユーザーから指定がなければStrutsを使用する」(NTTデータ ビジネス開発事業本部 システム方式技術ビジネスユニット 第一システム方式技術担当 荒井岳彦氏)。2003年4月にStrutsベースに移行して以来,すでに17件のシステムを手がけているという。「大規模なものでは,画面数が百数十におよぶものもある」(荒井氏)。Webのほか,Javaによるリッチ・クライアントのシステムも開発中だ。NTTデータ社内向けの会計系システムで,サーバーとクライアントはXMLでデータをやりとりする。

 日立ソフトウェアエンジニアリングでは「2002年の4月以来,新機能追加の対象はStruts版になっており,独自版に対してはバグの修正だけを行っている」(紀平氏)。

 CSKでは2002年からStrutsベースのarvicio Frameworkを使用している。

 野村総合研究所はオブジェクトワークスと呼ぶ高機能な自社製フレームワークを開発,販売しているが,アグリゲーション・システムの開発にあたってはStrutsを使用した。通常のWeb業務システムではオブジェクトワークスが標準だが,定型的なWebシステムの枠にとどまらない開発についてはStrutsを使用するという使い分けだ。

 NECシステムテクノロジーは2004年2月,同社製フレームワークのOpenMeisterEnterpriseをStrutsに対応させ,自動生成機能をStruts向けアプリケーションでも利用できるようにした。

 富士通は,同社製フレームワークのInterstage Application Framework Suiteで,Struts上のアプリケーションを取り込んで変更,拡張できるようにしている。

業務システムには付加機能の補足が必須

 Strutsを基幹業務システムに適用するために足りない機能を図2[拡大表示]に示した。

 まず,Strutsそれ自体はユーザー認証機能を持っていない。ほとんどのインテグレータは,DBMSのユーザー情報と連動させた認証機能を追加している。

 「戻る」ボタンの機能や,送信ボタンの2度押しなどによる2重送信の禁止,2重の画面遷移の禁止なども重要だ。Strutsでは,トークンと呼ぶデータをページに埋め込むことで,こういった画面遷移の乱れを検出する機能を備えている。しかし,検出した後,どのように対処するかの処理は作り込む必要がある。

 また,設定ファイル作成ツールを用意している企業も多い。Strutsの設定ファイルはXMLで記述する。「規模の大きなシステムの場合,人手で設定ファイルを記述するのはほぼ不可能」(日立ソフトの紀平氏)。日立ソフトは独自フレームワークの時代からGUIツールを自社で開発しており,それをStruts向けに適用している。

 WebSphere StudioやScioworks Camino,オープンソースのStruts Builderといったサードパーティによるツールも提供されているので,これらを使用する方法もある。

 また,業務ロジックはActionクラスに直接記述せずに,別のクラスに切り出すという開発規約を設けている企業が多い。「Actionクラスはスレッド・セーフではない」(NTTデータの荒井氏)ため,別のユーザーのデータを上書きしてしまったり,見えてしまったりするためにデータの誤りや個人情報漏えいが発生する危険がある。

 DBアクセス・クラスを用意しているインテグレータも多い。DBアクセスは,接続の切断を怠ったりするとメモリー・リークによる性能低下やハングアップの原因になる。DBアクセスの手順をラッピングすることでミスを防ぐことが欠かせない。また,データベースの構造から,基本的なDBアクセス・プログラムを,SQL文も含めて自動生成する機能を開発している企業も多い。

 DBアクセス・プログラムの自動生成機能を持つオープンソース・ソフトウエアも出てきている。JBoss Organization*3が開発しているHibernateや,Jakarta Projectが開発しているTorqueなどだ。

 そのほか,野村総研では「メンテナンス中」画面を表示する機能を作成している。指定したActionクラスへのリクエストを,メンテナンス中で利用できないことをわびる画面へ転送することで,稼動中のプログラム保守を容易にするためだ。野村総研はこれらの機能をオープンソース・ソフトウエア「T-Struts」(仮称)として無償公開しており,誰でもダウンロードして使用できる*4

(高橋 信頼=IT Pro)