ピンポイントタイム散布(PTS)でのバックエンド改善の軌跡 ~3. PublicSetter~

こんにちは、農業系プロダクトの開発を担当している糸井です。

弊社ではピンポイントタイム散布(以下、PTS)という防除のデジタル化サービスを展開しております。

www.optim.co.jp

PTSシステムのバックエンドではSpringBootを使用しております。
立ち上げ期より、既存の農業系プロダクトの課題感をもとに改善を進めてきましたので、その軌跡をご紹介します。

前回までの記事はこちら


前回の記事では、あるべき姿と現実解をチームメンバーと相談し、方針を定めたことをご紹介しました。
今回以降はより詳細な改善事例をご紹介します。

3. PublicSetter

ドメインモデル貧血症の実装例 については以下2つの書籍をご参照ください。

  1. ドメイン駆動設計 モデリング/実装ガイド
  2. ドメイン駆動設計 サンプルコード&FAQ

改善前はほぼ全ての 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ではチームで協力し、難しく大きな課題を楽しみながらチャレンジしていきたいというメンバーを大募集しております。 ご興味がありましたら、下記フォームよりご応募ください。

www.optim.co.jp