質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • PHP

    21258questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Laravel 5

    2061questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

  • Django

    1168questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • FuelPHP

    531questions

    FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

ああああフレームワークの利便性を理解するためにはチーム開発に参加する必要がありますか

解決済

回答 7

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,368

keys

score 187

お恥ずかしい話しなのですが、今までマトモにチーム開発に従事した経験がありません。それ故なのかもしれませんが、フレームワークの利便性がイマイチ理解できません。

フレームワークの利便性を理解するために、個人的に一人でフレームワークを使って開発を試してみました。使用したフレームワークはDjango(python),fuelphp(php),larave(php),express(node.js)などです。フレームワークに関して調べると、どれも結局MVCがどうのこうのという説明の元「開発スピードが向上する」「バグが減る」「書き方が統一される」など色々メリットが書いてあります。

そして実際に、上記のフレームワーク達はそのような仕組みが内部に存在していました。しかし、モデルとビューと、コントローラーを分けけたところで、そんなに便利でしょうか。確かに、便利は便利なのかもしれませんが、フレームワークの利便性の根幹はそれのみなのでしょうか。

開発環境を揃える方法や、dbを操作する方法を初めから知っていた場合、最初からそっちを使った方が早いとすら思ってしまいます。こんな風に考えてしまうのは、おそらくチーム開発の経験が極端に少なく、様々な人がフレームワークありで進めてきたプロジェクトに後から参加したりしたことがないのが原因でしょうか。

確かに、以前、フレームワークなしで長年推し進められてきたウェブサービスを一人で抱え込んだとき、その中身に散らかりっぷりに戸惑った経験があります。フレームワークを知っていると、このようなことがなくなり、メンテが楽になるのでしょうか。そうであれば、フレームワークは比較的中規模なプロジェクト、もしくは自分以外のエンジニアが引き続き改修していく予定が初めからあるプロジェクトになって初めて威力を発揮するもので、フレームワークの利便性を感じることができるのは、チームプロジェクトの中のみということになりますか。

テスト環境と本番環境をコード書き換えで簡単に行ったり、フレームワーク内でできるのは、使いこなせれば、便利なのかもしれません。。

https://qiita.com/qwe001/items/96a83fadcfaeb3cd4a6e

経験談で構いませんので、色々お話しをお聞かせいただければ幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2018/06/18 10:16

    URLは 対応しているMarkdownの機能 https://teratail.com/help#about-markdown の[リンク]を使いましょう。

    キャンセル

  • mts10806

    2018/06/18 10:16

    タイトルがおかしくなっています。ノイズにしかなりませんので調整してください。

    キャンセル

  • motuo

    2018/06/18 10:29

    知りたいのは、「チーム開発に参加する必要がありますか?」でしょうか。または、「フレームワークの利便性」なのでしょうか?

    キャンセル

  • mts10806

    2018/06/18 13:24

    今更ですが、laraveではなくLaravelですね

    キャンセル

回答 7

+6

ん?

開発環境を揃える方法や、dbを操作する方法を初めから知っていた場合、最初からそっちを使った方が早いとすら思ってしまいます。

この考え方がまさに、フレームワークを使いましょう。ということですよ。
基本的には、同じフレームワークを使うのが前提で、いろんなフレームワークを使い分けるということは
しません。
ですので、一度覚えれば・・・それつかうのが楽だよね。

フレームワークの利便性を感じることができるのは、チームプロジェクトの中のみということになりますか。

多人数でやるほうが、より効果的ですが、一人チームでもメリットはあります。
便利な機能が追加されたり、俺々フレームワークよりも、利用者が多いということは
活用方法の事例が多いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/18 10:47

    つらつらと長文書いてしまったことを反省・・。

    キャンセル

  • 2018/06/18 10:57

    こちらは、シンプルすぎるので・・・
    詳しく書かれることは有用だと思います。

    キャンセル

+5

開発環境を揃える方法や、dbを操作する方法を初めから知っていた場合、最初からそっちを使った方が早いとすら思ってしまいます

