意見交換
お世話になっております。
現在、PHP(Laravel 5.2)で、サービス開発を行っています。
皆様、MVCモデル(Laravel関係なく)を採用している場合、
1人で1機能を開発する場合は、どこから着手されますか?
私自身、
- モデル
- コントローラー
- ビュー
の順番で着手をするのが実装しやすいです。
が、今のチームで、ビューから作成することになり、
非常にコーディングしにくいです。
ビューだけ作って一度コードレビューが発生します。
皆様のご意見をお伺いできればと思います。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答4件
6
ベストアンサー
小さなシステムしか作ったことがない者の個人的な意見ですが、私がシステムを組む場合は、初期化や入力や集計処や出力などの各種の処理を縦軸に、ファイルや画面デザインや印刷デザインを横軸に並べたプロセスマトリックスチャートを作ってから開発します。そしてそれぞれのファイルや画面デザインなども大まかなデザインを描いておきます。開発しながらの多少の仕様変更もおこりますが、システムの全体像が見えていれば修正点と影響箇所が見渡しやすいので、臨機応変に対処できます。
ちなみに6年前にAccessで開発したe-ラーニングシステムのチャートが下図です。
フレームワークによるMVCモデルではないですが、システムの全体像を俯瞰する意義は共通すると思います。
一応、もう少し機能を単純化したIIS上で働くASPスクリプトでWebシステム向けのバージョンも開発しました。
その手順からすれば、モデルもビューも同様にある程度形になっていた方が、処理で扱いやすいと思います。
質問の内容によれば、モデルの正規化やグループ集計用のキー項目の工夫などの必要性が後で浮かび上がってきて、蒸し返しが多発する可能性があり、その点をご心配なのでしょう。
逆にビューを明確にするとシステムの目的が理解しやすくなるので、それを狙ってビューを最初に固める方針ではないかと思われます。ビューもモデルもその他のシステムのエンティティもある程度は形にしておくとよいでしょう。さらに、改善点に気付いたときにその修正箇所と影響範囲を見通せるように、モデルとビューとそれに対応するコントローラとの関連性をチャート化しておけば、ある程度はオーバーヘッドも想定して手当てできるのではないでしょうか。
投稿2017/02/28 12:09
編集2017/02/28 13:32総合スコア2285
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
総合スコア200
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
1
自分は普段Cakephpを使って、基本的には1機能を1人で開発していますが、あまりMVCのどこから作るという意識をしたことはないです。それよりは、その機能を実現する上で実装方法が不明確だったり、難易度が高そうなところから作っていきますね。または、その機能の中核をなす部分から実装します。それらを後回しにして、結局うまく行かなかった場合、手戻りが発生しそうだからです。
また、中核部分を最初に作るとデバックしやすいというのもあると思います。
例えば...
UIがメインの機能であれば、まずViewをしっかり作って、関係者にレビューしてもらうとか
課金などのビジネスロジックが重要な機能なら、Modelをしっかり作るとか
※なお、MVCどれか一つだけ作っても動かないので、どこからちゃんと作り込むかというレベルです
ある程度、中核が決まったら、細かいUI調整とか、バリデーションとか、ロギングとか肉付けしていくような感じでやってます。
今のチームで、ビューから作成することになり、 非常にコーディングしにくいです。
ビューだけ作って一度コードレビューが発生します。
運用がうまくいかないのであれば見直した方がいいかもしれませんね。
作っているシステムや体制にもよるかもしれませんが、ビューだけ作ってレビューしてもらっても微妙な可能性はあるかもですね(自分のプロジェクトでそれはやらないです)。なぜそうしているのかが書かれていないのでなんとも言えませんが...
投稿2017/03/01 00:47
編集2017/03/01 00:55総合スコア6586
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
1
私もまだまだ勉強中ではありますが、職場で FuelPHP を使ってて、だいたい Controller から着手します!
Controller はユーザーからのリクエストを扱う層で、作成するコンテンツの核となるロジックを書くので、そこを先にレビューしてもらえば戻り作業が少なくて済むからです。
デバッグも容易ですし。
View から作成しても View(ブラウザ)からの入力を受け取るのは Controller で、Model のデータを呼び出す処理も Controller に書くので、 Controller からレビューしてもらう、が適切かなと思います。
まぁでも View からでも Model からでも同時並行でもいいとは思いますが。
投稿2017/02/28 16:51
総合スコア35
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
受付中
[php][javascript]ボタンが押されたかどうかを検証するページを作りたい
回答1
クリップ0
更新
2023/06/01
Q&A
解決済
PHPで「+」を文字列として認識させる方法(暗号化と復号)
回答2
クリップ1
更新
2023/06/01
意見交換
クローズ
ブラウザーバックを効かないようにする方法はありますか。
回答23
クリップ6
更新
2023/05/13
Q&A
解決済
Uriの中身(存在)チェックのやり方について
回答2
クリップ0
更新
2023/05/26
意見交換
受付中
大規模言語モデル ファインチューニングの方法
回答2
クリップ0
更新
2023/06/01
Q&A
解決済
Javaでの不具合となります。
回答1
クリップ0
更新
2023/05/29
意見交換
受付中
Wordpressのphpファイルにデータベースの接続情報を直接記入しても大丈夫なのでしょうか。
回答39
クリップ3
更新
2023/05/25
同じタグがついた質問を見る
Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。
MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。
PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。