質問: お世話になっております。 現在、PHP(Laravel 5.2)で、サービス開発を行っています。 皆様、MVCモデル(Laravel関係なく)を採用している場合、 1人で1機能を開発する場合は、どこから着手されますか? 私自身、 1. モデル 2. コントローラー 3. ビュー の順番で着手をするのが実装しやすいです。 が、今のチームで、ビューから作成することになり、 非常にコーディングしにくいです。 ビューだけ作って一度コードレビューが発生します。 皆様のご意見をお伺いできればと思います。
回答: 小さなシステムしか作ったことがない者の個人的な意見ですが、私がシステムを組む場合は、初期化や入力や集計処や出力などの各種の処理を縦軸に、ファイルや画面デザインや印刷デザインを横軸に並べたプロセスマトリックスチャートを作ってから開発します。そしてそれぞれのファイルや画面デザインなども大まかなデザインを描いておきます。開発しながらの多少の仕様変更もおこりますが、システムの全体像が見えていれば修正点と影響箇所が見渡しやすいので、臨機応変に対処できます。 ちなみに6年前にAccessで開発したe-ラーニングシステムのチャートが下図です。 !イメージ説明 フレームワークによるMVCモデルではないですが、システムの全体像を俯瞰する意義は共通すると思います。 一応、もう少し機能を単純化したIIS上で働くASPスクリプトでWebシステム向けのバージョンも開発しました。 その手順からすれば、モデルもビューも同様にある程度形になっていた方が、処理で扱いやすいと思います。 質問の内容によれば、モデルの正規化やグループ集計用のキー項目の工夫などの必要性が後で浮かび上がってきて、蒸し返しが多発する可能性があり、その点をご心配なのでしょう。 逆にビューを明確にするとシステムの目的が理解しやすくなるので、それを狙ってビューを最初に固める方針ではないかと思われます。ビューもモデルもその他のシステムのエンティティもある程度は形にしておくとよいでしょう。さらに、改善点に気付いたときにその修正箇所と影響範囲を見通せるように、モデルとビューとそれに対応するコントローラとの関連性をチャート化しておけば、ある程度はオーバーヘッドも想定して手当てできるのではないでしょうか。