株式会社Success Holders / テクノロジー事業部
対向システムのシミュレータ開発
【案件概要】 データ連携時に利用しているシステムの廃止に伴い、対向システムとのデータのIF変換を行うシステムの開発 ※自分の担当は、対向システムと模したシミュレータ(REST API)開発となります。 【担当範囲】 要件定義、基本設計、詳細設計、製造、テスト 【主な成果物】 ・基本設計書(機能一覧、DB設計、クラス一覧) ・ソースコード 【工夫・苦労した点】 本案件で初めてアプリケーションの設計から携わり、アーキテクチャや設計手法について調査・理解しながら本シミュレータの設計を行いました。 調査していく中で、似たアプリケーションの設計に用いられているドメイン駆動設計を用いて作成するのが良いのではないかという結論に至りました。 この時点ではドメイン駆動設計に関する知見がなかったため、関連する記事を見ながら見よう見まねで実装していきました。 結果として、必要最低限の機能を実装したプロタイプはドメイン駆動設計ではなく軽量ドメイン駆動設計になっていました。 これにより自分の未熟さを痛感し、アーキテクチャについての知見を深める必要があることを再認識しました。 業務内だけではドメイン駆動設計に関して理解する時間が足りないため、業務外でもドメイン駆動設計に関する書籍・記事・動画からどのような設計・実装になっていくかを学び、軽量ドメイン駆動設計となってしまったアプリの実装を少しずつドメイン駆動設計で行われるような実装に近づけていきました。 また、ドメイン駆動設計の理解を深めていくうちに、テスト駆動開発での製造が不可欠であると感じたため、プロトタイプへの機能追加の際に、書籍・動画を参考にテストから製造するように取り組みました。 その結果、完全なドメイン駆動設計にはなりませんでしたが、責務を意識したクラス設計・実装までは行うことができました。 ただ、ドメイン駆動設計でのモデリングからコードに落とし込む作業が開発初期段階から行えていなかったため、今後開発業務を行う際にはもっと初期段階からドメイン駆動設計を取り入れた設計を行いたいと思いました。 【獲得した知見や経験】 ・Spring Webを用いたREST API開発 ・Spring Data JPAを用いたDB連携 ・Spring Webfluxを用いた大容量ファイル受信 ・OAuth2.0(クライアントクレデンシャル)を用いたWebアプリ開発 ・Apacheを用いたTomcat,keycloakのリバースプロキシ構成の構築 ・ドメイン駆動設計を用いたアプリ開発 ・テスト駆動開発によるアプリ開発