概要
TCO(Total Cost of Ownership)
初期費用だけでなく月次コスト・削減効果・稼働期間を揃えて比較。3年・5年でシミュレーションするのがプロの判断。
損益分岐点(BEP)
初期費用をネット月次削減額で割るだけ。シンプルだが短期回収と長期TCOは逆転することがある。
コアコンピタンス
「これが自社の競争優位の源泉か?」がMake or Buyの第一問。非コア機能は外部調達が原則。
ベンダーロックインリスク
SaaSベンダーが廃業・値上げした場合の乗り換えコストを評価する。長期的に割高になるリスクがある。
問題
SaaS型受注管理ツールへの投資可否。SaaS導入 vs 自社開発の財務的・非財務的判断。
選択肢A: 外部SaaS導入
| 項目 | 数値 |
|---|---|
| 初期費用(導入・設定) | 500万円 |
| 月額費用 | 80万円/月 |
| 予想削減工数(開発・保守) | 2名 × 月60万円 = 120万円/月 |
| 導入後の年間削減効果 | 業務効率化 +40万円/月 |
選択肢B: 自社開発
| 項目 | 数値 |
|---|---|
| 初期開発費用 | 2,400万円 |
| 月次保守費用 | 30万円/月 |
| 完成後の年間削減効果 | SaaSと同等(+40万円/月) |
| 開発期間 | 6ヶ月(この間は既存システムで運用) |
タスク1: SaaSのコスト回収期間(損益分岐点)を計算
タスク2: 3年間TCO比較(SaaS vs 自社開発)
タスク3: Make or Buyの非財務的判断要素を3つ挙げる
タスク2: 3年間TCO比較(SaaS vs 自社開発)
タスク3: Make or Buyの非財務的判断要素を3つ挙げる
ヒント(段階的開示)
ヒント1 — 方向性
コスト回収期間 = 初期費用 ÷ 月次ネット削減額(削減効果 - 月額費用)
ヒント2 — 計算アプローチ
SaaS月次ネット削減額:
削減効果 = 人件費削減 + 業務効率化
月次コスト = 月額SaaS費用
ネット削減 = 削減効果合計 - 月額費用
TCO計算:
TCO = 初期費用 + (月次コスト × 月数) - (削減効果 × 月数)
ヒント3 — Python計算骨格
# SaaS
saas_initial = 500
saas_monthly = 80
saas_monthly_savings = 120 + 40 # 人件費削減 + 業務効率化 = 160
saas_net_monthly = saas_monthly_savings - saas_monthly # 80
# 回収期間 = 初期費用 ÷ ネット月次削減
payback_months = saas_initial / saas_net_monthly # 6.25 → 約7ヶ月
# 3年TCO (SaaSは36ヶ月フル稼働)
saas_tco = saas_initial + saas_monthly * 36 - saas_monthly_savings * 36
# 自社開発(開発期間6ヶ月 + 稼働期間30ヶ月)
dev_tco = 2400 + 30 * 30 - 160 * 30
3年TCO 比較図
月次コスト推移のシミュレーション。SaaSは早期に黒字転換、自社開発は長期で逆転する。
SaaSは約7ヶ月でBEP到達。3年間ではSaaSが880万円有利。ただし自社開発は4年目以降に逆転する可能性がある。TCO分析は必ず複数年でシミュレーションすること。
模範解答 — タスク1・2: コスト回収期間 × 3年TCO
【タスク1: SaaS コスト回収期間】
■ SaaS月次収支
削減効果:
人件費削減 = 120万円/月
業務効率化 = 40万円/月
合計削減効果 = 160万円/月
月額費用:
SaaS費用 = 80万円/月
ネット月次削減 = 160 - 80 = 80万円/月
初期費用 = 500万円
コスト回収期間 = 500 ÷ 80 ≒ 6.3ヶ月 → 約7ヶ月後に回収
---
【タスク2: 3年間 TCO 比較】
■ SaaS(36ヶ月フル稼働)
初期費用: 500万円
月額費用合計: 80 × 36 = 2,880万円
削減効果合計: 160 × 36 = 5,760万円
TCO = 500 + 2,880 - 5,760 = -2,380万円(ネットで2,380万円の削減)
■ 自社開発(開発6ヶ月 + 稼働30ヶ月)
初期開発費: 2,400万円
保守費用合計: 30 × 30 = 900万円
削減効果合計: 160 × 30 = 4,800万円
TCO = 2,400 + 900 - 4,800 = -1,500万円(ネットで1,500万円の削減)
■ 差額
SaaSの方が 2,380 - 1,500 = 880万円 有利(3年間)
結論: 3年間のTCOではSaaSが880万円有利。
ただし自社開発は4年目以降に有利になる可能性がある。
def calculate_tco(initial, monthly_cost, monthly_savings, months):
return initial + monthly_cost * months - monthly_savings * months
saas_tco_3y = calculate_tco(500, 80, 160, 36)
dev_tco_3y = calculate_tco(2400, 30, 160, 30) # 稼働30ヶ月
print(f"SaaS 3年TCO: {saas_tco_3y}万円") # -2380
print(f"自社開発 3年TCO: {dev_tco_3y}万円") # -1500
print(f"差額(SaaS優位): {dev_tco_3y - saas_tco_3y}万円") # 880
# 損益分岐点(何年後に逆転するか)
print("\n--- 年次シミュレーション ---")
for year in range(1, 8):
months_active = max(0, year * 12 - 6) # 開発6ヶ月除く
saas = calculate_tco(500, 80, 160, year * 12)
dev = calculate_tco(2400, 30, 160, months_active)
status = "SaaS有利" if saas > dev else "自社開発有利"
print(f"{year}年後: SaaS={saas}万円, 自社開発={dev}万円 → {status}")
模範解答 — タスク3: Make or Buy の非財務的判断要素
1
コアコンピタンスかどうか
受注管理システムが自社の競争優位の源泉か?ECサイトのコアはマーケティング・商品企画であり、受注管理は周辺機能。非コア機能は外部調達が原則(SaaS有利)。
受注管理システムが自社の競争優位の源泉か?ECサイトのコアはマーケティング・商品企画であり、受注管理は周辺機能。非コア機能は外部調達が原則(SaaS有利)。
2
スケーラビリティとカスタマイズ性
将来の事業拡大や独自ビジネスロジックに対応する必要があるか?SaaSはカスタマイズに限界がある。自社の業務フローに合わせた機能が必要なら自社開発が選択肢になる(本ケースでは要確認)。
将来の事業拡大や独自ビジネスロジックに対応する必要があるか?SaaSはカスタマイズに限界がある。自社の業務フローに合わせた機能が必要なら自社開発が選択肢になる(本ケースでは要確認)。
3
依存リスク(ベンダーロックイン)
SaaSベンダーが廃業・値上げ・機能廃止した場合のリスクは何か?月80万円が2倍になっても乗り換えられないリスクを評価する必要がある。移行コストが高いSaaSは長期的には割高になる可能性。
SaaSベンダーが廃業・値上げ・機能廃止した場合のリスクは何か?月80万円が2倍になっても乗り換えられないリスクを評価する必要がある。移行コストが高いSaaSは長期的には割高になる可能性。
ポイント解説
1
TCO はコスト回収期間だけで判断しない
短期回収(SaaS: 約7ヶ月)でも、長期的には自社開発が逆転する時点がある。3年・5年・10年でシミュレーションするのがプロの判断。
短期回収(SaaS: 約7ヶ月)でも、長期的には自社開発が逆転する時点がある。3年・5年・10年でシミュレーションするのがプロの判断。
2
削減効果の「確実性」を問う
「削減効果160万円/月」の前提は何か?人員削減がリアルに可能か、業務効率化の根拠は何か?過大見積もりが多い項目なので要確認。
「削減効果160万円/月」の前提は何か?人員削減がリアルに可能か、業務効率化の根拠は何か?過大見積もりが多い項目なので要確認。
3
Make or Buy は二項対立でない
「SaaSをベースに部分的に自社開発で拡張する」というハイブリッドも選択肢。エンジニアとしてPMに提案できると価値が高い。
「SaaSをベースに部分的に自社開発で拡張する」というハイブリッドも選択肢。エンジニアとしてPMに提案できると価値が高い。
実務への応用
MOpsチームでの技術投資判断
# 損益分岐年数の簡易計算
for year in range(1, 11):
months_active = max(0, year * 12 - 6)
saas = calculate_tco(500, 80, 160, year * 12)
dev = calculate_tco(2400, 30, 160, months_active)
status = "SaaS有利" if saas > dev else "自社開発有利"
print(f"{year}年後: SaaS={saas:,}万円, 自社開発={dev:,}万円 → {status}")
# 出力例:
# 1年後: SaaS=-460万円, 自社開発=1800万円 → SaaS有利
# 2年後: SaaS=-1420万円, 自社開発=600万円 → SaaS有利
# 3年後: SaaS=-2380万円, 自社開発=-1500万円 → SaaS有利
# 4年後: SaaS=-3340万円, 自社開発=-3060万円 → SaaS有利
# 5年後: SaaS=-4300万円, 自社開発=-4620万円 → 自社開発有利(逆転!)
次のステップ
発展問題: DCF(割引現在価値)を考慮した投資判断(NPV計算)
- 参考: TCO分析の標準フレームワーク
- 参考: ガートナーの Make-or-Buy 評価モデル
今日のまとめ
TCO分析では「初期費用」だけでなく「月次コスト」「削減効果」「稼働期間」を揃えて比較する。財務的優位だけでなく「コアコンピタンス」「スケーラビリティ」「依存リスク」の3軸で判断するのがエンジニアとしての Make or Buy の本質。