• 締切済み

Strutsなどのフレームワークが必要な開発って

JAVAを勉強している者です。 これまでJSPやサーブレットを使って、ある程度のシステムが作れる程にはなったのですが、フレームワークの事が気になっています。 少し「Struts」の勉強をしてみましたが、使いづらさと、表示画面への 柔軟性の無さなど、良い面が見つかりませんでした。 また、HTMLベースのソースコードも、フレームワーク独自の形があっ たり、TomcatなどJAVA側のバージョンアップで不具合が生じる可能性 なども、耳にしました。 ●そこで思ったのは、フレームワークを使う状況というのは、次の様な 時なのではと思っています。 ・エンジニアのレベルが、時間さえあれば、一人でJSPやサーブレット  を使ってシステムを作り上げる人と、「if」文や「for」文などの  本当の基礎しか知らない人が混在した開発環境の時。 ・開発プロジェクトで、開発人数が多く(十数人など)大規模なシステ  ムで、柔軟性や工期短縮よりエンジニアの管理をする必要がある時。 ●逆にこんな時には必要がないと考えています。 ・携わる開発者が、一人でサイトを作れるレベルであり10人以内程に  よる規模のシステム作成時。 ・表示画面用のファイルと、他のプログラムファイルを分ける事 (MVC)を意識しすぎる事より、システム変更への柔軟性や、工期が  早くなる事が分かった時。 ・エンジニアのやりがいを引き出す為。 ※個人的には、入力画面はともかく、出力結果などをMVCにこだわると  あまり良い作成が出来ない気がしています。  また、出力画面と処理用プログラムのファイルを分けた場合には、  ソースの確認や編集が行いづらくなります。  ただ、フレームワークを使わない時は、事前にエンジニアどうしで、  一定の関数を使う事を基本条件にすると便利かもしれませんね。 (例えば、~本に載っている関数を使用する等)  もし決まった関数以外で他の関数を使う時は、他のメンバーの了解  を得る等のルールがあると良いかもしれません。  (Eclipse関係の入門書とプラスαの関数で大抵の事は出来るのではと思っていますが...)  多分こうした方が、フレームワークを使うより、エンジニアのやりが  いも向上するし、結果的には効率も上がりそうな気がしています。  また、上記のフレームワーク条件も、完全にそのようにしなければ  ならないのではなく、状況や必要に応じて判断することが大切なの  ではと思っています。  もし、他にフレームワークのメリット・デメリットがありましたら  教えていただけましたらと思っています。

  • Java
  • 回答数2
  • ありがとう数5

みんなの回答

  • kztk
  • ベストアンサー率53% (59/110)
回答No.2

こんにちは。 フレームワーク(枠組)という言葉通り、よい意味でも悪い意味でも「型にはめる」のが、フレームワークによる開発だと思っています。  共通処理をフレームワークが吸収することにより、初心者が犯しやすいミスからシステムを守ることができ、プログラム毎の品質のバラつきを抑えることが出来ます。 「共通部品」のような考え方でもこれは可能ですが、共通部品はユーザープログラムから呼ばれる物なので、共通部品を使わずにコーディングされてしまうとアウトです。フレームワークではユーザープログラムがフレームワークから呼ばれるので、より安全です。 反面、熟練したエンジニアならばもっと効率的なコードを作成できるような場合には、フレームワークは足枷になると思います。 上記以外に、私は保守性の高さをメリットの一つに挙げたいと思います。 ここでいう保守性は「MVCを分離した方が保守性が高い」というような観点ではなく、(例えば)Strutsというフレームワークが世に広く普及しているという単なる事実による、保守性の向上です。 プロジェクト独自のフレームワークを採用している場合、新規要員を保守にアサインするに当たり、そのフレームワークの導入教育が必要となります。Strutsのようなメジャーなフレームワークを採用していれば、このような教育の手間をある程度削減することが出来ます。また要員の確保も「自社フレームワークでの開発経験がある開発者」よりも「Strutsベースの開発経験がある開発者」の方が容易です。 従って、下記の2つのケースについては私は一概には賛成できません。 開発後の保守も含めてトータルで考えるべきだと思います。 >・携わる開発者が、一人でサイトを作れるレベルであり10人以内程に > よる規模のシステム作成時。 > >・表示画面用のファイルと、他のプログラムファイルを分ける事 >(MVC)を意識しすぎる事より、システム変更への柔軟性や、工期が > 早くなる事が分かった時。 なお、下記については目的と手段が入れ替わってしまっているため、理由とすべきではないと思います。趣味の開発ならばよいですが。 >・エンジニアのやりがいを引き出す為。 下記のご意見については全面的に賛成です。 >また、上記のフレームワーク条件も、完全にそのようにしなければ >ならないのではなく、状況や必要に応じて判断することが大切なの >ではと思っています。

