• ベストアンサー

ストラッツ(Struts)って本当にいいの?

こんにちは、私はJSP、サーブレット、JavaBeans の仕様は理解しているのですが、最近Strutsも見てみようと思い、挑戦してみました。使ってみて感じたこととしては。 1.こういう作り方をしているとシステムがどのような仕組みで動いているか深いレベルで理解できないのではないか?(サーブレットの作成はコンテナーが自動で行うみたいだし) 2.コンテナーが自動で様々なファイルをで作成してくれるのは業務効率アップにはなるだろうけれど、 その分プログラマーは、機械によって自動で書かれたコードは理解しずらいだろうし保守にはよい影響をあたえないのだろうか? 3.JSPのカスタムタグをたくさん覚えないといけない 4.なぜ意味もなくフォームにクライアントからリクエストがあるたびに一度データを格納してアクションで使っているのか 5.アクションはなぜ必要なのか。実際コントローラーなのだからサーブレットでもよいのではないか? など悪い点ばかりに気がつき、いい点がうまく理解できませんでした。これらの疑問について業務経験のあるかた解答をあたえていただけないでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 なにを疑問に思ってらっしゃるのか、俺には痛いほどよく分かります(笑) 1.こういう作り方をしていると...  そのとおりです。  でも実際のところ、『WEB開発』という仕事はITバブル期に一気に一般普及したものであるため、『理解できる人達だけの職人芸』であってはならないのです。  初心者プログラマーでも、ある程度のものが作れなければいけません。  サーブレットは少々固定観念の凝り固まりが強い傾向にはありますが、『職人以外には手も出せない』ようなシステムよりはマシなのです。 2.コンテナーが自動で様々なファイルを...  サーブレットは保守自体も仕事を横割りする前提になっています。  自動生成されたコードを読むのは、『それができる』人の仕事で、一般の管理者はそこまで厳密な保守をする必要はないというわけです。 3.JSPのカスタムタグをたくさん覚えないといけない  最近のプログラム言語は覚えなきゃいけないAPIの数なんかも膨大です。  それに比べれば少ない方だし、カスタムタグの多さは拡張性の高さに繋がるもので、ある程度やむをえないところはあります。 4.なぜ意味もなくフォームにクライアントからリクエストがあるたびに...  これも開発作業を横割りにするためです。  より深いフレームワークレベルのプログラムは上級プログラマーが組み、業務ロジックは一般プログラマーが作ることで、効率化を目指しているのです。 5.アクションはなぜ必要なのか。実際コントローラーなのだからサーブレットでもよいのではないか?  これも4.と同じですね。  1人の上級プログラマーに過負荷をかけるより、1人の上級者と複数の初心者とで仕事を分担した方が効率が良いからです。  とまぁ、ここまでツラツラ書きましたが、実際のところこの回答ではあなたの不満は解消しないと俺は確信しています。  なぜなら、サーブレットは『経営者ウケするように作られたシステム』だからです。  市販のシステムパッケージというのは2種類あって、1つは『本当に現場のことを思って作られたもの』、そしてもう1つは『経営者ウケを狙って、現場の意見を無視して作られたもの』です。  実際のところ、システムパッケージに対してお金を払うのは、コンピューターの素人であることが多い『経営者』で、現実的には後者のシステムの方がよく売れるんです。  ようするに、『IT経済というものは現場で回ってるんじゃなく、会議室で回ってる』わけですね(^_^;  それが現実です。

alovelybird
質問者

補足

みなさんすばらしい回答ありがとうございました。どの回答も非常に充実しており、みなさんにポイントをあげたいのですが、それはできないみたいなのでthe moonさん DQさん大変申し訳ありません。また機会がありましたら優先的にポイントを割り振らせていただこうと思います

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.4

あなたが言っているのは、結局は「車輪の再発明」と同じことです。 深く理解できるから、JSPのカスタムタグのような複雑な機構は不要だから、リクエストパラメータをいちいちJavaBeanに押し込めなくてもよいから、サーブレットで何でもできるから、だから全部コーディングするのですか? それではプロジェクトは成り立ちません。 Strutsのようなフレームワークは、毎回書かずにすむような部分を提供しているに過ぎません。中にはJSPのように、処理上は迂遠で重いだけのようなコードも含まれますが、それでもStrutsを選ぶのは、無駄な開発コストをかけないためです。 あなたはもしかしたら、Strutsよりシンプルな構造をベースにしたWebシステムを組めるかもしれません。 では次は?また0から組みますか?再利用するでしょう? その再利用する部分は、結局Strutsと同じか、似たような機能の集合体になりませんか? ならなぜ、既にあるStrutsを使わないのでしょうか? Struts登場以前は、各社から似たようなフレームワークが乱立していたのです。オープンソースでシンプル、かつ容易にカスタマイズ可能なStrutsが登場したことで、それらは結局駆逐されました。 駆逐されなくても、結局どこのプロジェクトでも、何かしらのフレームワークは使っていたでしょう。誰も、車輪(フレームワーク)を再発明(0から作り直し)したいとは思っていないからです。

すると、全ての回答が全文表示されます。
noname#18558
noname#18558
回答No.3

参考書にあるような単純な画面をつくるだけならStrutsのメリットは生かせないでしょう。 ですが、実際の業務では何百という画面を作ります。 そのためにいちいちサーブレットを作っては手間がかかりますし、質問者様のように開発者がみんなサーブレットを理解してるとも限りません。 また、サニタイジングの問題もあります。 Strutsのタグは、多少なりともそこを吸収して、開発者の作業を軽減してくれています。 また、カスタムタグはJSPでスクリプティングを書くことを少なくしてくれます。 できればStrutsのコードを読んで見てください。 実際に使っていても気づかないようなことをしてくれています。 それを毎回開発する手間を考えると、かなりの効率アップになるんじゃないでしょうか。

すると、全ての回答が全文表示されます。
  • the_moon
  • ベストアンサー率40% (9/22)
回答No.2

その疑問点はもっともですので、その気づいた点を考慮に入れたフレームワークを作成してみてください。 例えばどのような形のがよいのでしょうか? PHPは自由度がありすぎるので、JAVAの方がいいとか、その逆でJAVAでは敷居が高すぎるとか、いろいろ言われてそれぞれもっともなのです。 例えば、 1は、深いレベルで理解しなくても済むとも言えるのです。昔の人はアセンブラを知らずしてプログラムは語れないといいました。確かにそうでしょう。その後はCを知らずして、その後はJAVA、その後は…。 でも今のシステムをCで構築していたら膨大な時間がかかってしまいます。 逆に小さいものを作るならフレームワークは不要です。(当たり前ですが) 1つ経験者として言えるのが、struts(他のフレームワークでもいいです)というみんなと共通の約束事があると開発はスムーズに進みます。 でもその代わりルールも増えてしまうのです。 要は個々ではなく、全体としてとらえてみてください。

すると、全ての回答が全文表示されます。

関連するQ&A