日付が変わっていた。誰もいないオフィスで、画面にはまたエラーが出ていた。
直す。別のエラーが出る。また直す。そのくり返し。同じレベルで話せる人間がそばにいない。大変さをわかってくれる人間もいない。ただ、止まるわけにはいかなかった。
これは外部ベンダーから完全内製化するまでの3年間の話だ。
なぜ内製化を目指したか——本部長の言葉
入社して最初に言われたのは「お金より、自分たちでやれるようになることが目的だ」という言葉だった。
当時、治験CRMのシステム一式を外部ベンダーに委託しており、月40万(年間480万)の固定費がかかっていた。問題はコストだけではない。
- スピード: 仕様変更の依頼から実装まで平均2〜3週間かかる
- 透明性: コードが完全なブラックボックスで、障害対応時に身動きが取れない
- 成長: 外注している間、社内にノウハウが蓄積されない
「このプロダクトを自分たちのものにする」。それが最初から決まっていたゴールだった。
1年目——がむしゃらに吸収するだけでよかった
最初の1年、自分はベンダーのチームに入ってタスクをこなす日々を送った。
内製化を前提に入社したのは自分だけで、向こうのメンバーは自分のことを「依頼会社から来た社員」くらいにしか思っていなかっただろう。でもそれでよかった。余計なことは考えず、ひたすら吸収することだけに集中できた。
コードの書き方、システムの構造、業務ドメインの知識。1年間は純粋に学ぶ期間だった。
転換点——「普通のこと」が転換点だったと、あとで気づいた
内製化に向けて体制が変わっていく中で、ある時期からベンダーは「何かあれば口を出す」という見守り役になった。
そのフェーズに入ったとき、自分たちだけでミーティングを開いた。議題を決めて、議論して、結論を出した。ベンダーなしで。
当時はそれが「普通のこと」に感じた。特別な達成感もなかった。でも今振り返ると、あの瞬間が転換点だったと思っている。技術的に何かが変わったわけじゃない。「自分たちだけで判断できる」という事実が積み上がった瞬間だった。
2年目——本格的な孤独との戦いが始まった
ベンダーとの関係が終わりに近づくにつれて、プレッシャーは大きくなった。
技術面の責任者として、わからないことが次々と出てきた。誰かに聞けるわけでもない。調べて、試して、壊して、直す。その連鎖を一人で回し続けた。
日付が変わってもオフィスに残っている夜が続いた。2時になった日もあった。しんどかったのは技術的な問題だけじゃない。同じレベルで話せる人間がいないという感覚が、一番きつかった。大変さをわかってくれる人がいない。その孤独は、エラーより重かった。
コード引き継ぎで直面した技術的負債
ベンダーからコードを受け取ったとき、絶望した。
- テストコードがほぼゼロ
- 環境構築手順書なし(DockerfileもCI設定もない)
- 命名規則がバラバラ、コメントも皆無
- ロジックがコントローラーに集中した典型的なFat Controller
まずやったのはコードリーディングからドキュメント化だ。動いているシステムを壊さずに理解するため、ひたすら読んでノートに書き続けた。2ヶ月かかった。
その後、Dockerでローカル環境を整備し、GitLab CI-CDを構築し直してmainマージで自動デプロイが走るフローを確立した。リファクタリングはNestJSへの移行も含め、機能を壊さないように少しずつ進めた。テストを書きながら進めることで「壊していないか」の確信を持てるようになり、開発速度が格段に上がった。
別れはあっさりしていた
最後の引き継ぎは、あっさり終わった。
「お疲れ様でした」で、急にいなくなった感じ。ドラマはなかった。残ったのは「これから大丈夫かな」という不安だけだった。
3年が経って——数字より大事なもの
結果として年間480万円の削減ができた。改修スピードは2〜3週間から即日〜3日になった。障害対応も自分たちでログを見て即動けるようになった。
でも一番の成果は、あの日以来、一度もベンダーに頼っていないという事実だ。
本部長が最初に言っていた「お金より、自分たちでやれるようになることが目的」——その言葉の意味が、3年かけてようやく腑に落ちた気がしている。
内製化を迷っている方がいれば、ぜひ背中を押したい。最初の半年は本当につらい。でも、その先は全然違う景色が見える。