jsg100
質問者

お礼

お返事ありがとうございます。 フレームワークを利用するかの判断は、開発内容や状況をよく考えて 行っていく必要がありますね。

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.1

Strutsは基本FWです。 普通は、そのプロジェクトに合わせて、 ログ出力やDB接続などの 色々なライブラリを組み込んだり、 トランザクション管理用の共通関数やベースクラス を作成して使用します。 また、LookupDispatchActionクラスなど、 MVCでのM(モデル)を構築するのを簡便化するクラス も用意されています。 .net開発のように コンポーネント指向でなおかつ、 DB接続などが用意されていても、 WEBアプリを作成する場合、 トランザクションの管理は欠かせません。 StrutsやTarbineのような オブジェクト指向型FWは、 プロジェクトのルールを制約化するような 共通関数や基本クラスなどを作る基礎工事を行うため、 プロジェクトの方向性から外れたものを作るのは困難となるため、 工数がある程度読めますが、 自由度が少ないため、難易度の高いPGが出てくると、 その工数が跳ね上がります。 他方、VBやDelphi、.net、ClickFW(Java)などの コンポーネント指向型FWは 個々のコンポーネントにある程度業務要件を満たすような 機能を持たせるため、 大量の本数および、工数が発生することでしょう。 メリットデメリットは仕方ありませんが、 アプリケーション開発において いかに工期の短縮、簡便化を図るかということは至上命題です。 そこに能力を費やすことが重要なのだと思います。

jsg100
質問者

お礼

お返事ありがとうございます。 開発案件で、ワークフローを使うべきかどうかの見極めは、難しいようですね。 私の知っていたワークフローを使った開発で、顧客との最初の提示より 遥かに長い工期になり、数年経っても完了しない状態が続いていました。 きっと、そのワークフロー内では解決が難しくなり、工数が跳ね上がっ たのかもしれませんね・・・ 開発においては、ワークフローを使うべきかどうかや、使うとしても何 処まで使うべきかなどを、開発内容や開発環境をよく考慮して行う必要 がありますね。

jsg100
質問者

補足

すいません・・・ お返事へのお礼の内容なのですが、「ワークフロー」の部分は、「フレ ームワーク」で置き換えて読んでください。 なんだか寝ぼけて書いてますね。 お恥ずかしいです。

