🔖

今一度MVCの仕組みを振り返る

2021/06/01に公開

およそ3ヶ月ぶりの投稿です。

この度、WealthPark社でエンジニアインターンとして働かせて頂ける事になったのでついに記事投稿を開放したいと思います。以前同様に平日は毎日記事を挙げていくのでよろしくお願いします!

https://wealth-park.com/ja/

さて、インターンが始まって以来、一番衝撃だったのは個人開発とは比べ物にならない構造の複雑さでした。そこで今日は改めてMVCの仕組みを振り返り、階層構造の深さに脳みそが搾り取られないよう備えておきたいと思います。

MVCとは?

MVCとは、プログラミング手法のアプローチの一種で私の参加する開発に多く用いられているRuby on Railsでも採用されている手法です。Webアプリケーションを動かすために必要な処理の一部を分類し分けることで、保守性、可読性の高いコードを維持できます。

「M」はModel

Webアプリケーションにおけるビジネスロジック(データベースから取得してきた値を加工するメソッドや、レコード検索の条件が書かれたメソッド、データを保存する前に加工するメソッドなど)を定義します。

「V」はView

実際にクライアント側に表示される見た目の部分です。Railsではhtml.erbのようにhtmlにerbという拡張子を付随させることで、変数をHTMLファイルで読み込めるようになります。

「C」はController

クライアントからのリクエストに対して適切なレスポンスを返すことや、そのレスポンスに必要なデータの用意を行う。あくまでも用意するだけが責務なので、データの加工など複雑なロジックはControllerには書きません。

順番としては、

(Routing) → Controller → Model → Controller → View

神経系・膝蓋腱反射 実験:落下する定規をつかまえよう! Fukuchi Takahiro

これです!

バックエンド開発におけるMVC

近年、さまざまなクライアント側フレームワークが登場したことによって、他のWebアプリケーションとネイティブアプリケーションの間でバックエンドサーバ―が共有されることが増えてきました。
現在私がインターンをしている会社でもそうでこのバックエンドサーバ―の開発にRailsが用いられています。

MVCのVはナシ

サーバー側のみの機能を開発する事が求められるので、Viewは必要ありません。
ただ、APIとしてのパフォーマンスが物を言うので、ControllerとModelの質が大切になります。

Action Controller の重要性

Action Controllerとは、Ruby on Railsのアプリケーションにおいて、コントローラーの機能を実現するために必要なオブジェクトのことです。細かいデータの処理はModelに切り出し、それらのメソッドをControllerで呼び出します。

個人開発ではここまでで良かったのですが、チーム開発そして商業用のサービスとなるとModelに書き出すだけではコードの収まりがつきません。そんな時にはサービスクラスです。

サービスクラス(Service Class)

Controller内のコードの可読性を高めるために用いる概念です。モデルに記述する処理は他にも多くあり、モデルの記述は肥大化しやすいという注意点があります。そこで、肥大化を避ける意味でも、複雑な処理はサービスクラスに書き出します。

Controller → Model → Service Class

この順番に処理の単位が小さくなっていきます。ぜひ使いこなしたい。。

Summary Of The Day (SOTD)

投稿復帰第一弾の記事ですが思いのほかシンプルな記事となりました。
これから開発に参加させてもらうにあたって新しい事をどんどん吸収している最中ですが、時には立ち止まってこれまでに学んだ事を振り返る時間を作りたいと思います。

それでは、Sweet Dreams...

Discussion