オープンソースTERASOLUNAで作るWebアプリ(1)
Strutsの諸問題を解決するWebフレームワークとは?
株式会社NTTデータ 技術開発本部 ソフトウェア工学推進センタ
師 芳卓
2008/10/6
| 今回の主な内容 ・いま、そこにあるStrutsの諸問題 ・TERASOLUNAフレームワークって何をしてくれるの? ・【1】分業化を促進するアーキテクチャ ・【2】不要になったセッション管理 ・【3】DB接続/トランザクションが簡単に ・“実績”があり、日々“進化”してきたフレームワーク |
本連載では、4回にわたってWebフレームワークの1つとしてオープンソース化された「TERASOLUNA Server Framework for Java」(以下、TERASOLUNAフレームワーク)を紹介します。
TERASOLUNAフレームワークが、いかにしてWebアプリケーションに特有のセッション管理や認証処理、トランザクション管理などの煩雑な処理を簡素化し、業務開発者が業務処理の実装に集中できる仕組みを提供しているかについて説明します。
編集部注:「TERASOLUNA Server Framework for Java」を含むTERASOLUNA全体について詳しく知りたい読者は、特集「Java、.NET、Ajax開発の“銀の弾丸”オープンソース?」をご覧ください。
いま、そこにあるStrutsの諸問題
Strutsは、オープンソースのWebフレームワークとしてApache Software Foundationにより開発され、公開から8年が経つ2008年現在でも、Webシステムの標準的フレームワークとして使われ続けています。
| 図1 StrutsのTOPページ |
しかしStrutsは、Webブラウザを介したアプリケーション開発に必要な基本的な機能を備えているものの、「モジュールの独立性」「プログラムの可読性」「テスト容易性」といったところになると、各プロジェクトの業務開発者の技量に任されるところが多くなります。
■ “アクション”を実装する危険性
例えば、オンライン系のシステム開発に不慣れな業務開発者がプレゼンテーション層の煩雑な処理に苦戦する姿をしばしば見掛けることがあります。
Strutsのみを使用したWebアプリケーションの場合、StrutsのActionクラスの継承クラスにてリクエストやセッションの変数(属性値)の入出力処理を実装し、業務ロジックの呼び出しを行うのが一般的です。
しかし、システム開発において、“アクション”を業務開発者が直接実装することには、開発者間での意識の違いによる手戻りやシステムダウンのリスクなどを発生させる要因にもなり得ます。
■ 複雑なセッション管理
またStrutsを使った開発では、セッションへの変数(属性値)の登録、削除処理を業務開発者が直接コーディングする場合、非常に厳密に削除処理を実装する必要があります。
変数を複数リクエスト間で保持しておくためには、「セッション」と呼ばれる複数リクエストにまたがる通信を開始し、セッション用としてサーバ側に確保したメモリ空間に変数を格納しなければなりません。しかし、セッションに保存された変数は、基本的にはログアウト、もしくはタイムアウトでセッションが切れるまで残り続けます。そのため、「消す処理を記述する」という業務開発者にとって負担の大きい作業が発生する問題があります。
セッションに保存された変数の消し忘れが生じたときは、メモリ領域が圧迫されます。最悪の場合「OutOfMemoryErrorによりシステムがダウンする」といった事態を引き起こすことになります。
| 図2 プロジェクトでの業務開発者の作業(Strutsのみの場合) |
■ 変数管理も開発者の大きな負担の1つ
また、業務処理で使用する変数(属性値)の管理も開発者の大きな負担の1つです。検索結果の一覧表示、情報の入力、登録処理となると、使用する変数の個数が数十になることは珍しいことではありません。
その際に業務開発者は、「どのオブジェクト(アクションフォーム、リクエスト、セッション……)からどのフィールドの値を取得し、処理した結果をどのオブジェクトのどのフィールドに反映しなくてはならないのか」を逐一整理しつつ、処理を記述しなければなりません。そして、その情報は複数リクエスト間で整合性が取れてなければなりません。
そのため、一業務の連続する画面遷移についてリクエスト処理を分業化するためには、変数の管理情報を業務開発者間で共有する必要があり、開発の効率性を妨げる1つの要因となっています。
| リスト1 Strutsのみを用いたアプリケーションでのActionクラスの実装例 | |
|
- 【1】属性のキーは別アクションと一致させる必要がある
- 【2】セッション管理を業務プログラマーが行うため削除漏れ、キー設定ミスなどが生じやすい
- 【3】業務処理の呼び出しを業務プログラマーが書く必要がある
また、変数名などの仕様変更のたびに、各業務処理に記述されたキーとなる文字列を修正する作業が発生するため、「仕様変更への柔軟性も低い」といえます。
■ アクションと業務ロジックの高い依存性
“アクション”継承クラスでの業務ロジックの呼び出し処理の記述も、業務開発者の大きな負担となっています。業務ロジックはPOJO(Plain Old Java Object)であるため、メソッド形式は業務開発者が自由に決めることができます。
その一方で、呼び出し側ではメソッドに合わせて、必要な入力オブジェクトを生成し、返却された出力オブジェクトの値をセッションなどに反映させる処理を記述しなければなりません。このような呼び出し前後の処理は、機械的な作業である割に量が多く業務開発者に余計な負担を増やしています。
■ 業務開発者は本質的な処理に集中したい!
そもそも、業務開発者は、「ユーザーからの登録情報を基にDB更新のクエリを発行する」「ユーザーから送られた検索条件データを基にDBに検索クエリを投げ、結果を返却する」などの本質的な処理に集中するべきなのに、なぜ、リクエスト間の変数の管理やトランザクション処理などの本質的でない処理を書かなければならないのでしょうか?
次ページ以降で紹介するTERASOLUNAフレームワークは、これらの煩雑な処理を一手に引き受けるための仕組みを、さまざまなフレームワークとの連携と、独自の仕様拡張によって実現しています。
| Index | ||||||||
|
||||||||
オープンソースTERASOLUNAで作るWebアプリ バックナンバー 連載インデックスへ»
- 第1回 Strutsの諸問題を解決するWebフレームワークとは?
- 第2回 Hello World!で理解する、Webアプリ開発の分業化
| Java Solution全記事一覧 |
- StrutsのXML地獄から開発者を解放するSAStruts (2008/11/27)
設定ファイル地獄はStruts開発の大きな問題点。SASturtsならStrutsの機能はそのままで問題だけを解消できます - 大“仮想”!! 開発環境の劇的ビフォーアフター (2008/11/18)
仮想化なんてプログラマには関係ないと思っていませんか? 実は開発環境を仮想化すると、開発が劇的にラクになります - あなたの知らないJDKの便利ツールたち (2008/11/13)
最近のJDKに含まれている開発やデバッグに便利なツールを、プロファイリングや情報取得、監視、配備、スクリプティングの5種類に分けて紹介 - Hello World!で理解する、Webアプリ開発の分業化 (2008/11/11)
フレームワークの各クラスや設定ファイルの内容、動作原理、多人数でのWebアプリ開発の分業化について解説します
|
|
- Androidのオープン性でガラパゴスから脱出しよう
- Apacheセキュリティチェック、PCI DSSの場合
- システム統合になぜ業務分析が必要なのか?
- jQuery IntelliSenseがVisual Studio 2008に
- ラブの多重度は1対1で成立するか?
- シトリックスの描く仮想化管理戦略
- 「わんくま同盟」に行ってきた
- 「IT業界は悪い」で終わらせてはいけない
- 複数のファイル名を右クリックから一括変換する
- App Store登録もOK! JavaScriptで作るiPhoneアプリ
- 新アクセステクノロジ「ADO.NET Entity Framework」
- GMや日産が苦心したVTCの原理とは
スポンサーからのお知らせ
- - PR -
お勧め求人情報
**先週の人気講座ランキング**
〜Ruby編〜
| ◆ | New! 「スーパープログラマ」になるための資質 〜エンジニア・キャリア進化論(第13回)〜 |
| ◆ | New! 「あなたが何を食べているかで、あなたが 何者かが分かる」マーケティングとは? |
| ◆ | New! 開発環境にも、「使いやすい」―― さくらの専用サーバプランが新しくなった |
| ◆ | New! 「“監視ツール”だけで安心ですか?」 高可用性を追求した“クラスタ構築”とは |
| ◆ | New! 24H稼働のオンライントレードを支える エンジニアフレンドリー仕様のDB複製 |
| ◆ | New! コストをかけずに迅速復旧!! 事業継続性を高める為の“3つの要素”? |
| ◆ | New! @IT編集部主催「データベース勉強会」 3人のプロが語ったカイゼン術とは? |
| ◆ | New! 世界中で1万件の導入実績!我々の使命は 「日本のSOAをキックオフする」こと! |
| ◆ | 「仮想化環境」を1カ月単位でレンタル!? 初期コストを大幅に下げるサービスとは? |
| ◆ | ビジネスは、小さく生んで大きく育てたい そんな願いを叶えてくれるサーバって? |
| ◆ | 「週末だけリソースが増やせればなぁ…」 が実現するクラウドホスティング |
| ◆ | プレゼン力UPからセキュアな情報共有まで “デキる”企業の『ソフトウェア選択術』 |
| ◆ | SaaS、クラウドコンピューティング時代 必要となるITインフラの要件とは!? |
| ◆ | 導入事例を通してSDKの実績を検証しよう これがワザあり開発ツールの“技”だ!! |
| ◆ | 世界200カ国以上で情報収集 最新インシ デントを網羅 他に無い「統合ログ管理」 |
| ◆ | 宅急便のように、データも運んで、守る。 クロネコヤマト流「事業継続」を解説する |
| ◆ | 【劇的】1357台のサーバが231台に! 仮想化+ストレージの最新技術で効率性UP |
| ◆ | 従来の職種が、SOAによって大きく変わる! SOA時代、新たに生まれる“6つの職種”とは? |
| ◆ | いよいよ“普及期”へ 「Hyper-V」が仮想化の3つの課題を解決! |