関連するQ&A

  • フレームワークの必要性

    JSP/サーブレット/JavaBeansを利用すればMVCの役割は果たしているような気がします。 Strutsのようなフレームワークが存在するのはなぜでしょうか?

    • ベストアンサー
    • Java
  • どんなフレームワークが良いでしょうか?

    どんなフレームワークが良いでしょうか? Java言語を用いた画面が4つぐらいのWebシステムを作成しようとしています。 下記の環境はほぼ決まっています。 OS:Windows XP 言語:Java 1.6 APサーバ:Tomcat 6.0 開発ツール:eclipse 3.4 DB:HiRDB 8 サーブレットとJSPについてはある程度知識がありますが、 フレームワークについてはほとんど知識がありません。 (Struts1のシステム開発を少しだけ手伝ったことがあるぐらいです。) データベースアクセスについてもプログラム内にSQL文を自分で記述する 初歩的なやり方でしか経験がありません。 出来ればフレームワーク初心者でも仕組みがわかりやすいフレームワークで 作成しようと考えています。 フレームワークの組み合わせによってはXMLだらけになって 管理が大変だという記述も見ました。 フレームワークを知らない自分がいろいろ試すより、 これまで皆さんが用いた様々なフレームワークについてご意見を頂きたいです。

    • ベストアンサー
    • Java
  • Web開発の業務内容

    Web開発に興味があるものです。 Web開発というとサーブレットとJSPがあるという事で、Javaの勉強の後 サーブレットとJSPについての初心者本を数冊見てみたのですが、内容が かなり重複していました。 実際Web開発の業務内容も本に載っているような事が主で、そんなに広範囲ではないのですか? ちなみにStrutsなどのフレームワークを用いたWeb開発は除きます。 また、実はこのフレームワークがキモだったりするのですか? ご教授願います。

  • フレームワーク、特にMVCがよくわかりません。

    転職先で、とりあえずソース見ておいてと言われたのですが、 どうもZend Frameworkを使っているようで、今まで経験ないこともあり見てもよく理解できません。 フレームワークについては検索すれば解説してるページなどが出てきて、 便利なんだなぁと抽象的には分かるのですが、ソースを見ると?って感じになってしまいます。 今まで、1画面=1ファイル、関数ライブラリ、クラスファイルという形でやってきていたので、ソースを見てもピンとこないのです。 ちなみに、オブジェクト指向についてはわかります。 ただ、フレームワーク特有のMVCの理解がうまくできません。 それから、フレームワークを使っている場合、実行環境だけでなく、 開発環境でもそれ用のツールが必要だったりしないのでしょうか? テキストエディタで書いてるよって言われたので更に?って感じになってます。 良い解説サイトがあったら教えて下さい。

    • ベストアンサー
    • PHP
  • phpフレームワークの選択

    プログラムのことはわからない素人です。会員制サイトの作成を開発者に依頼する場合、phpフレームワークを利用する、べた書きなどいろんな方法があるようなのですが、速さ、セキュリティ、安定性に加え、そこそこ大きな規模になることを希望している場合は以下のどれがよいのか迷っています。 Cakephp, Yii などのオープンソースフレームワーク Corephp と oop、mvc などによる開発者独自のフレームワーク Corephp のみ 1、 オープンソースは、開発者独自のフレームワークより、公開されている分セキュリティー面が不安な場合もあるのでしょうか。 2、開発者独自のフレームワークの場合、素人にとってはどのくらいスキルがあるのか判断できない点が不安なのですが、開発者にどのようなことを確認すればよいでしょうか。 3、世界的に有名なサイトなどは、やはりオープンソースフレームワークなどではなく、サイトにあわせた独自のフレームワークを利用していることがほとんどなのでしょうか。 その他にもアドバイスなどありましたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • .net framework用のソフトウェア開発

    .今後ソフトウェア開発をするにあたって、net frameworkの実行環境で動くソフトを作る事をmicrosoftは推奨してると思いますが、.net framework用のソフトは.net frameworkがなくては動かなく、今後ウィンドウズには.net frameworkが標準搭載されるそうですが、他のosはわからず.net framework用のソフトウェアは流行るのでしょうか? またjavaで開発したソフトウェアもjvmがなくては動作せず、今後ソフトウェア開発でjavaを使うのは流行るのでしょうか?フリーソフトではjavaで作られてフリーソフトは少ないですよね。

  • PHPフレームワーク環境でのSmartyの必要性

    PHP でシステムを開発する際ですが、恐らく何かしらのフレームワークを利用した場合は大半だと思います。そう言った時にテンプレートエンジンの Smarty を合わせて利用するかどうか意見が別れる時があります。 PHP でフレームワークが今ほど使われていなかった大昔は、素の PHP 実装 + Smarty で、ロジックとテンプレートを分離する流れがありました。 しかし、現在利用されるほとんどのフレームワークでは当たり前のように MVC の思想で構成されており、ロジックとテンプレートは初めから分離されています。 そう言った状況の中、Smarty を各フレームワークと連携してテンプレートエンジンとして利用する必要がどれほどあるのか、判断に苦しみます。 皆さんはどう考えるでしょうか?

    • 締切済み
    • PHP
  • Web開発について

    Web開発のプログラマー目指しているものです。 質問ですが、Web開発の納期は他の開発より短いと聞きました。 それはなぜですか?? また、サーブレットとJSPを現在勉強中です。色々と書籍を見ていますが どれも同じような事項ばかりです。 実務でも要求定義の範囲はあまり変わらないのでしょうか?(基本的な事) 教えて下さい。

    • ベストアンサー
    • Java
  • PHPのフレームワークについて

    くだらない質問かも知れませんがどうかお付き合いください。 宜しくお願いします。 10年前にPHPでプログラムを書いた事があり、急遽PHPで開発をしなくてはいけなくなりました。 そこでフレームワーク(CakePHP等)を使用した方がいいのかを調査していますが・・・ お恥ずかしい話なんですがよくわかりませんでした。 私が作成していた時はインクルードファイル(変数や関数等)を作成して、それをPHPファイル内で呼びだしてプログラムを作成していました。 今回、フレームワークをネットで閲覧しても「簡単にできる」みたいな記事を目にしたりします。 ちょっといじってみましたが難しいというか、面倒くさい感じがしました。 わたしだけでしょうか。 些細な事でも何でも構いませんのでアドバイスいただけませんでしょうか。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Linuxでの開発について

    よく転職サイトでシステムエンジニアとかの募集でLinuxでの開発があることとありますが、実際はどういうことを指すのでしょうか? プログラマとしてJava(サーブレットやサーバサイド開発込み)やTeratermは使用したことがありますが、それとは別ものとはわかってても、じゃあ何?と聞かれると答えられません。 Linux環境での開発、これだと解る説明をください。

専門家に質問してみよう