こんにちは!
メールディーラー開発課のymyhero7です。
先日、弊社の勉強会で「不吉コードの大掃除」というテーマで発表をしました。
そこで話した、レガシーな社内向け機能を改修したエピソードをご紹介します!
改修することになった経緯
メールディーラーの社内向け機能では、メールディーラーを使用されるお客様のアカウント設定やメールボックス開設などの事務作業を行うことができます。
この事務作業を、従来は、メールディーラーの社内向け機能と販売管理システムの両方で重複管理していました。
そのため、データの不一致や作業コストが発生してしまっていました。
この問題を解決するため、販売管理システムに登録した情報をAPIを介して自動的にメールディーラーに反映できるように社内向け機能を改修することにしました。
既存コードの問題点
改修のため既存コードを確認してみると問題点がたくさんありました!
- ビューロジックとビジネスロジックが混在している
- ビューロジックとビジネスロジックが適切に分離されておらず、1つのファイルに混在して書かれていました
- 共通関数が1つのファイルに大量に書かれている
- 共通関数群が書かれた約7000行の巨大ファイルが存在していました
- 1つの関数が複数の役割を持っている
- 例えば、バリデーションとデータ整形の両方を行っている関数がありました
このような問題から、可読性が低く、自動テストの作成も困難な状態でした。
そのため、既存コードを使い回すのではなく、思い切って社内向け機能を作り直すことにしました!
改修の方法
以下の手順で改修を行いました。
ユースケースと必要な処理の整理
既存コードから、ユースケースごとに必要な処理を洗い出し、実装するべき処理を明確にしました。Laravelを活用し、ADRパターンで実装
既存コードはノンフレームワークでしたが、今回はlaravelを使用してADRパターンで実装しました。
LaravelとADRパターンは、UI刷新の際に使用しているので、その時の経験を活かすことができました。 UI刷新について、詳しくは以下をご覧ください。
成果
今回の改修により、次のような成果を上げることができました!
可読性の向上
ファイルや関数が適切な単位に分割されたため、可読性が向上しました自動テストの実施
全ての処理で自動テストを行うことができるようになりました開発スピードの向上
Laravelの使用と自動テストにより、スピード感を持って開発を進めることができました
まとめ
レガシーな社内向け機能を改修したエピソードをご紹介しました。
開発に携わったメンバーからは、
「既存処理を使い回さず、勇気を持って作り直してよかった」
「社内向けシステムであっても保守性を考えることは大切だ」
という感想が挙がっていました!
今後も、このような生産性向上を意識した開発を心掛けていきたいと思います。
年に1度の技術イベント「RAKUS Tech Conference」を開催します!!
今年もラクス開発本部主催の技術カンファレンス、「RAKUS Tech Conference 2024」を開催します!
「RAKUS Tech Conference」は、SaaS開発における取り組みや知見を紹介する、ラクス開発本部主催の技術カンファレンスです。 ラクス開発本部のミッションに込めた想いをエンジニア/デザイナーが生の声でお届けします。
皆さまのご参加、お待ちしております!
techcon.rakus.co.jp