こんにちは、農業系プロダクトの開発を担当している糸井です。
弊社ではピンポイントタイム散布(以下、PTS)という防除のデジタル化サービスを展開しております。
PTSシステムのバックエンドではSpringBootを使用しております。
立ち上げ期より、既存の農業系プロダクトの課題感をもとに改善を進めてきましたので、その軌跡をご紹介します。
前回までの記事はこちら
- ピンポイントタイム散布(PTS)でのバックエンド改善の軌跡 ~1. OnionArchitecture~ - OPTiM TECH BLOG
- ピンポイントタイム散布(PTS)でのバックエンド改善の軌跡 ~2. DDD, OnionArchitecture~ - OPTiM TECH BLOG
前回の記事では、あるべき姿と現実解をチームメンバーと相談し、方針を定めたことをご紹介しました。
今回以降はより詳細な改善事例をご紹介します。
3. PublicSetter
ドメインモデル貧血症の実装例
については以下2つの書籍をご参照ください。
改善前はほぼ全ての Domain層のEntity で ドメインモデル貧血症の実装例
の状態になっていました。
PublicSetter の撲滅とまで言ってますが、DTOなどClassをただのデータの入れ物として扱う場合には使って構わないと考えていました。
ただ、いきなりDomain層のEntityでは付けずに、DTOでは付けても良いよと言っても混乱を招いていたので、一律PublicSertterを撲滅していくことにしました。
撲滅運動の結果
2023/08/18 | 2024/07/30 | 調査 command | |
---|---|---|---|
.java の総ファイル数 |
1450 | 2171 | (*2) |
@Data の使用箇所 (*1) |
332 | 302 | (*3) |
@Setter の使用箇所 |
28 | 35 | (*4) |
*1: @Data
は @Setter
を含んでいるので、@Data
も調査対象としています。(@Data (projectlombok.org))
*2: $ find . -name "*.java" -type f | wc -l
*3: $ gg -c "@Data" | wc -l
*4: $ gg -c "@Setter" | wc -l
.java
のファイル数は約 700 枚ほど増えてますが、Public Setter の数は 360 から 337 に減ってます。
ということで、とりあえずドメインモデル貧血症の改善に対する布石は打ててきました。
つづきはこちら (2025/3/13 追記)
ピンポイントタイム散布(PTS)でのバックエンド改善の軌跡 ~4. Repository~ - OPTiM TECH BLOG
最後に
OPTiMではチームで協力し、難しく大きな課題を楽しみながらチャレンジしていきたいというメンバーを大募集しております。 ご興味がありましたら、下記フォームよりご応募ください。