チームトポロジー

英語名 Team Topologies
読み方 チーム トポロジー
難易度
所要時間 3〜5時間(チーム構造の分析と設計)
提唱者 マシュー・スケルトン & マニュエル・パイス
目次

ひとことで言うと
#

チームを4つのタイプに分類し、チーム間の3つのインタラクションモードで連携を設計するフレームワーク。「コンウェイの法則」(組織の構造がシステムの構造を決める)を逆手にとり、望ましいアーキテクチャから逆算してチーム構造を設計する。人数が増えてきた組織の「チームをどう分けるか」問題に明確な指針を与えてくれる。

押さえておきたい用語
#

押さえておきたい用語
コンウェイの法則
「組織のコミュニケーション構造が、そのままシステムの設計に反映される」という法則。逆コンウェイ戦略では、望ましいシステム設計から逆算して組織構造を決める。
ストリームアラインドチーム
ビジネスの価値の流れ(ストリーム)に沿って動くチーム。全チームの大多数がこのタイプであるべき。
認知負荷(Cognitive Load)
1つのチームが把握・管理しなければならない情報量のこと。認知負荷が高すぎると生産性が落ちる。チーム分割の判断基準になる。
セルフサービス
Platform Teamが提供する機能を、利用チームが依頼なしで自分で使える状態のこと。依頼ベースだとPlatform Teamがボトルネックになる。

チームトポロジーの全体像
#

4つのチームタイプと3つのインタラクションモード
Stream-aligned Team価値の流れに沿うチームビジネスドメインやユーザージャーニーに責任全チームの70〜80%がこのタイプ例: 決済チーム・オンボーディングチームPlatform Team自律性を支えるチーム内部サービスやツールを提供セルフサービスが原則例: CI/CD基盤・データ基盤チームEnabling Team能力向上を支援するチーム他チームの自走力をつけさせる期間限定で関わり、自走したら離れる例: SRE導入支援・テスト自動化コーチComplicated-subsystem高度な専門知識が必要なチームAPIでStream-alignedに提供本当に必要な場合だけ作る例: MLモデル・決済エンジン3つのインタラクションモードCollaboration密に一緒に仕事するX-as-a-Serviceサービスとして提供Facilitating学習・成長を支援Team Topologies価値の流れでチームを切り、自律性を支える
1
4つのチームタイプを理解
Stream-aligned/Platform/Enabling/Complicated-subsystem
2
3つのインタラクションモードを定義
Collaboration/X-as-a-Service/Facilitating
3
現状のチーム構造をマッピング
4タイプに分類し、問題点を発見
4
あるべき姿を設計
価値の流れに沿って再編成
段階的に移行
1チームずつ実験しながら最適化

こんな悩みに効く
#

  • チーム間の調整コストが膨大で、開発速度が落ちている
  • 「このタスクはどのチームがやるの?」問題が頻発する
  • プラットフォームチームを作りたいが、どう位置づけるかわからない
  • 組織が30人を超えてスケーリングの壁にぶつかっている

基本の使い方
#

ステップ1: 4つのチームタイプを理解する

すべてのチームは、以下の4タイプのどれかに分類される。

1. Stream-aligned Team(ストリームアラインドチーム)

  • 組織のメインの価値の流れに沿って動くチーム。ビジネスの特定のドメインやユーザージャーニーに責任を持つ
  • 例: 「決済チーム」「オンボーディングチーム」「BtoBセールスチーム」
  • 全チームの大多数がこのタイプであるべき

2. Platform Team(プラットフォームチーム)

  • Stream-aligned Teamが自律的に動けるように、内部サービスやツールを提供するチーム
  • 例: 「CI/CDパイプライン提供」「社内認証基盤」「データ基盤チーム」
  • セルフサービスが原則。Platform Teamに依頼しないと進めないなら、設計が悪い

3. Enabling Team(イネーブリングチーム)

  • 他のチームの能力向上を支援するチーム。恒久的にサポートするのではなく、一定期間で自走できるようにする
  • 例: 「SREの導入支援」「テスト自動化のコーチング」「新技術の導入支援」
  • 期間限定で関わり、支援先チームが自走したら離れる

