投稿日:

MVCモデルを勉強しました

当社に就職し、技術部でPHPプログラミングの業務をさせて頂いて早2ヶ月半が経ちました。前の勤務先では、システムを運用する側の仕事でしたので、専門的にシステム開発をするということはありませんでした。またPHP言語も入門書に触れた程度で、本格的に取り組むのは今の仕事が初めてになります。今回の記事では、こんなシステム開発初心者の僕がこんなこと勉強して便利だなと思うようになったことについて書きたいと思います。
当社では、PHP用の開発フレームワークとしてCakePHPを使っていますが、そこで出てくるのが、「MVCモデル」という開発手法です。今まで耳にする程度で理解しようともしなかったこのMVCモデルとは、どんなものなのでしょうか。今までプログラミング経験はある(といってもスクリプト程度の簡易なものですが)ものの、フレームワークを使った大規模なプログラミングの経験はなく、コードを役割ごとに分けて書く習慣が全くなかった僕としては、MVCモデルが出てきた時、逆に頭の中が混乱してしまいました。

混乱した状態のまま実務でMVCモデルを使い始めることになりましたが、最初はただマニュアルに沿って言われるままにコードを書いていく毎日でした。コードの記述方法も初めて見るものばかりで、どういう目的でコードが書かかれているのかを考える余裕も持てず、とにかくコードの書き方を覚えようと必死に取り組んでました。
実務をやり始めて数週間が経つと、全体的な書き方のルーチンのようなものが少しずつ見え始めてきました。そこで感じたものは、素のPHPを学習しているときに感じたコードの記述の見にくさがないということです。素のPHPでは、(僕の書き方が悪いということもあると思いますが)コードの中に、htmlの記述が混ざりこみ、またデータベースを読み込む部分やチェックする部分も入っていたりして、とにかく読みづらい、わかりづらいということです。でもCakePHP(MVCモデル)では、M(Model)とV(View)とC(Controller)を最初から分けて記述しているので、コードが見やすい、あとで読み直すときに読みやすい、ということを実感できるようになってきました。
そんな実感できたことが、次の3つです。
  • DBと連携しデータアクセスを行う部分は、モデル(Model)に記述する(実際にはサービスコンポーネントに書いてることも多いのですが。。)
  • html出力とかの見栄えの部分は、ビュー(View)に記述する
  • 処理の窓口、司令塔の役割を担い全体を制御する部分は、コントローラー(Controller)に記述する
これで、MVCで分離されていることのありがたみを少しは実感しながらプログラミングができるようになりました。
MVCモデルの処理の流れをこの機会に復習しておきます。
  1. Controllerはリクエスト情報を基にModelに処理を依頼する。
  2. Modelはデータと連携して処理を行い、処理結果をControllerに返す。
  3. Controllerは返ってきた処理結果データをViewに渡す。
  4. Viewはデータを基にHTML出力処理を行う。
MVCが実感できるようになったとはいえ、それらを助けるモジュールである、サービスコンポーネント,ビヘイビア,ヘルパーなど、まだまだ実際の動きがイメージできていない機能が沢山あります。これから数多くの実務に携わりながら、もっともっと理解を深め、効率的にコードが書けるよう頑張っていきたいと思っています。