おそらくフレームワークの学習コストのことを仰っているのだと推察しますが、
そこは開発期間や納期との兼ね合いもあるかと思います。
ただ、「dbを操作する方法を初めから知っていた」としても、実際はその「dbを操作する仕組み」を作っていかなければなりませんよね。
開発は1人で行うことはほとんどありません。その仕組みを作ったとしても結局のところ他のメンバーがその部分を理解して使わなければなりません。

いわゆる「オレオレフレームワーク」は往々にしてマニュアルが残りません。
例えマニュアルがあったとしてもメンバーが好き勝手に機能追加していく内にマニュアルがメンテナンスされなくなっていきます。
最初に基盤を作った人がいつまでもいればいいですが、いつかはいなくなります。
そうなったときに「最初に作った人すら全て把握しきれていない」現象も起きて、引継ぎも満足にできないまま次のメンバーに引き渡されます。
そうなるとマニュアルも残っていない(最新ではない)ため、結局ソースコードを見て理解するしかなくなりますよね。
その時間は非常に無駄です。例え熟練者であっても他人のコードを完全に理解して、作った人と同様以上に使いこなすのは難しいです。

で、あれば、定期的に正しくバージョンアップが行われ、必要な機能は最初からきちんと揃っている
マニュアルも常に最新化されている著名なフレームワークを利用する方が比べ物にならないくらい後々のメンテナンス性含めて高いパフォーマンスを発揮できることは間違いありません。

もちろん「オレオレフレームワーク」であっても、きちんと役割分担がされていてメンテナンスがされていてマニュアルも過不足無く更新されていれば問題は少ないかと思いますが。
それとこれとはまた別問題なので割愛させていただきます。

モデルとビューと、コントローラーを分けけたところで、そんなに便利でしょうか

先に「開発は1人で行うことはほとんどありません」と書きました。
スポーツに例えると分かりやすいかもしれません。
団体スポーツには殆ど「ポジション」というのが存在します。
野球ではピッチャー・キャッチャー・・・サッカーではキーパー・フォワード・・・
バスケットでは・・・●●では・・・。
サッカーやバスケットでは昔はなかった概念が入ってきたりで内部的には更に細かくなっていることもありますね。
それは「状況にあわせた役割分担」と捉えて差し支えないです。
全て1人で行うのでなければ必ず役割分担をする必要がでてきます。
別の人が同時に同じコードを修正するようなことは基本的にあってはいけません。
モデル・ビュー・コントローラはその大枠であり、わけることにより、それぞれの役割がはっきりします。
オブジェクト指向もそう考えて差し支えないかと思います。

もちろん全て1つのクラスに詰め込むなり、クラスを作らずメソッドだけで乗り切ることも可能です。
でもそれは、「どこに何がどのような意図で存在する」というのを「作った人以外知らない。もしかしたら作った人すら数ヵ月後には覚えてない」ような状態となります。
質問者さんが仰る「フレームワークなしで長年推し進められてきたウェブサービスを一人で抱え込んだとき、その中身に散らかりっぷりに戸惑った経験があります」がまさにそれに近いのではないでしょうか。

きちんと役割分担がされていれば、その戸惑いも少なくなり、抱えたときに自身の役割に集中できるのではないでしょうか。

フレームワークを知っていると、このようなことがなくなり

ではなく「フレームワークでシステムが構築されていると」です。
幾らフレームワークを知っていても熟練者であっても何年もレガシーな状態で更新されてきたシステムを
全てフレームワークに置き換えるのは困難です(まれにそういう案件に出くわして辛い目にあいます)

フレームワークは比較的中規模なプロジェクト、もしくは自分以外のエンジニアが引き続き改修していく予定が初めからあるプロジェクトになって初めて威力を発揮するもので、フレームワークの利便性を感じることができるのは、チームプロジェクトの中のみということになりますか

