はじめに こんにちは。リンクウェルクリニックDX支援システムチームの山本です。 皆さんが普段開発しているサービスの1stコミットはいつでしょうか?私が主に担当しているサービスは2018年から開発されており、今まで経験したRailsプロジェクトの中でも比較的大規模のものとなっております。 長期間開発が続けられているRailsのサービスでよくある問題として、ファットモデル・ファットコントローラーが挙げられます。その名の通り1つのファイルのサイズや役割が大きくなってしまう問題です。 我々のサービスでは診察の「予約」を担当するReservationモデルの肥大に悩まされています。この問題に対し、packs-rails と packwerk というライブラリを利用して解決する方法を検証しました。今回はこのライブラリを利用し、モデルを適切に分割し、ドメインの境界を容易に検知する仕組みをご紹介します。
![packs-rails + packwerkでファットモデルを安全に分割する](https://cdn-ak-scissors.b.st-hatena.com/image/square/8436e458f3f0bd15438396a52026087eb1b922dd/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--WRCDW8dR--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3Apacks-rails%252520%25252B%252520packwerk%2525E3%252581%2525A7%2525E3%252583%252595%2525E3%252582%2525A1%2525E3%252583%252583%2525E3%252583%252588%2525E3%252583%2525A2%2525E3%252583%252587%2525E3%252583%2525AB%2525E3%252582%252592%2525E5%2525AE%252589%2525E5%252585%2525A8%2525E3%252581%2525AB%2525E5%252588%252586%2525E5%252589%2525B2%2525E3%252581%252599%2525E3%252582%25258B%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_34%3AKazuhisa%252520Yamamoto%252Cx_220%252Cy_108%2Fbo_3px_solid_rgb%3Ad6e3ed%252Cg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzdkNzA3MDZjNTUuanBlZw%3D%3D%252Cr_20%252Cw_90%252Cx_92%252Cy_102%2Fco_rgb%3A6e7b85%252Cg_south_west%252Cl_text%3Anotosansjp-medium.otf_30%3ALinc%252527well%25252C%252520inc.%252Cx_220%252Cy_160%2Fbo_4px_solid_white%252Cg_south_west%252Ch_50%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2ptV05Nc3ZjR184S3MzME92RVFHWjdFSzZKMXJtUl9YQmZqempsdEE9czk2LWM%3D%252Cr_max%252Cw_50%252Cx_139%252Cy_84%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)