10xLab(GaiaXの福岡開発拠点)
Railsを使ったBtoB向け自社プロダクトを新規開発
開発のなかでアーキテクチャがどう変遷したか
構成1
所謂MVC
モデルとテーブルは1:1
コントローラとモデルは1:多
課題
コントローラが太っていく
保守性、可読性の低下
モデルにビジネスロジックを移していく
1つのモデルに紐付いていない処理はどこに書くのか?
構成2
MVC wiht Logic
Logic層の導入
データを疎結合で扱える
ビュー 表示
コントローラ ビューに一連のデータを渡す
ロジック 一連の処理を処理する
モデル データを保存する
サイドバー、ヘッダーなどの共通パーツに必要なデータを
用意しなければならないので面倒。
→Cellsを用意する
コンポーネントに必要な要素を切り離す
テンプレートを用意できる。
構成3
MVC with Logic and Cells
ヘッダーやサイドバーなど共通パーツのテンプレをCellsで用意する
サイドバー単位でキャッシュをクリアできる利点もある
validationをどこでするか
helperが太る…
気をつけていること
- 箱を最初に用意する(LogicとかCellsとか。中身はなくてもよい)
- 呼び出しの流れを一方向にする(ModelからLogicへの呼び出しみたいなことは絶対にやらない。LogicからModelへの呼び出しのみを許可する)
どこかで箱をまとめて再構成するフレーズが必要になるのだろうか