OpenWork Tech Blog

OpenWork を運営するエンジニアによるテックブログです。

リファクタリングプロジェクトがいかに素晴らしいかを伝えるための記事

f:id:m_nishikawa_ow:20210914111841p:plain
アイキャッチ猫

こんにちは、Webアプリチームの西川です。異世界転生したら猫の爪をうまく切れる能力がほしいです。

オープンワーク株式会社に入社して10ヶ月ほど経ちました。
入社してから現在までリファクタリングプロジェクトに所属しています。

リファクタリングプロジェクトはエンジニアにとって非常に魅力的なプロジェクトなので、その魅力をアピールしていきたいと思います。

リファクタリングプロジェクトとは

以下の記事に記載されている通り、技術的負債を解消していくためのプロジェクトです。

techblog.openwork.co.jp

技術的負債とは

ビジネスにとってチャンスを失わないためにもなるべく早くリリースすることが大事であり
ソフトウェア開発をするうえで、常に完璧な設計をすることは現実的ではありません。
その結果、技術的負債が生まれ、その負債が理解を阻害し、開発の遅延や品質の低下を招きます。

また、技術的負債には種類があり、以下の四象限に分けられます。

f:id:m_nishikawa_ow:20210914112102p:plain
技術的負債の四象限

(引用元:https://bliki-ja.github.io/TechnicalDebtQuadrant/

リファクタリングプロジェクトの取り組み

リファクタリングプロジェクトと一言で言っても、会社や状況によって取り組みが異なるかと思います。
オープンワークで実施しているリファクタリングプロジェクトの取り組みは以下です。

1. 負債を溜めにくい体質づくり

テスト駆動開発 x ペアプログラミングを広めることにより、負債を溜めにくい体質を作れるのではないかと考えています。

「無鉄砲な負債」が発生しそうな場合は依頼をもらい、依頼者と一緒にテスト駆動開発をペアプログラミング(およびモブプログラミング)で実施しています。

また、アーキテクチャについても巨大なモノリスが出来上がってしまっているため
モノリスからマイクロサービスへの転換を図っています。
いきなりマイクロサービスに進んでしまうと、越えなければいけない壁が多く、失敗するのが目に見えているので
まずはモジュラーモノリスから入り、ストラングラーアプリケーションパターンと同等の効果が得られるかを検証中です。

2. 短期負債の返済

「慎重な負債」が発生してしまった場合も依頼ベースで対応しています。
「慎重な負債」は発生してもよいので、悪いことだというイメージを無くし、依頼をしやすくするように努めています。

3. 長期負債の返済

FatControllerや神クラスなど通常のプロジェクトでは手が付けられなくなってしまった負債に手を付けます。

リファクタリングプロジェクトのメリット

私が感じているリファクタリングプロジェクトのメリットは以下です。

1. リファクタリングに集中することができる

通常のプロジェクトでもリファクタリングは可能ですが
余力の推測ができないので、技術的負債に計画的に着手することが難しいです。

2. きれいなコードの必要性を体感できる

技術的負債に直接対峙してもらうことにより
きれいなコードが何をもたらすかを体感してもらうことができます。

3. エンジニアの登竜門

通常のプロジェクトではリリースを優先しコーディングや設計に時間をそこまで使えないことがあります。
特に開発経験が浅い内は動作するコードを書くことで手一杯なため、きれいなコードを書く余裕がないことが多いかと思います。
リファクタリングプロジェクトであれば、コーディングや設計に時間をたっぷり使えるので、コーディングや設計の力を身に付けるのに適していると感じています。

4. 技術的負債に向き合うという意思表明になる

個人的な意見になってしまいますが、その会社が技術的負債にどう向き合うかは転職する際に重視しています。
面談の際にも、リファクタリングプロジェクトの話題が弾むことがあり
エンジニアの興味を引けるネタにもなります。

リファクタリングプロジェクトのデメリット

私が感じているリファクタリングプロジェクトのデメリットは以下です。

1. ビジネスに直接プラスの影響が出にくい

とはいえ、ここでリソースを割かなければ、問題を後回しにしているだけなのでいずれにしろ必要なコストだと考えてよいかと思います。

最後に

リファクタリングプロジェクトの魅力を感じていただけたら幸いです。

リファクタリングプロジェクトを通じて設計力を磨きたい方、是非一緒に働きませんか?
vorkers.jp