ちょっとゴチャゴチャしていますね。
「レガシーシステムを全てフレームワークに置き換えるのは困難」と1つ前に書きましたが、
不可能ではありません。
ただそれはとても時間(とお金と人)がかかるものであり、それだけの労力をかけた上で、
それまでのレガシー状態を凌駕するほどのメリットが提案できれば置き換えることもあります。
レガシーでなくても様々な理由で(例えばバグやセキュリティリスク)元々載っていたフレームワークを
全て別のフレームワークに載せかえるようなことも頻繁に行われています。

プログラミングで作られたシステム自体は、「モノ」ではないのでそれ自体は劣化しませんが、
それを作る「ヒト」は日々衰えていくものですし、使う「ヒト」も入れ替わっていき、
技術は日進月歩で進化し、また抱えるリスクや脅威も変化していきます。
何も改修が永遠に行われないシステムなど皆無ですし、同じく自分以外のエンジニアが全く関わらないシステムも皆無です。
「作ったら終わり」のシステムは何1つなくて、むしろ作った後が大事です。


PHPでの提示が多いようなので、PHPで例えると、
PHP自体のバージョンのサポート切れによる対応などは今まさに迫っているものではないでしょうか(PHP 5.6は2018年末まで。参考:PHPのリリース日とサポート期限
社内で使っているだけの仕組みならいざ知らず、全世界からアクセス可能なところに公開されているものでしたら、
サポート切れによる様々なリスクに対応するため、システムだけでなく言語自体もバージョンアップしなければなりません。
最新のフレームワークであればその辺りの対応もしていっていますし、フレームワークのバージョンアップによる違いのところだけを吸収できれば載せかえも容易です。

そういった「言語のサポート期限」といった面からもフレームワークを選択するメリットは大きいと私は思います。


というのを踏まえておそらく本題と思われる質問へ回答します。

フレームワークの利便性を理解するためにはチーム開発に参加する必要がありますか

利便性の理解自体はどこであろうとなんでろうと関係ないので、チーム開発に参加して初めて得られる・そうしないと得られない という必要性はありません。
むしろ、利便性を理解してからチーム開発に入られた方が良いかと。順序が逆ですね。
チーム開発に参加するということは役割分担された上で成果が求められます。
勉強のために開発を行うわけではありません。顧客に満足していただきその対価をいただくためです。

だからといってチーム開発の経験がないからと恥ずかしいと思う必要もないと思います。
そういう機会に恵まれなかったとか、学生とか、個人でやってるとか 様々事情がありますしね。
質問者さんがどういう境遇の方か知りませんが、やり方は間違わないで欲しいな と思います。
フレームワークをしっかり扱っていくにはそのフレームワークの根本である言語の知識・技術は不可欠です。
その知識・技術をきちんと身につけていけば、フレームワークのメリット(もちろんデメリットも)見えてくるのではないでしょうか。

あとは、自身の言語習得レベルとあわせてフレームワークへの理解を深めていければ良いと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/18 10:59

    無駄にアツい(きらいじゃないけど

    キャンセル

  • 2018/06/18 11:04

    つい数ヶ月前に10年以上前に作られたPHPシステムの改修に短期間でのぞんだので、
    自身の経験(というか愚痴)も入っちゃってますね。ここも反省・・。
    結局納期との兼ね合いで書き方踏襲するしかなかったですけど。

    motuoさんのコメントでタイトルにある質問に答えてないことに今更気づきました。

    キャンセル

  • 2018/06/18 13:36

    そうなんですよね。
    本文を読んでいるとフレームワークの利便性を語りたくなりますが、タイトルが違うので回答に迷う…

    キャンセル

  • 2018/06/18 14:09

    一応、両方に答えてみました。
    かなりの勢いで答えてしまったので追記してますが、本来はどっちかに絞ってもらって、要件ハッキリしてもらってから回答すべきでしたね。

    キャンセル

+4

一口に「フレームワーク」といっても、それぞれに粒度が違ってきます

とりわけ、PHP以外の多くの言語の場合は、純粋に「フレームワークなし」で書こうとすれば、HTTPやCGIとしてのやり取りから自分で書かないといけないので、工数がかかりすぎてしまいますが、「フレームワークなしのWebサービス」はそのレベルで書いてあった、ということでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/18 10:29

    ということで、「フレームワークを使った開発」といっても、ExpressとLaravelでは使う意味が全く違ってきます。そのあたりをごちゃまぜにしたところで、有意な結論は出ないでしょう。

    キャンセル

+2

データ処理、アルゴリズム、そしてアウトプットを分離して部品化しやすくして再利用性を高めて安定稼働を期待するのがMVCモデルの側面じゃないかと思います。

phpが柔軟すぎて、一本のソースにデータ処理、アルゴリズム、htmlコードがメタメタに絡み合って、
共通化できそうでできない処理が多数あるとメンテナンス性が悪いです。
また、システムの一部でもアウトソースする場合も理解の妨げになりかねません。

フレームワークに則って開発することで、
癒着を防いでシンプルな構造にすることでデバッグもしやすくなり、
生産性が高まるのだと思います。
また、ある程度セキュリティー対策も盛り込まれていることで、
いちいちエスケープ処理を仕込まなくても良くなりますし。

そうは言っても、
一人で開発してすべて自分の頭に収まる場合などは、
サクサクっと最小限のコードを書きたくなるのもわからなくもないです。
ですが、
数年後にそういうソースコードを自分で紐解くバカバカしさが時間の無駄なので、
他人にわかりやすく、自分にもわかりやすいスタイルとして
規約である程度拘束して行くことで
後々のメンテナンス性も高まっていくことを実感するでしょう。

間を取って、自前のミニマムなフレームワークを作っても良いかもしれません。
今どきのフレームワークが何かと大風呂敷で便利機能が多数備わっている反面、
ちょっと重たい気もしなくもないので。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

多人数で開発する場合は、フレームワークが個々の能力の差を埋めてくれます。
また、ほとんどのフレームワークは手順がドキュメント化されているため、
扱い方に関する学習をそれぞれで行うことが出来ます。

ただしこういう人はフレームワークを使うのに向きません。
・人の作った仕様に従うのが嫌い
・フレームワークに従った、ありきたりな構造では面白くない
・そもそも自分のやりたいことを実現するのに、逆に邪魔になる
・既存のシステムが受け入れられず、ブログを書くのにWordPressなんてとんでもないと考えている
・いっそ自分でフレームワークを作って、他人に使わせたい

私はだいたいそういう感じです。
他人のフレームワークを使わず、以下のようなシステムを作ってます。
https://diary.croud.jp/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

お前は、誰かが作った象形文字で書かれた言語を良いと思うのか?

俺ならみんながよく使ってる言語が良いと思うけどな

つまり、一人で独り言を話すサイコパスならいいんじゃね?

様々な問題を解決してきた言語を共通認識として話せた方が面白いし
みんなにとっても読みやすい本にもなるだろうよ

お前しか読まない本を作るならフレームワーク使わなくていいぞ

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

-2

結局、下記の文章を読んで納得することにしました

PHP軽量FrameworkのSlim3

フルスタックフレームワークはフレームワークとしてのRequestやResponse処理の実装はもちろんのこと、Auth認証やSession管理といったところや他色々なWebの実装で必要な機能をもともと用意してくれている。

なので、必要とするコンポーネント部品をフレームワーク利用者が作らなくても実装できる。
また、デザインパターンもMVCモデルを採用しているフレームワークが多く、Viewとモデルを分割できるので、拡張性が高く、バグも入りにくくなる。

また、LaravelではViewコンポーザなどを利用してViewの中にビジネスロジックを含まない実装が可能になっている。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    21258questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Laravel 5

    2061questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

  • Django

    1168questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • FuelPHP

    531questions

    FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

  • トップ
  • PHPに関する質問
  • ああああフレームワークの利便性を理解するためにはチーム開発に参加する必要がありますか