新卒Web開発者tungsten0099のアウトプット置き場

日々のアウトプットを言語化するために運営しているブログです

レガシーなMVCサービスに(なんちゃって)オニオンアーキテクチャを導入中

前提

自身が所属している企業には創業時からのレガシーなサービスが存在しています。レガシーなので当然古き良きMVCパターンが採用されており、MVCの例に漏れず1000行を超える神Controllerや神Serviceが乱立しています。

そんな状況で快適でストレスフリー開発などできるはずがなく、開発のメイン担当を任されたことを機にDDD、今回はオニオンアーキテクチャを導入することに決めました。

(なんでオニオンにしたかはまた別途記事で書こうかなと思ってます)

 

やっていること

簡単な機能(ひとまとまりの処理)から少しずつリファクタリングしています。現状のコードはテストも十分にできないようなスパゲッティぶりだったので、頭を抱えながらの実装です。

とは言ってもリファクタリングチームを発足したわけでもないので、日々の開発タスクをこなしつつちょっとずつ実装を進めている感じです。(側から見ると多分超スローペースです)

悩みとか

↑の見出しでちょっと書きましたが、現状のコードが恐ろしいほどの複雑さを抱えているので、クラスの責任をきちんと整理して要件を再定義することにも一苦労です。

ほぼ愚痴ですが、何を意味するのかわからない変数だったり 責務が多すぎる便利メソッドだったりが多く、簡単な機能でこれならあの複雑な機能はどうなるんだろうか...と戦々恐々としています。

また、自身の巻き込み力が未熟だったり、他のメンバーの興味をうまく誘うことができなかったりで仲間がおらず...1人黙々とするのも悪くはないのですが、他チームが楽しそうにリファクタリングしているのを見たりすると泣きそうになります。

これからの展望とか

最終的な目標は結局どこまで行ってもリファクタリングなので、インプットと想定されるアウトプットを定義するテストコードを最初に書いてから実装しておけばよかったなと後悔しています。というか今からでも遅くはないので書きます。いわゆるTDDという奴ですね。(間違ってたら許して)

 

一年前、新卒ピチピチ未経験エンジニアだった頃は「DDDとかTDDとか知らんけどいつかやればいいっしょ」と呑気に考えていた節もありました。

しかし、いざ対面してみると、想像するしかなかった空想上の事象や出来事が目の前に現れてくれたようで非常にワクワクしています。不安もたっぷりありますが。

また一年後、「レガシーシステムにオニオン導入してやったぜ」と肩で風を切って街を練り歩けるようになることを願いながら今年一年も精進していきます。