• 締切済み

PHPフレームワークを使う意味

PHPでフレームワークを使う意味ってあるのでしょうか? 私的にはメリットよりデメリットのほうが多いと思っています そもそもPHPは便利な関数が元々充実していますし、WEB上に多くの情報が存在します フレームワーク固有の関数を探してくるより PHPで実現するソースコードを探してくる方が速いと思うのですが 最近では珍しくないと思いますが デザイナーもプログラムの知識を持っているチームの場合は MVCに作業分担するメリットも感じられません フレームワークをかませることで 不具合発生時の原因の特定も複雑になります PHPでフレームワークを使う意味について 皆様の意見をお聞かせ下さい メリット ・MVCに作業を分担できる ・機能が用意されている場合は作業の簡略化が期待できる デメリット ・フレームワークに脆弱性が見つかった場合に対応が必要 ・フレームワーク自体にバグが含まれている場合がある ・不具合が起きた場合に原因の特定が難しくなる ・ノンフレームワークに比べて速度は遅くなる(Phalcon等、例外は除く) ・ノンフレームワークに比べて柔軟性はなくなる(Phalcon等、例外は除く)

  • PHP
  • 回答数8
  • ありがとう数9

みんなの回答

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.8

フレームワークを使う使わないの2択に限定する 必要はないのでは? 仮に既存のフレームワークを使わないと決めたと しても便利な点が1つでも2つでもあったら取り入 れれば良いだけだと思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.7

MVCの最大のデメリットは ちょっと批判すると信者にたたかれることかな 宗教みたいなもんだから、なくても困らないけど 使わないからといって利用者を批判すると戦争になります。 世の中いろんな人がいるんだねとやさしく見守ってあげましょう。 逆に利用者からして推奨したり勧誘するのはいいが 不使用者を全否定するのはカルト教徒レベル どんなに適切で正しいことを言っていてもかかわりたくない

susan-styl
質問者

お礼

yambejp様 回答ありがとうございます >宗教みたいなもんだから、なくても困らないけど >使わないからといって利用者を批判すると戦争になります。 わたしの質問、フレームワーク使いを批判してるように書いてますかね そういった意図はないです、すみません。。 >逆に利用者からして推奨したり勧誘するのはいいが >不使用者を全否定するのはカルト教徒レベル この手の話は、自身の主体性を保つために攻撃的に出てしまうクラスタがたまにいますね 偉い人でも。。。 私も、クリエイティブは柔軟性を失ったらおしまいだと思います。

noname#244856
noname#244856
回答No.6

shylockさんの回答に概ね賛同します。MVCに関しては…可読性・保守性の観点から、フレームワークを使わなかったとしてもせめて「デザイン」と「ロジック」の2つの分離はしておきたいところです。私はノンフレームワーク・ノンテンプレートエンジンで小物を作るときも <?php ロジック ?> <!DOCTYPE html> <html> <body> PHPを使うのは変数内容出力目的のみ </body> </html> こういう書き方をしますね。<body></body>の中にechoする目的以外の比較的長い <?php ?> をダラダラ書くようなコードは大嫌いです。 加えて、ちょっと違う視点から回答します。Phalconに対して好印象を持てるのは実行速度だけではなく、「C言語でエクステンションを書けるほどレベルの高い人たちが作っている」という認識があるからではないのでしょうか。 ・フレームワークに脆弱性が見つかった場合に対応が必要 ・フレームワーク自体にバグが含まれている場合がある つまり言うところ、こういう不安は「開発元が自分より信頼できない」というところからきているんだと思います。個人的には 「PHPインタプリタのコミッタにはなれなくても、ソースを読んで流れを追えるレベル」 これぐらいの水準のチームであれば喜んで使いたいと思えるところです。あとはちゃんとドキュメントが整備されているかどうか…とかですね。

susan-styl
質問者

お礼