4. Complicated-subsystem Team(コンプリケイテッド・サブシステムチーム)

  • 高度な専門知識が必要なコンポーネントを担当するチーム
  • 例: 「機械学習モデル」「決済処理エンジン」「動画トランスコーディング」
  • このタイプは本当に必要な場合だけ作る。安易に作るとサイロ化する
ステップ2: 3つのインタラクションモードを定義する

チーム間の関わり方を3パターンに限定する。

1. Collaboration(コラボレーション)

  • 2つのチームが密に連携して一緒に仕事をする
  • 新しいことを発見・学習するフェーズで有効
  • 注意: 長期間続けると認知負荷が増大する。期間を区切ること

2. X-as-a-Service(サービス提供)

  • あるチームが他のチームにサービスとして機能を提供する
  • Platform Teamの基本モード。APIやツールとして提供し、直接のやりとりを最小化
  • 成熟したインタラクション。ここを目指す

3. Facilitating(ファシリテーション)

  • あるチームが他のチームの学習・成長を支援する
  • Enabling Teamの基本モード。答えを教えるのではなく、自走力をつけさせる
ステップ3: 現状のチーム構造をマッピングする

今のチームを4タイプに当てはめ、インタラクションモードを可視化する。

やり方:

  1. 各チームの名前を書き出す
  2. それぞれが4タイプのどれに当たるか分類する
  3. チーム間のやりとりを線で結び、3つのモードのどれか特定する
  4. 問題点を発見する: 依存が多すぎる箇所、タイプが不明確なチーム、コラボレーションが長期化している箇所

よくある発見:

  • 「全チームがStream-alignedのつもりだが、実質的にPlatform的な仕事をしているチームがある」
  • 「チーム間がすべてCollaborationで、サービス化されているものがない」
ステップ4: あるべき姿を設計し、段階的に移行する

理想のチーム構造を描き、段階的に移行する。

設計のガイドライン:

  • Stream-aligned Teamが全体の**70〜80%**を占めるようにする
  • チームの認知負荷を考慮する(1チームが担当するドメインが広すぎないか)
  • Platform Teamは「依頼ベース」ではなく「セルフサービス」で設計する
  • 一気に組織変更せず、1チームずつ移行・実験する

具体例
#

例1:50人のエンジニア組織が技術レイヤー型からストリーム型に再編し、リリースリードタイムを3週間→5日に短縮

状況: SaaS企業のVPoE佐藤さんが、50人のエンジニア組織の生産性低下に悩んでいた。

Before(現状の問題):

チーム人数役割
フロントエンドチーム15名UI/UXの実装
バックエンドチーム18名API・ビジネスロジック
インフラチーム8名サーバー・デプロイ
QAチーム9名テスト・品質保証
  • 1つの機能を作るのに全4チームの調整が必要。リリースまで平均3週間
  • インフラチームへのデプロイ依頼がボトルネック(平均2日待ち)
  • QAチームがゲートキーパー化し、テスト待ちでさらに3日

チームトポロジーで分析:

  • 技術レイヤーで切っているため、価値の流れに沿っていない
  • インフラチームは実質Platform Teamだが、セルフサービス化されていない
  • QAチームは本来Enabling的な役割だが、恒久的なゲートキーパーに

After(再設計):

タイプチーム人数責任範囲
Stream-aligned顧客管理チーム10名顧客のライフサイクル全体
Stream-aligned請求・決済チーム10名課金・請求・決済フロー
Stream-alignedレポートチーム10名データ可視化・分析機能
PlatformDXチーム8名CI/CD・監視・デプロイパイプライン
EnablingQuality Coachチーム6名テスト自動化を2ヶ月間コーチング
Complicated-subsystemデータ分析エンジン6名高度な統計処理をAPI提供

→ 6ヶ月の段階的移行で、リリースリードタイムが3週間→5日に短縮。チーム間の依頼チケットが80%削減。各Stream-alignedチームが自律的に機能をデリバリーできるようになった。

例2:100人規模のフィンテック企業がPlatform Teamの立ち上げでデプロイ頻度を10倍に

状況: フィンテック企業。エンジニア100名・8チーム。全チームが独自にインフラを構築・運用しており、「車輪の再発明」が横行。デプロイ作業に各チーム週平均8時間を費やしていた。セキュリティ対応もチームごとにバラバラ。

