• 締切済み

Struts2を使うプロジェクトの適正規模は?

画面数が30で、テーブル数は15のシステムをつくることになりました。 struts2を使おうと思ったのですが、struts2の仕様を調べるのに時間がかかり 結局スクラッチ開発が一番効率的ように思えてきました。 struts2が有効なのは100テーブル以上あるような大規模システムですか?

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

> JAVAを知っているけどSTRUTS2を知らないという人は結構多いのでは? その通りですね。 > どんな技術を使うにせよ勉強は必要です。 その通りですね。 > しかしSTRUTSもSEASAR2も何もかもを知っていることを前提に > 効率を語るのはいささか乱暴すぎるのではないでしょうか? え゛・・・・。これはまた意外な方向からボールが返ってきました。 よく分からんならまずは知る事が大事ですよ、で、それはStruts2に限った話じゃないですよね、という意図の回答をしたつもりでした。(あと、ついでに、Struts2は非常に強力なフレームワークであるという事も。) 知っている事を前提に効率の話云々という話がでましたが、それ以前にそもそもそのフレームワークをプラットフォームの一部として選定する時点で(そのフレームワークを)知っている事が前提条件というのが私の回答の主旨(の一部)であり、そうでなければ、今回Struts2をどういう基準で採用したのか、開発効率が上がるかどうかも分からないのに採用したのか、という事を逆にお聞きしたい次第です。 私も開発の現場でプラットフォームを選定する立場の人間ですが、有り体に言うとご指摘の通り私はそんな立場の人間は「何もかもを知っていなけりゃならない」と思っています。業務で使った事はない技術を勉強していなければなりません。アンテナを張り続けていなければなりません。いつ使う事になるか分からないからです。特にフレームワークの採用を検討する場面は多いため、その時になって知りませんではプラットフォーム選定者の仕事が出来ていないと言われても仕方がないと思っています。そこを乱暴だと言われてしまえばそれでおしまいなのですが・・・・。 まぁ、これだけだと単なる議論であるため、少しはQAに沿ったお話を。2点あります。 1点目。フレームワーク採用のメリットは単純に画面数だけでは決まらない事は回答1で述べている通りです。ファイルアップロード(input type="file"タグ)のハンドリング、入力チェック機構(Validation、エラーメッセージ、エラー時の項目強調表示、XSS対策のためのHTMLエンコードなど入力値サニタイジング)、画面項目←→サーブレット間のデータのやりとり(inputタグとBeanの自動マッピングなど)、これらを全部自前で用意する事を考えるともはやフレームワークの採用は必然と言うべきかもしれません。なので、たとえ5画面でも、30画面でも、スクラッチでこれらをすべて制御する部品を開発するその時間、その労力をフレームワークの勉強に充てるのはよい考えだと私は思います。 2点目。今回で言えばStruts2、それ以外にもSpring Framework、Seasar2、Flex、Zope、RoR、groovy、PHP、ASP.NET(C#、VB.NET)など、本当に勉強しておくべき技術は数えるほどしかありません。せいぜい10やそこらでしょう。これらを学ぶ手間を惜しまない姿勢が、ソフトウェアエンジニアとして最も重要な資質なのではないかと。また、フレームワークに学べる点はフレームワークそのものにあらず。クラス階層、デザインパターン。Javaコアパッケージ(java.*)、Java拡張パッケージ(javax.*)も然り。それらがどういう理念で設計されているかを学ぶと必ずどこかで生きてきますよ。

noname#155524
noname#155524
回答No.2

>JAVAを知っているけどSTRUTS2を知らないという人は結構多いのでは? >どんな技術を使うにせよ勉強は必要です。 全くその通りです。 ただ、あるFWを利用して開発を進める場合、特定の中心人物がそのFWについて精通しているはずです。 FWを使うということは、開発者全員がそのFWについて精通している必要はないからです。 もし、そういった人物が存在しないでFWを利用した開発するにはFWの恩恵を受けることは少ないです。 もう少し突っ込むと、そういった経験を後続の開発に生かすことができると言えます。 スクラッチで開発してその場では上手く収まったとして、そこで開発をしたものを次の企画で生かすことは難しいでしょう。 また、FWには多くの人と時間がかかって開発されているため、一般的なセキュリティ対策もされているます。 今、抱えている開発に時間的、予算的な猶予があるのならそれを掛けてでもFWの習得に努めたほうが、結果的に将来の開発期間や予算の短縮に繋がると言えると思います。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 規模はあんまり関係ないでしょうね。  仮に、あなたが今からCOBOLで画面数が30、テーブル数が15であるホストのシステムを作れと言われたらどうでしょう。COBOLとは何ぞやを調べるのに時間がかかり結局Javaでの開発が一番効率的なように思えませんか。  では、Spring MVCを使って画面数30の・・・・、Seasar2のS2Daoを使ってテーブル数15の・・・・。Intra-mart 7.2を使って画面数30の・・・・。どうですか。  何が言いたいかと言うと、今あなたが質問内容のように思うのは、あなたがJavaは知っているけどStruts2は知らないからとしか言えない、ちゅう事です。  仮にあなたがJavaに対するそれと同じくらいStruts2に対して造詣が深ければどうでしょう。今問題となっている「struts2の仕様を調べる時間」は不要ですよね。ここがあるからスクラッチの方が早いのであって、これが無ければ画面数30なんてStrtus2ならあっと言う間ですよね。  「仮に」が一つの文章の中に3つもあって恐縮ですが、仮にあなたがServlet+JSPについて、Struts2についてそれぞれ同じだけの理解度であるのならば、画面数が5を超えるなら圧倒的にStruts2の方が早いでしょう。少なくともServlet+JSPでスクラッチよりかは。  ところでStruts2はあくまでMVCをつかさどる仕組みのため、データアクセスについては別途考える必要があります。  私は今画面とサーブレットのデータ渡しにStruts2 2.2.3、(DBはPostgreSQL 8.4で)、トランザクション制御にSeasar2(S2Tx)、データアクセスにSeasar2(S2Dao)、ログ出力にslf4j+Logbackを用いた独自のフレームワークを構築中ですが、若い子の言葉で言えばチョー快適ですよ。私が書いた部分なんてせいぜい独自にUserTransactionを制御するルーチンと設定ファイルくらいです。  と、Struts2を使いこなすのは難しいことではありません。せいぜい(strtus2における)interceptorとは何か、constantタグor strtus.propertiesで設定できるものは何か、Actionがリクエスト内容を受け取るにはどうするか(ただのGetter/Setter)、ActionがHttpSessionを受け取るにはどうするか(SessionAware)、くらいでしょうか知っておく必要があるのは。後JSPを使うならstrutsタグの使い方くらい。

dfogkjapreg1657
質問者

お礼

> 何が言いたいかと言うと、今あなたが質問内容のように思うのは、 >あなたがJavaは知っているけどStruts2は知らないからとしか言えない、ちゅう事です。 JAVAを知っているけどSTRUTS2を知らないという人は結構多いのでは? どんな技術を使うにせよ勉強は必要です。 しかしSTRUTSもSEASAR2も何もかもを知っていることを前提に 効率を語るのはいささか乱暴すぎるのではないでしょうか?

関連するQ&A