To_aru_User様 回答ありがとうございます なるほどですね やはり「フレームワークを使えば、コミニュケーションを取れない人間も可読・保守が出来る」が最大のメリットとなりそうですね。 しかし、フレームワークを使った場合ってそんな夢のような世界が広がってるのですかね@_@ 実際問題 仕様書の一部だけ見て引き継ぎって出来るんでしょうか? 実際問題 grep検索で関数を探すような泥臭いこともないんでしょうか? >「C言語でエクステンションを書けるほどレベルの高い人たちが作っている」という認識があるからではないのでしょうか。 いえ、特定の言語を使っているから熟練者である有能である、といった考えは持っていません。 C言語使用者の中にも有能な人、無能な人はいると思います。 Phalconを出したのは単純にPHPの上に乗ったものではないからです。 >つまり言うところ、こういう不安は「開発元が自分より信頼できない」というところからきているんだと思います。 そうですね、自分が作ったものであればソースもすべて把握しているので原因が特定しやすいですが 見ず知らずの人が作ったものを全ソース理解せずに間にかませるのはとても不安になります。 じゃあ、サーバのミドルウェアのソース理解してるのか!とお叱りを受けそうですが。。

  • ahoo_ok
  • ベストアンサー率31% (30/95)
回答No.5

>フレームワークをかませることで >不具合発生時の原因の特定も複雑になります >不具合が起きた場合に原因の特定が難しくなる えっ?それはない。まともに実装しているならログ出力の実装しているだろうし xdebugでそのログを元にブレークポイントを設定してステップ実行する >デザイナーもプログラムの知識を持っているチームの場合は >MVCに作業分担するメリットも感じられません メンテナンス性。 デザインはこっち。DB問い合わせはこっち。などMVCで実装することによってどこを修正すればいいのかわかりやすい。 >フレームワークに脆弱性が見つかった場合に対応が必要 それ、君が作ったプログラムも同じことがいえるよね。 既存のフレームワークならこっちが気がつく前に改修されてこっちとしてはフレームワークのバージョンだけを上げるだけですむ可能性の方が高い。 それに対してすべてを君が作った場合にはすべて君が改修するんだよ。大変だね。 それと仕事を引き継ぐ場合、フレームワーク部分は読まずに実装した部分だけ読めばいい。 それに対して君がすべて実装したら引き継ぐ人はすべて読む必要があるね。大変ですね。 >・ノンフレームワークに比べて速度は遅くなる(Phalcon等、例外は除く) 速度を気にする実装ならそもそもPHPなんて使わない。Javaで実装する。

susan-styl
質問者

お礼

ahoo_ok様 回答ありがとうございます >xdebugでそのログを元にブレークポイントを設定してステップ実行するし >どうして特定が難しくなる? 必ずログに出力されるような行儀の良い不具合だけしか出ないんであればそれでいいんではないでしょうか しかし、サービスを運用しているとログに出力されない不具合などザラに出てきます。 そういった場合にフレームワークも犯人として浮上するので特定が難しくなります。 >それと仕事を引き継ぐ場合、フレームワーク部分は読まずに実装した部分だけ読めばいい。 >それに対して君がすべて実装したら引き継ぐ人はすべて読む必要があるね。大変ですね。 なるほど、メンテナンスが容易になるというメリットですね。 そんなものwikiなどでもカヴァーできるし、フレームワークであっても仕様書は必要ですよね やはりデメリットのほうが勝つ気がする。。。 >速度を気にする実装ならそもそもPHPなんて使わない。Javaで実装する。 これを議論するとパールPHP戦争のようになるので、そうですね。と言っておきます。

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.4

>やっぱりデメリットのほうが多いですね フレームワークを使う事に対するメリット・デメリット だけを見て、フレームワークを使わない事によるデメリ ットを考慮しないと意味は無いと思いますが? >作業員の確保も困難になりますし フレームワークの使用経験が有る作業員であれば、ある 程度のレベルは経験年数や作業内容によって想定が可能 ですが、独自のプログラム形態を採用している場合は、 外部の人間がそれに適応できるかどうかはやってみないと 分からなくなります。 そういった面ではむしろ作業員の確保は難しくなります。 フレームワークを使わない事によるデメリット ・個人毎の技量の差によってプログラムの質が大きく左右 される。 ・同じ様な処理が複数の箇所で使われる事で、仕様変更や 不具合修正の際に修正漏れが発生しやすい。 それによる不具合は原因の特定が難しくなる。 ・脆弱性が見つかった場合に対応が必要。 使用者の数が少ない為、脆弱性を見つける機会が限られる。 そもそも十分な脆弱性に対する対応が行われているか保証 されていない。 ・バグが含まれている場合がある。

