技術的負債の解消、つまりリファクタリングは、ソフトウェア開発において重要なプロセスです。
しかし、リファクタリングには多くのコスト(時間・人)がかかります。特に大規模なリファクタリングは時間がかかり、新規機能の開発を進める余裕が少なくなります。そうなると、プロダクトとして前へ進むことができないといった悩みが出てきます。
オフショア先にリファクタリングを任せることで、開発チームが新機能の開発に集中することに繋がります。この記事ではオフショア先にリファクタリングを発注した際のメリットと、実際の導入事例を紹介していきます。
リファクタリングはコスト(時間・人件費)がかかる
リファクタリングには時間と人手が必要です。大規模なものであれば数年かかるのは当然で、5年以上リファクタリングを進めているプロジェクトも存在します。
チームが十分なリソースを持っていれば問題ありませんが、少人数の開発チームではリファクタリングに全力を注ぐのは難しいです。時間と人手をリファクタリングに投じても、プロダクトの売上への直接的な貢献は期待できません。
そんな際、人件費と管理コストを抑えつつ新規機能開発と並行してリファクタリングを進めることができたら魅力的だとは思いませんか?
リファクタリングをオフショアに任せた場合
1. 人件費を安く抑えることが可能
オフショア先の国によっては、エンジニアの単価が日本よりも低い場合があります。具体的には、ブリッジSEや開発者の数により変動しますが、12% ~ 40%の範囲でコスト削減が可能です。
(参考:オフショア開発でのブリッジSEの課題とキャリアパス)
2. 新規機能開発に集中できる
オフショア先にリファクタリングを依頼することで、国内の開発者は新機能の開発に専念できます。プロダクトの規模にもよりますが、新規機能の開発とリファクタリングを同時に進めることで、技術的負債を解消しつつプロダクトの価値を高めることが可能です。
3. ブリッジSEの管理コストを削減できる
新機能や機能改修をオフショア先に依頼する際、ブリッジSEは要件定義、設計、翻訳などの作業が必要となります。しかし、大規模なリファクタリングの場合、大枠の作業内容は既に定まっているため、ブリッジSEが都度、全フローを担当する必要がなくなります。
CRAIDでの導入実例
設計のリアーキテクトをオフショア先に任せている
私のチームは、ブリッジSE1名、日本人開発者1名、そしてセブのエンジニア2名、合計4名でプロジェクトの開発を推進しています。セブのエンジニアの1名にはリファクタリングの進行を依頼しており、具体的にはGo言語の設計をDDD(ドメイン駆動設計)からオニオンアーキテクチャへと変更する作業を進めています。
既存のプロジェクトにおけるリファクタリングは、エンドポイントごとに区分されているため、2週間のスプリント単位で開発するエリアやエンドポイントの数を決定しています。

リファクタリングの進行はオフショア先に一任している
私たちのプロジェクトでは、セブのエンジニアにリファクタリングを依頼する際、ブリッジSEは要件定義や設計、翻訳などの作業は行いません。
設計の変更が主な目的であり、仕様変更の必要もないため、セブのエンジニアには独立して開発を進行してもらっています。開発完了時には、PRが日本側に提出され、その内容に問題がないか最終的に確認し、問題がなければマージし、作業を完了とします。
ブリッジSEの管理コストが削減された結果
通常、ブリッジSEは開発業務の担当が少ないとされます。
しかし、CRAIDに所属するブリッジSEの多くは、上流工程から下流工程までの業務を一貫して取り組むことが可能です。
※オフショア開発契約によってはブリッジSE業務に上流工程が含まれない場合があります。
ブリッジSEの域を超えている人材が揃っているので、ブリッジSEの管理コストが削減される≒プロダクト開発のリソースが増えることに繋がります。
実際に私達のプロジェクトでは、ブリッジSEのオフショア先管理コストが削減された結果、インフラのコスト削減や新規プロダクトの開発、新規機能の開発にリソースを回すことができました。



