外部ベンダーから内製化した3年間 — 年間480万円の固定費をゼロにするまで

医療系スタートアップで外部ベンダーからシステムを引き継ぎ、内製化を達成した実録。技術的負債の解消、孤独との戦い、年間480万円の固定費をゼロにするまでの全プロセス。

日付が変わっていた。誰もいないオフィスで、画面にはまたエラーが出ていた。

直す。別のエラーが出る。また直す。そのくり返し。同じレベルで話せる人間がそばにいない。大変さをわかってくれる人間もいない。ただ、止まるわけにはいかなかった。

これは外部ベンダーから完全内製化するまでの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年かけてようやく腑に落ちた気がしている。

内製化を迷っている方がいれば、ぜひ背中を押したい。最初の半年は本当につらい。でも、その先は全然違う景色が見える。