susan-styl
質問者

お礼

don_go様 回答ありがとうございます >フレームワークの使用経験が有る作業員であれば、ある >程度のレベルは経験年数や作業内容によって想定が可能 なるほど、そういった側面から見るのも面白いですね。 しかし、残念ながら「フレームワーク使用経験=熟練者」という式は成り立ちません GETとPOSTの違いも理解していないcake使いもいます。 >フレームワークを使わない事によるデメリット ありがとうございます。 こういった意見を待っておりました。

回答No.3

MVCを理解していない人は容赦なくチームから外します。 理由は#2の回答の方とお同じ。 それくらいフレームワークのメリットは大きい。

susan-styl
質問者

お礼

kosukejlampnet様 そうですか、かわいそうですね。。

noname#247307
noname#247307
回答No.2

特に不自由を感じないのであれば、使う必要はないと思います。おそらく、自分で管理できる程度の規模のものしか作っていないということではないでしょうか。ある程度小規模であればフレームワークの優位性はあまり感じられないと思います。 例えば、相当に大掛かりな規模のWebサイトを考えてみてください。 数ヶ月をかけて実装し、ようやく本番近くにまでこぎつけました。 そしたら、クライアントの鶴の一声、「データベース変えてくれ」 はい、どうしましょう? データベースにアクセスするページは数十、数百、ヘタすると数千ページ。どう対処します? フレームワークであれば、「しょうがねえな」と思いつつ設定変更してDAO見なおしておしまい、です。 あるいは、いきなり仕様変更。データベースの構造が変わりました。 はい、どうしましょう? 全部手書きで作っていたら、データベースアクセスしている部分のSQLをすべて書き直し。数百、数千あります。全部書き終わったら、おそらく数えられないほどのバグが混入してます。 フレームワークであれば、「しょうがねえな」と思いつつモデルの設計を書き直し、DAO書きなおしておしまい、です。 まぁ、他にもいくらでも出てくるでしょうが……。 大掛かりな開発になると、開発の時点であちこち仕様変更があるのが当たり前。そして作ったものはその後何年もメンテナンスすることになります。2年後、3年後、検討の末にSQLサーバーを置き換えました、クラウドに移行になります、といった大規模な変更もあるでしょう。 こうしたとき、すべてあちこちから切り貼りしたコードで組み立てていた場合は、おそらく一から作り直しに近い事態になるかも知れません。が、フレームワークを導入していれば、必要最小限の変更で済みます。

susan-styl
質問者

お礼

shylock様 お答えありがとうございます なるほどですね! データベースに関しては、仕様変更の恐れがあるのであれば DAOにあたるものをclassで自作すればいいんじゃないかと思いましたが 5人程度のチームであれば自作したクラスも口頭によるコミュニケーションで周知可能ですが 数百人規模であればそれは不可能ですもんね、そういう場合は確かにフレームワーク使ったほうがいいですね しかしオラクル固有の機能をふんだんに使っているのに、突然ポスグレにしてくれと依頼された時は 例えフレームワークを選択していても簡単には対応出来ないですよね? 余談ですが Facebook、アメーバピグ、LINEなども数人のチームから始まっていますが WEBサイト・サービスで数百人規模のプロジェクトってどんなものがあるんでしょうね ↓こういうのとかでしょうか http://www.touki-kyoutaku-net.moj.go.jp/ 未知の領域です

  • t_ohta
  • ベストアンサー率38% (5083/13283)
回答No.1