問題の構造分析:

  • 8チーム全てがStream-aligned的な動きをしているが、インフラ・セキュリティの共通基盤がない
  • 各チームの認知負荷が高すぎる(ビジネスロジック+インフラ+セキュリティを全て自チームで管理)

Platform Team「Developer Platform」の立ち上げ:

提供するサービス内容セルフサービス化の方法
デプロイパイプラインワンコマンドでステージング・本番デプロイGitHubマージで自動デプロイ
監視・アラート標準的な監視ダッシュボードテンプレートを選ぶだけで設定完了
セキュリティスキャン脆弱性の自動検出CI/CDパイプラインに組み込み済み
認証基盤SSO・権限管理SDK提供、コード3行で統合

段階的な移行(6ヶ月):

  1. 1ヶ月目: 最も課題が大きいチームで試行
  2. 3ヶ月目: 3チームに拡大。フィードバックを受けてサービスを改善
  3. 6ヶ月目: 全8チームが利用

→ デプロイ作業が各チーム週8時間→週0.5時間に。デプロイ頻度が月2回→週5回に10倍増。セキュリティインシデントも60%減少。各チームがビジネスロジックに集中できるようになった。

例3:地方の中堅SIer 200名がEnabling Team導入で内製化比率を30%→70%に引き上げ

状況: 地方のSIer。社員200名。長年「大手ベンダーの下請け」としてウォーターフォール開発を行ってきたが、顧客のDXニーズの高まりでアジャイル開発・クラウドネイティブへの転換が急務。しかし社内にスキルを持つ人材が少なく、外注依存率が70%。

チームトポロジーの適用:

現状の問題:

  • 全チームが「プロジェクト単位」で編成され、プロジェクト終了後に解散
  • 技術ノウハウがチーム間で共有されず、毎回ゼロからスタート
  • 新技術(クラウド・アジャイル)を導入したくても、教える人がいない

Enabling Teamの設計(2チーム):

Enabling Teamミッション支援方法卒業基準
アジャイルコーチチーム(4名)ウォーターフォールチームをアジャイルに転換2ヶ月間チームに入り込み、スクラムの実践を伴走チームが3スプリントを自走で完了
クラウドネイティブチーム(5名)オンプレミスチームをクラウドに移行3ヶ月間、設計・構築・運用を一緒に実施チームが独力でクラウド環境を構築・運用

2年間の段階的展開:

  • Year 1: 各Enabling Teamが3チームずつ支援(計6チーム)
  • Year 2: 卒業したチームからも「社内コーチ」を育成し、支援能力を拡大

→ 2年後、アジャイル開発を実践できるチームが2チーム→15チームに。クラウドネイティブ対応チームが0→10チームに。外注依存率が70%→30%に低下。内製化により利益率が12%→22%に改善。Enabling Teamは「永久にサポートする」のではなく「自走させて次に移る」を徹底した成果。

やりがちな失敗パターン
#

  1. 技術レイヤーでチームを切る — 「フロントエンド」「バックエンド」で分けると、1機能に複数チームの調整が必要になる。価値の流れ(ビジネスドメインやユーザージャーニー)で切るのが原則
  2. Platform Teamを「依頼受付窓口」にする — セルフサービスではなく「チケットを切って依頼する」仕組みだと、Platformチームがボトルネックになる。開発者が自分で使える仕組みを目指す
  3. Enabling Teamが永久に居座る — 支援先チームが自走できないまま、ずっとEnabling Teamが面倒を見続けると、依存関係が固定化する。明確な「卒業基準」を設定する
  4. 一気に全組織を再編する — 大規模な組織変更は混乱を招く。1チームずつ移行・実験し、成功パターンを横展開する方が確実

まとめ
#

チームトポロジーは、「チームをどう分けるか」という組織設計の根本問題に、4つのチームタイプと3つのインタラクションモードという明確なフレームを与えてくれる。技術レイヤーではなく価値の流れでチームを切り、Platform TeamやEnabling Teamで自律性を支える。組織が30人を超えたあたりから必ず直面する課題。まずは今のチーム構造を4タイプにマッピングするところから始めてみよう。