モバイルからみたControllerの役割
はじめに
こんにちは、うらっしゅです!ラブグラフでエンジニアインターンとしてジョインし始めて、業務としては初めてRuby on Railsを触っていくことになります!(ちなみに、人生で初記事です!!)
高校生の時と今ではMVCの見方が大きく違っていたのを思い出して、そのことを書こうかと思います!
Railsに始めた触れた認識
高校生の時にProgateでRailsを触ってみて、MVCに触れました!!
当時の認識は以下の通りです。
当時の認識
MVCとは
- Model : データモデルか。(型を定義してバリデーションするとこね。)
- View : ビューね。(見た目を書くとこね。)
- Controller : コントローラ...? (あ、機能を実装するとこね...!!)
パッと見て違和感はないかもしれませんが、ドメインロジックや責務の話を全く知らないので、通称FatControllerをやりかねません。
(多分、初見でProgateのRailsコースをやった人ならControllerに全てを書きたくなるんじゃないんですかね。)
モバイル開発で出会ったアーキテクチャ
私は半年ほど前までFlutterのエンジニアインターンをしていたので、アーキテクチャやプログラミングの原則的なお話に触れることができました!
あと、モバイル開発ではMVVMがとても人気で採用されがちです。その中で機能と見た目は分割すべきだよね。とかレイアードアーキテクチャの概念を学びました。
MVVMとは
Model: ロジック
ViewModel: Viewの状態管理, Modelとやりとりするとこ
View: 見た目
これってもしかして....
レイアードアーキテクチャの中でもUseCaseやService層の役割というのは、Modelを呼んでいたり、データベース周りを呼び出したりであるユースケースを実現するための"繋ぎ込み"や"制御"だと考えています。
再び、Railsに戻ってMVCを見てみると感じたんです。
これってもしかして...
「UseCase層の役割と合わせた感じがMVCのコントローラとちょっと似ているかもしれない」
ちょっとズレてるんですけど、ここで伝えたいのはコントローラは本来機能を書くよりは制御に近いニュアンスで実装すべき。
ということがわかったということです。
今の認識
以下が今の認識です。まだまだ未熟ながらアーキテクチャの話は結構好きなのでこれからもどんどん知りたいと思っています!!
- M : モデル (ビジネスロジックなどが凝集されているとこ)
- V : ビューね。(見た目を書くとこね。)
- C : コントローラ (繋ぎ込みするとこ)
Discussion