メリット ・そのフレームワークを熟知したプログラマが作業すれば開発工数が格段に少なくて済む デメリット ・フレームワークを熟知していなければ格段に開発工数が増す

susan-styl
質問者

お礼

t_ohta様 はい、作業員の確保も困難になりますし やっぱりデメリットのほうが多いですね

関連するQ&A

  • phpフレームワークの選択

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

    • ベストアンサー
    • PHP
  • PHPフレームワーク環境でのSmartyの必要性

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

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

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

    • ベストアンサー
    • PHP
  • Strutsなどのフレームワークが必要な開発って

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

  • MVCフレームワークでMとCを分けるメリットは?

    プログラミング初心者で御座います。 現在、MVCフレームワークを使って開発をしようと考えており、 PerlのCatalystというフレームワークをちょこっと勉強しました。 そこで1点わからないことが出てきたのですが MVCフレームワークでM(Model)とC(Controller)を分けるメリットは 何でしょうか? 拙い知識では、処理の流れとして (1)C(Controller)がM(Model)を利用してデータをやり取りし、 (2)最後にV(View)に投げる というものになると思います。 V(View)は(1)が完全に終わってから「後はヨロシク」という感じで 丸投げできるので、分ける意味は分かります。 ところが、C(Controller)とM(Model)は行ったり来たりの やり取りをする必要があるので 複数のファイルに分けると逆に非効率になると思います。 なぜ敢えてCとMを分けているのか教えてください。

  • 【php】MVCの分け方について

    MVCアーキテクチャを勉強しています。 MVCのメリットは何なんだろうと考えた時、 作業分担、コードの可読性の他に、 使いまわしのしやすさがあるとおもいます。 ということは、 MVCで製作されたWEBページって 1対多 になるような分け方が理想的なんでしょうか。 例えば とあるモデルは、 さまざまなコントローラに使われ、 モデルを1箇所修正すれば 全コントローラに反映される とあるコントローラは、 複数のパターンのVに対応していて スマホ用デザイン、PC用デザイン、様々なデザインに振り分ける   (M)   /|\  (C)(C)(C)  |\  (V)(V) こんな感じでいいんでしょうか。

    • ベストアンサー
    • PHP
  • PHPフレームワークの習得期間

    一つのフレームワークを習得するのにかかる期間は、米国の専門家では、半年から1年程度と言われています。2週間で習得できるとか、1か月で習得できるとかいう強がりが日本で流行る理由ってなんでしょうかね?資格についても合格率を観れば数年かかるだろうなってわかるものが1か月で合格できるとか、夢物語が書かれるケースがありますよね。  自己への過大評価による工数見誤りってダサいですよね。 私はある程度組めるようになるまでに、Symfonyで1年、CAKEで8か月、Zendで9か月かかりました。現在はそれぞれ少なくとも1年以上は経験しています。それでもマスターしたとは到底言えません。 しかも、フレームワークを使えば使うほど思うのは、フレームワークは宣伝ばかり鵜呑みにする人の恰好の餌食だなと。メリットがあってもそれを生かすことが難しいこと、デメリットが致命的に大きいことでしょうか。  特に、情報戦略、経営戦略といった戦略面全般では、標準的なPHPに完全に劣っています。 にもかかわらず、いまだにフレームワーク信者が多いのは一体なぜなのでしょうか?  まず、技術家は、全体戦略に疎いです、それは企画や分析、そして経営などの分野です。 視野が狭く、より優れているかのように見えるスキルをスマートであるとか格好いいとか 戦略面とは別の部分で飛びつくのです。そして、そこで利点を得ると、勝手に正当化する理由にするのです。宣伝は戦略です。利点ばかり惑わされてはいけません。フレームワークを使わないことの欠点を考えろと言う人もいるかもしれませんが、設計面でもそれを補うことはできると思います。なぜならば、フレームワークで実装できる機能はそもそも、標準的なPHPのライブラリを真似て作っているからです。  全体戦略は数学に基づいています。この部分へと視野が向かないことが致命的敗因です。 フレームワークは廃れる技術です。スタンダードではありませんから。本質はあえて書きませんが、それを気づくのは学習し続けたエンジニアにしかわかりません。  フレームワークは連携力を促す云々という文句がありますが、連携力はむしろ低くなっているでしょう。その理由もあえて書きませんが明白です。

    • 締切済み
    • PHP
  • Javaのフレームワークについて

    Javaのフレームワークについての質問です。 現在、Webアプリケーションのショッピングサイトのようなサーバー側の規模がちょっと大きくなるものに関しては、スクリプト言語のPHPやRubyの代表的なフレームワークを使って作成しているのですが、Java用のWebアプリケーションのフレームワークもこれから使ってみたいと考えています。 それで、質問なのですが、 (1)現在、Java用のWebアプリケーション作成のフレームワークで世の中で皆さんが一番使われているものってどれになるのでしょうか?私が現在知っている限りでは、Struts、Struts2、JSF(Java Server Faces)、Seasar、Seasar2 くらいがあるのですが、使い分けのコツみたいなものがあれば教えていただきたいのです。(それぞれの、メリット、デメリットのようなもの。) (2)スクリプト言語のフレームワークとJavaのフレームワークの使い分けのようなものも分かれば教えてください。私の認識では、Java用のフレームワークを用いて設計しなければいけないものって、たとえば大手銀行の決済システムとか、かなり規模の大きなものを想定しています。プログラムの動作スピードを上げたい時とか、セキュリティー関係を厳重に行い時などを想定しています。Javaのフレームワークを使うメリットなども分かれば教えてください。 よろしくお願い致します。

  • Microsoft .NET Framework 2.0の不具合につい

    Microsoft .NET Framework 2.0の不具合について パソコン状況 ・Windows xp ・ Microsoft .NET Framework 3.5は設定されています。 【1】20日ほど前からパソコンの電源を切る時に「重要な更新プログラムがあります。更新せずにスイッチを切る時は・・・・」と言うメッセージが出続けています。 原因を調べてみたら、「Microsoft .NET Framework 2.0」に不具合が起き、「Microsoft .NET Framework 」の更新が出来ていない事が原因のようでした。 そこで、それまで自動でインストールして設定するようにしていましたが、手動でインストールして設定するようにしましたが、やはりダメデした。 パソコンの先輩に聞いたら、あるフリーソフトサイトを教えられ、見てみると、 そこにあるクリーンアップソフトをインストールして、設定されている「Microsoft .NET Framework 」や、.Net Framework関係のファイルやフォルダ、レジストリを削除し、その後で「Microsoft .NET Framework 3.5」を再インストールすればいいとありました。 やってみたのですが、そのフリーソフトをダウンロードは出来ましたが、パソコンに設定(インストール)しようとすると、エラーメッセージが表示されて設定できませんでした。 どうすれば「Microsoft .NET Framework 」の不具合を直す事ができるのでしょうか。 【2】なお、この不具合が発生したころから、ワードなどで作業していると「Nomale.dotの 自動バックアップは延期されます」と言うメッセージが頻繁に表示されるようになりましたが、「Microsoft .NET Framework 」の不具合と関係があるのでしょうか。 【3】今のところ「Microsoft .NET Framework 」の不具合による不都合はないように思いますが、もし、直らずに使っていた場合、何か不都合が発生するのでしょうか。 以上よろしくお願いします。

  • php言語の脆弱性について

    php言語の脆弱性について パスワード認証において、phpのstrcmp, strcasecmpといった関数には脆弱性があると聞きます。 そこで、具体的にどのような脆弱性があるのかお伺いしたいと思います。 たとえば、認証画面にパスワードの送信フォームがあり、パスワードが分からない場合 $pass = **** if (isset($_POST['pass'])) if (strcasecmp($_POST['pass'], $pass) == 0) echo "Correct!"; else echo "Incorrect" というプログラムになっていた場合、送信フォームにどのような文字列を渡せば認証が通るのでしょうか。 また、認証が通る仕組みについても教えていただけたらと思います。

専門家に質問してみよう