# Template Engine (ERB) ベースのRailsアプリのモジュール / モノレポ化 ## *背景* - 取扱うメディアの増加に伴う, View TemplateのCouplingが発生し多くのDevelop / DeploymentのCostが発生している。 ## *目標* - Applicationをモノレポ化し共通のComponentsを抽出させるような形で個々のユニークなアプリから参照させ、couplingを解消させる。 ## **共通要素** - ## *構想 1* 共通のComponentsをGem化して、各メディアにGemとしてImportして利用するような形で利用する。 ```txt - root - commons (gem) - media-a - media-b ``` ### 🟢 利点 - No more coupling ### ❌ 欠点 - ComponentsをGem化するに当たりVersioningをする必要がある。 ### 🛠 工数 10 - 14日 (目安) ### 補足 - 特異性のないものをMergeしていく - 環境変数でstatic fileの参照等 ## *構想 2* 共通部をアプリケーションとして独立させ、各メディアの固有部分をThemeとして開発するようにする. (Shopify, Wix のようなイメージ)。 ```txt - root - core - ... - ... (Core App) - themes - media-a ... - media-b ... - media-c ... ``` イメージ 👇 ![image](https://i.gyazo.com/f1702d8284de7a65e61128810eccdbc8.png) ### 🟢 利点 - No more coupling - 各テーマを個別に開発することができるのでUserのNeedsをDeliveryするのが早い ### ❌ 欠点 - はじめにCoreのApplicationを開発する必要があるので工数がかかる。 ### 🛠 工数 15 - 20 日 (目安) ## *構想 3* ### 🟢 利点 ### ❌ 欠点