ひとことで言うと#
チームを4つのタイプに分類し、チーム間の3つのインタラクションモードで連携を設計するフレームワーク。「コンウェイの法則」(組織の構造がシステムの構造を決める)を逆手にとり、望ましいアーキテクチャから逆算してチーム構造を設計する。人数が増えてきた組織の「チームをどう分けるか」問題に明確な指針を与えてくれる。
押さえておきたい用語#
- コンウェイの法則
- 「組織のコミュニケーション構造が、そのままシステムの設計に反映される」という法則。逆コンウェイ戦略では、望ましいシステム設計から逆算して組織構造を決める。
- ストリームアラインドチーム
- ビジネスの価値の流れ(ストリーム)に沿って動くチーム。全チームの大多数がこのタイプであるべき。
- 認知負荷(Cognitive Load)
- 1つのチームが把握・管理しなければならない情報量のこと。認知負荷が高すぎると生産性が落ちる。チーム分割の判断基準になる。
- セルフサービス
- Platform Teamが提供する機能を、利用チームが依頼なしで自分で使える状態のこと。依頼ベースだとPlatform Teamがボトルネックになる。
チームトポロジーの全体像#
こんな悩みに効く#
- チーム間の調整コストが膨大で、開発速度が落ちている
- 「このタスクはどのチームがやるの?」問題が頻発する
- プラットフォームチームを作りたいが、どう位置づけるかわからない
- 組織が30人を超えてスケーリングの壁にぶつかっている
基本の使い方#
すべてのチームは、以下の4タイプのどれかに分類される。
1. Stream-aligned Team(ストリームアラインドチーム)
- 組織のメインの価値の流れに沿って動くチーム。ビジネスの特定のドメインやユーザージャーニーに責任を持つ
- 例: 「決済チーム」「オンボーディングチーム」「BtoBセールスチーム」
- 全チームの大多数がこのタイプであるべき
2. Platform Team(プラットフォームチーム)
- Stream-aligned Teamが自律的に動けるように、内部サービスやツールを提供するチーム
- 例: 「CI/CDパイプライン提供」「社内認証基盤」「データ基盤チーム」
- セルフサービスが原則。Platform Teamに依頼しないと進めないなら、設計が悪い
3. Enabling Team(イネーブリングチーム)
- 他のチームの能力向上を支援するチーム。恒久的にサポートするのではなく、一定期間で自走できるようにする
- 例: 「SREの導入支援」「テスト自動化のコーチング」「新技術の導入支援」
- 期間限定で関わり、支援先チームが自走したら離れる
4. Complicated-subsystem Team(コンプリケイテッド・サブシステムチーム)
- 高度な専門知識が必要なコンポーネントを担当するチーム
- 例: 「機械学習モデル」「決済処理エンジン」「動画トランスコーディング」
- このタイプは本当に必要な場合だけ作る。安易に作るとサイロ化する
チーム間の関わり方を3パターンに限定する。
1. Collaboration(コラボレーション)
- 2つのチームが密に連携して一緒に仕事をする
- 新しいことを発見・学習するフェーズで有効
- 注意: 長期間続けると認知負荷が増大する。期間を区切ること
2. X-as-a-Service(サービス提供)
- あるチームが他のチームにサービスとして機能を提供する
- Platform Teamの基本モード。APIやツールとして提供し、直接のやりとりを最小化
- 成熟したインタラクション。ここを目指す
3. Facilitating(ファシリテーション)
- あるチームが他のチームの学習・成長を支援する
- Enabling Teamの基本モード。答えを教えるのではなく、自走力をつけさせる
今のチームを4タイプに当てはめ、インタラクションモードを可視化する。
やり方:
- 各チームの名前を書き出す
- それぞれが4タイプのどれに当たるか分類する
- チーム間のやりとりを線で結び、3つのモードのどれか特定する
- 問題点を発見する: 依存が多すぎる箇所、タイプが不明確なチーム、コラボレーションが長期化している箇所
よくある発見:
- 「全チームがStream-alignedのつもりだが、実質的にPlatform的な仕事をしているチームがある」
- 「チーム間がすべてCollaborationで、サービス化されているものがない」
理想のチーム構造を描き、段階的に移行する。
設計のガイドライン:
- Stream-aligned Teamが全体の**70〜80%**を占めるようにする
- チームの認知負荷を考慮する(1チームが担当するドメインが広すぎないか)
- Platform Teamは「依頼ベース」ではなく「セルフサービス」で設計する
- 一気に組織変更せず、1チームずつ移行・実験する
具体例#
状況: 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名 | データ可視化・分析機能 |
| Platform | DXチーム | 8名 | CI/CD・監視・デプロイパイプライン |
| Enabling | Quality Coachチーム | 6名 | テスト自動化を2ヶ月間コーチング |
| Complicated-subsystem | データ分析エンジン | 6名 | 高度な統計処理をAPI提供 |
→ 6ヶ月の段階的移行で、リリースリードタイムが3週間→5日に短縮。チーム間の依頼チケットが80%削減。各Stream-alignedチームが自律的に機能をデリバリーできるようになった。
状況: フィンテック企業。エンジニア100名・8チーム。全チームが独自にインフラを構築・運用しており、「車輪の再発明」が横行。デプロイ作業に各チーム週平均8時間を費やしていた。セキュリティ対応もチームごとにバラバラ。
問題の構造分析:
- 8チーム全てがStream-aligned的な動きをしているが、インフラ・セキュリティの共通基盤がない
- 各チームの認知負荷が高すぎる(ビジネスロジック+インフラ+セキュリティを全て自チームで管理)
Platform Team「Developer Platform」の立ち上げ:
| 提供するサービス | 内容 | セルフサービス化の方法 |
|---|---|---|
| デプロイパイプライン | ワンコマンドでステージング・本番デプロイ | GitHubマージで自動デプロイ |
| 監視・アラート | 標準的な監視ダッシュボード | テンプレートを選ぶだけで設定完了 |
| セキュリティスキャン | 脆弱性の自動検出 | CI/CDパイプラインに組み込み済み |
| 認証基盤 | SSO・権限管理 | SDK提供、コード3行で統合 |
段階的な移行(6ヶ月):
- 1ヶ月目: 最も課題が大きいチームで試行
- 3ヶ月目: 3チームに拡大。フィードバックを受けてサービスを改善
- 6ヶ月目: 全8チームが利用
→ デプロイ作業が各チーム週8時間→週0.5時間に。デプロイ頻度が月2回→週5回に10倍増。セキュリティインシデントも60%減少。各チームがビジネスロジックに集中できるようになった。
状況: 地方の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機能に複数チームの調整が必要になる。価値の流れ(ビジネスドメインやユーザージャーニー)で切るのが原則
- Platform Teamを「依頼受付窓口」にする — セルフサービスではなく「チケットを切って依頼する」仕組みだと、Platformチームがボトルネックになる。開発者が自分で使える仕組みを目指す
- Enabling Teamが永久に居座る — 支援先チームが自走できないまま、ずっとEnabling Teamが面倒を見続けると、依存関係が固定化する。明確な「卒業基準」を設定する
- 一気に全組織を再編する — 大規模な組織変更は混乱を招く。1チームずつ移行・実験し、成功パターンを横展開する方が確実
まとめ#
チームトポロジーは、「チームをどう分けるか」という組織設計の根本問題に、4つのチームタイプと3つのインタラクションモードという明確なフレームを与えてくれる。技術レイヤーではなく価値の流れでチームを切り、Platform TeamやEnabling Teamで自律性を支える。組織が30人を超えたあたりから必ず直面する課題。まずは今のチーム構造を4タイプにマッピングするところから始めてみよう。