人それぞれMVC


こんにちは!
今日はMVCのおさらいについて他の方の記事を参考にして、自分の頭に落とし込んだ知識を自分の言葉でアウトプットしていきたいと思います。

Ruby on Railsでオリジナルアプリケーションを作成しましたが、MVCって何??って聞かれて言語化できないような気がしたので記事にしてみました。

フレームワークとは

プログラミング手法の1種であるMVCは、多くのフレームワークで採用されております。
そもそもフレームワークって何ですかって聞かれると言語化できないので、そこからアウトプットします。
フレームワークはWebアプリケーションの作成を容易にしてくれる仕組みです。
Webアプリケーションにおいて、必要となる作業やリソースがすでに標準装備
されてあるものと考えればいいでしょう。
RubyだとRuby on Rails、PHPはLaravelといったところでしょうか。

MVCそれぞれ

フレームワークにはwebアプリケーション作成を容易にしてくれるMVCという機能が標準装備されております。MVCのおかげでWebアプリケーション作成の際に必要な機能の処理の一部を分類し分けることで、保守性や可読性の高いコードを維持することができます。

MVCはそれぞれ
「M」はModel、
「V」はView、
「C」はController
の略となります。

それぞれ見ていきましょう!

Model

Webアプリケーションにおけるビジネスロジックを定義します。
いきなりビジネスロジックとかわかりません。
簡単に言うと「データベースとやりとり行う」部分です。

ECサイトにおける購入リクエストに対して、商品が購入可能かどうかをチェックするというデータの整合性の確認や、日時の取得の際にユーザーが見やすいようデータを加工(日時変換)したりします。

これらをModelに定義しておくことでデータベースにあるテーブルを
フレームワークで管理できるようになります。

View

Webアプリケーションにおける実際にクライアント側に表示される見た目
の部分です。

Controller

クライアント側からリクエストに対する処理をまとめて用意し、
クライアントにレスポンスを返します。
また、レスポンスに必要なデータがあればModelを介して
データベースからデータを持ってきます。
あくまでデータの用意がControllerの仕事なので、
データの加工などビジネスロジックはControllerには
記述しません。

MVCは考え方

Ruby on Railsを用いたオリジナルアプリケーションを作成した際に、文字数制限をModelに記述しました。文字数制限はviewに記述したよって方もおられました。不正なデータをviewで査定して、以降の処理を行わせないためらしい。これは僕の予想ですが、データベースへのアクセスが減るから、負荷もかからないとかそんな理由もあるのかな?
MVCは個人、チーム、作成したいWebアプリケーションによって考え方が異なってくるのだなあと思い、やっぱりプログラミングは面白いですね。