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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

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

Q&A

解決済

[PHP]MVCモデルにおいて、M・V・Cのどこから開発するか

pgm_bakabon
pgm_bakabon

総合スコア60

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

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

4回答

1グッド

4クリップ

11792閲覧

投稿2017/02/28 10:04

お世話になっております。

現在、PHP(Laravel 5.2)で、サービス開発を行っています。

皆様、MVCモデル(Laravel関係なく)を採用している場合、
1人で1機能を開発する場合は、どこから着手されますか?

私自身、

  1. モデル
  2. コントローラー
  3. ビュー

の順番で着手をするのが実装しやすいです。

が、今のチームで、ビューから作成することになり、
非常にコーディングしにくいです。
ビューだけ作って一度コードレビューが発生します。

皆様のご意見をお伺いできればと思います。

tatsu_10👍を押しています

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

回答4

6

ベストアンサー

小さなシステムしか作ったことがない者の個人的な意見ですが、私がシステムを組む場合は、初期化や入力や集計処や出力などの各種の処理を縦軸に、ファイルや画面デザインや印刷デザインを横軸に並べたプロセスマトリックスチャートを作ってから開発します。そしてそれぞれのファイルや画面デザインなども大まかなデザインを描いておきます。開発しながらの多少の仕様変更もおこりますが、システムの全体像が見えていれば修正点と影響箇所が見渡しやすいので、臨機応変に対処できます。

ちなみに6年前にAccessで開発したe-ラーニングシステムのチャートが下図です。
イメージ説明 

 フレームワークによるMVCモデルではないですが、システムの全体像を俯瞰する意義は共通すると思います。
一応、もう少し機能を単純化したIIS上で働くASPスクリプトでWebシステム向けのバージョンも開発しました。

その手順からすれば、モデルもビューも同様にある程度形になっていた方が、処理で扱いやすいと思います。
質問の内容によれば、モデルの正規化やグループ集計用のキー項目の工夫などの必要性が後で浮かび上がってきて、蒸し返しが多発する可能性があり、その点をご心配なのでしょう。
逆にビューを明確にするとシステムの目的が理解しやすくなるので、それを狙ってビューを最初に固める方針ではないかと思われます。ビューもモデルもその他のシステムのエンティティもある程度は形にしておくとよいでしょう。さらに、改善点に気付いたときにその修正箇所と影響範囲を見通せるように、モデルとビューとそれに対応するコントローラとの関連性をチャート化しておけば、ある程度はオーバーヘッドも想定して手当てできるのではないでしょうか。

投稿2017/02/28 12:09

編集2017/02/28 13:32
seastar3

総合スコア2285

tanat, KinD, s8_chu, kamiokan, maitasio👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

3

LaravelならWebアプリケーションですよね。

View先行の進め方なら、まずURLを決めて Controllerから着手します。
着手といっても中身はコメントとダミー変数だけにします。
コメントだけというのがコツです。

/user/show_profile/{id} としたURLならこんな感じでしょうか。

php

1class UserController extends Controller { 2 public function show_profile() { 3 // 何を受け取るかをコメント 4 // GET,POST,Session,Cokkie,Env... 5 // 例) 6 // GETパラメータのidを取得 7 8 // 何のモデル、サービスを使うかをコメント 9 // 例) 10 // UserModelからidに一致するユーザ情報を取得 11 12 // 何を返すか ダミーで作成します。 13 $user = [ 14 'id' => 123, 15 'name' => 'hoge', 16 ]; 17 return response()->view('profile', $user); 18 } 19}

で、次にViewを作り以下を確認&レビュー。

  • UX,UI に問題ないか
  • 送信方法はGET,POST,Ajaxどれにすべきか
  • どのデータをどう取得するべきか
  • レスポンスはHTML,リダイレクト,json,xmlどれにすべきか

問題があれば先のコメントとダミー変数を修正。再度、確認&レビュー。

問題なく行けそうと判断できれば、コメントに沿ってModelやServiceを作りこみます。
その際は、全体をみて共通化できる処理がないか確認した方がいいでしょう。

この手法であれば、
・実際の画面を先に確認できる
・修正はコメントだけなので手直しを最小限にできる。
・コメントから処理内容をイメージできるので、他の人へ実装担当を渡すのも容易。
といったメリットがあります。

投稿2017/03/01 02:02

clickmaker

総合スコア200

tarofess, seastar3, kamiokan👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

1

自分は普段Cakephpを使って、基本的には1機能を1人で開発していますが、あまりMVCのどこから作るという意識をしたことはないです。それよりは、その機能を実現する上で実装方法が不明確だったり、難易度が高そうなところから作っていきますね。または、その機能の中核をなす部分から実装します。それらを後回しにして、結局うまく行かなかった場合、手戻りが発生しそうだからです。
また、中核部分を最初に作るとデバックしやすいというのもあると思います。

例えば...
UIがメインの機能であれば、まずViewをしっかり作って、関係者にレビューしてもらうとか
課金などのビジネスロジックが重要な機能なら、Modelをしっかり作るとか

※なお、MVCどれか一つだけ作っても動かないので、どこからちゃんと作り込むかというレベルです

ある程度、中核が決まったら、細かいUI調整とか、バリデーションとか、ロギングとか肉付けしていくような感じでやってます。

今のチームで、ビューから作成することになり、 非常にコーディングしにくいです。
ビューだけ作って一度コードレビューが発生します。

運用がうまくいかないのであれば見直した方がいいかもしれませんね。
作っているシステムや体制にもよるかもしれませんが、ビューだけ作ってレビューしてもらっても微妙な可能性はあるかもですね(自分のプロジェクトでそれはやらないです)。なぜそうしているのかが書かれていないのでなんとも言えませんが...

投稿2017/03/01 00:47

編集2017/03/01 00:55
popobot

総合スコア6584

kamiokan👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

1

私もまだまだ勉強中ではありますが、職場で FuelPHP を使ってて、だいたい Controller から着手します!
Controller はユーザーからのリクエストを扱う層で、作成するコンテンツの核となるロジックを書くので、そこを先にレビューしてもらえば戻り作業が少なくて済むからです。
デバッグも容易ですし。

View から作成しても View(ブラウザ)からの入力を受け取るのは Controller で、Model のデータを呼び出す処理も Controller に書くので、 Controller からレビューしてもらう、が適切かなと思います。

まぁでも View からでも Model からでも同時並行でもいいとは思いますが。

投稿2017/02/28 16:51

Pccla

総合スコア35

s8_chu👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

PHP

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