2019-02-04Rails:出力処理をViewModel層に切り分ける!コントローラをスリム化させるために取り入れた「ViewModel層」について整理します。機能追加を繰り返した結果、コントローラがすっかりスパゲティ状態になってしまった。コントローラの行数がすごいことになっている。こんな経験ありませんか?私はあります。ダイエットしているのに...それなりのダイエットはしていました。書いたりしていました。それでも、コントローラのスパゲッティ化・肥大化が起こってしまったんですね。複雑な出力処理が原因!その原因は「行き場のない複雑な出力処理」でした。収めるのは難しいです。Service層は「入力処理」に専念した方が、設計上望ましいとされているので、ここに複雑な「出力処理」を書くのは微妙。結果としてスパゲッティ化・肥大化を招いていました。変更に強いアーキテクチャについてIT業界19年目の僕が超ザックリ説明する』を参考に、複雑な出力処理は「ViewModel層」に書いていくことにしました。Service層と同じで、違う点は「出力処理」を切り出す場所という点だけです。Rails』を参考に次のようにしています。フレームワークを導入した時にも活用できるアーキテクチャです。あるが、まさにそれと同じようなイメージだ。使うときにもよくマッチする。バインディングするだけで画面に値が反映される。分かりやすくなるしラクになるので、オススメのアーキテクチャパターンの一つだ。endendコントローラでの呼び出し例は、こんな感じ。39行」に削減しました。コード行数だけでなく、出力ロジックの方向性が一方向になったので、メンテナンスもしやすくなりました。Railskei178兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。コメントをキャンセルメールアドレスが公開されることはありません。Authorkei178兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。Colorlib.com.HomeProgrammingAccounting/TaxBooks。