概要:
保育システム系の開発会社にて業務アプリのバックエンド側のシステム開発を担当。
【担当業務】
DBの設計:
バックエンド側のDBの設計、開発を担当
APIの設計:
Web、アプリと連携するAPIの設計、開発を担当し、開発スケジュールを引いて担当者のアサインを実施
新規の機能の設計:
新規機能のAPI設計、開発を実施
テスト項目書作成、テスト実施:
新規機能のテストケース作成とテストの実施を担当
主に機能テストとシナリオテストの設計
既存機能の改善:
既存機能のパフォーマンス改善やソースのアーキテクチャのリファクタリングを実施
【課題】
3層アーキテクチャでサービスクラスが肥大化しすぎている。:
私がこのプロジェクトに入った当初、アーキテクチャの構成がコントローラ、サービス、リポジトリの三層構造になっており、サービスのビジネスロジックが肥大化しすぎている&似たような処理が散在していてメンテナンス時にバグを作りやすいという課題がありました。
そこで私は以下のことを実施し解決しようとしました。
・ドメインモデルの導入の提案
最初はDDD駆動設計を取り入れて実装する方法を既存のシステムに導入した場合の実装サンプルを作成し、既存メンバーに説明会を実施。実際にソースを見てもらうことで可読性の向上の効果と肥大化が解決できることを実演しました。
【成果】
ドメイン駆動の完全導入とはならなかったものの、1部を導入に成功し、Logicクラスとfactoryという概念を取り入れ、サービスクラスの1クラスあたり4000〜6000行にまでなって肥大化していた処理をおよそ1000行弱までにまとめ、可読性を向上させてメンテナンスをしやすくすることに成功しました。