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

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

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

前提

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

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

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

 

やっていること

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

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

悩みとか

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

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

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

これからの展望とか

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

 

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

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

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

AIITに科目等履修生として入学しました。

タイトル回収

タイトルの通り、AIIT(都立産業技術大学院大学)に2022年度1-2Q科目等履修生(単位バンク)として申し込み、無事入学(?)許可が降りました。なぜ大学院へ?なぜAIIT? 等の背景についてと、体感した合格率なんかについて思考整理がてら書いていこうと思います。

背景の背景

そもそも僕は文系学部出身のエンジニアです。新卒でエンジニアとして今の会社に入社したので、CS関連の知識の無さに関してはちょっとした自信を持っています。

そんな吹けば飛んでいくような なんちゃってWeb開発者の僕ですが、入社前から密かに抱いていた「情報系の学部行っておけばよかった...」という後悔の念は入社してからも日に日に増してきました。

入社後~タスクを回していけるまで面倒を見てくれた上司が情報系出身の知識お化けだったこともあり、2年目こそ今までの鬱憤(?)を晴らそうじゃないか、ということでこの度AIITで情報系学位取得への道を歩み始めることにしました。

なぜ大学院か?

社会人が情報系学位を取得するとなるとかなり選択肢が限られてきます。詳しい選択肢については↓の記事に大変わかりやすくまとめられているので割愛しますが、

qiita.com

正直調べるまでもなく大学院に決めていました。なぜかと言いますと、

  • 正直学部の4年は長すぎる
  • 今後グローバルなテックジャイアントで働きたくなった時、修士の方が応募時に有利と聞いたことがある(特にアメリカ)
  • もう一個学士とってもな〜というフヤフヤな感情

の三つが僕を突き動かしたからです。

なぜAIITか?

↑の記事にもあるように、働きながらの大学院となると下記が大体の候補なのかなと思います。

  1. 京都情報大学院大学
  2. 神戸情報大学院大学
  3. 東京都立産業技術大学院大学(AIIT)
  4. 北陸先端科学技術大学院大学(JAIST)

この中でもAIITは学費が比較的安く、科目履修生制度もあったので、「これは行くしかない」と猪突猛進気味にAIITへの出願を決めました。

 

海外転職を目指されているエンジニアの方なら気になるであろう「学位名」の問題ですが、ガッチガチのSWEでない限りAIITの学位はクリアしているかと思われます。(現在シリコンバレーにてバリバリのエンジニアとして働かれている酒井潤さんはCSではないMaster of Infomation....系の学位で入社されていますし)

AIIT 科目等履修生の合格率について

上記合格率について公式では当然発表していないですし、言及している記事が自分では見つけられなかったので、ここに書き残しておこうかと思います。(問題になってもアレなので、合格掲示板から算出できる正確な値ではなくニュアンス程度ですが....)

僕自身新卒2年目のエンジニアで技術力も低く、開発者として未熟も未熟だと思っていましたが履修申請した科目は全て通っていました。

周囲でもほとんどの人が通過しており、合格率はかなり高いのではないかな〜と思います。AIITの門戸は広く開かれているのですね。

最後に

と、なんだかんだ最初の一歩で挫けずに進むことができそうなので、仕事も続けながらAIITの単位、最終的には学位を取得して情報系学位に対する鬱憤を晴らすと共に、自身のキャリアの可能性も大きく広げていければと思っております。