骨格と血流の設計 B331『チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計』(マシュー・スケルトン , マニュエル・パイス )
マシュー・スケルトン (著), マニュエル・パイス (著)日本能率協会マネジメントセンター (2021/12/1)
価値あるソフトウェアを素早く届けるためには、チームをどのように設計すればよいか。
言い換えると、縦割りの組織であっても、硬直化せずに効率よく業務を前に進めるためには何を考えるべきか。
次の課題はこれだ。
チームトポロジーというモデル
それに対し、本書は明快なモデルを提供してくれる。
背景には、これまで同様安定した、かつ素早いリリースや修正を必須にする変化の激しい社会がある。
これに対しアジャイルのような開発手法が生まれたが、従来の組織とのギャップが様々な課題を生んでいる。特にチェーン型のフローにおける開発と運用の間に生まれる速度とキャパシティのギャップが構造的な軋みを生み出した。
そこからDevOps(開発と運用の壁をなくし、継続的に価値を届ける仕組み。詳しくは次回触れる予定)というムーブメントが起こったが、チームトポロジーもこの流れにある。
チームトポロジーはこういう背景の元、成功しているモダンなソフトウエア開発組織に共通する構造とシステムを抽出したモデル、いわばテンプレートのようなものだ。
ではテンプレートを採用する利点は何か。
今参加している組織ではまさしくこのテンプレートを開発しているわけだが、テンプレートは、複雑な構造を単純化し、認知負荷を抑え、やるべきことを明確にする。
同様に、チームトポロジーはチームの「認知負荷」を最適化し、責任範囲を明確に絞り込むことで、やるべきことを明確にする。
つまりチームの焦点を絞り、ビジネス価値を迅速かつ継続的に顧客へ届けるための、具体的で実践的な組織設計図を示すこと。ここにチームトポロジーの意義がある。
チームトポロジーの中心的なアイデアには「コンウェイの法則」「チームファースト」「チームAPI」「4つのチームタイプ」「チームインタラクションモード」「トポロジー進化」「組織的センシング」の8つがあるそうだが、備忘録も兼ねてまずこれらに触れておきたい。
コンウェイの法則と逆コンウェイ戦略
コンウェイの法則とは、「成果物としてのシステムの構造は、その組織のコミュニケーション構造をそのまま反映してしまう」というものだ。
たとえば、部門ごとに縦割りで分断された組織がシステムを作れば、その成果物も分断された境界を持つようなものになり、全体としてぎこちなくなる。血流の悪い組織からは、やはり血流の悪いプロダクトしか生まれず、トラブルが頻発したり、迅速かつ適切な価値提供ができなくなる。
逆に、スムーズに情報が流れる組織からは、血流の良いプロダクトが生まれる。ユーザーにとって自然で使いやすく、変化にも素早く対応できるものになる。
ここで難しいのは、たとえ「こういう理想的なシステムを作りたい」と思っていても、実際にはコンウェイの法則に従って組織構造に引っ張られてしまうという点だ。結果として、意図せずして組織の歪みがそのまま成果物に刻み込まれてしまう。
この状況を打破するためのアイデアが「逆コンウェイ戦略」である。つまり、理想のプロダクトのシステム構造を先に思い描き、それを実現できるように組織やチームを設計するというアプローチだ。
どれだけ優れた技術や方法論を掲げても、成果物は組織の姿を映し出してしまう。だからこそ、理想のシステムを思い描くだけでは不十分で、それを支えるチームの設計にまで踏み込む必要がある。
要するに、コンウェイの法則を乗り越えるには、理想のシステム像 → チーム設計 → チーム間の関係性という流れを意識することが欠かせない。そして、そのための具体的な枠組みを与えてくれるのが、チームトポロジーと言える。
チームファーストとチームAPI
チームトポロジーの根幹にあるのが「チームファースト」という考え方だ。
その根本には実証済みの成功するアーキテクチャーの原則がある。
例えば、「疎結合」。チームは他のチームに強く依存せず自律性をもつこと。フローを分断する縦割りのチェーン型組織だと、チーム間の関係は密にならざるを得ず、大きな認知負荷とコミュニケーションコストやリスクが生まれ、安定したすばやい価値提供の妨げになる。
または、「高凝集性」。チームの内外に明確な責任境界を持ち、その内部は凝集されたつよう関連性を持つ。責任が明確で規模が適正であれば、チームは最適なパフォーマンスを発揮できる。
つまり、チームの自律性を高め、適切な規模で責任範囲を明確にすることで、認知不可を低減し、最適なパフォーマンスを発揮できる状況をつくること。
チームトポロジーの核心はおそらくここにある。
そしてもうひとつ、チームトポロジーの実践に欠かせないのが「チームAPI」という考え方だ。
API(アプリケーション・プログラミング・インターフェース)が、ソフトウェア同士のやり取りを明示的に定義するように、チームAPIはチーム同士の関係性をあらかじめ明示する仕組みだ。
「どちらがオーナーシップ(責任と権利)を持つのか」「その関係の目的は何か」をクリアにしておくことで、無用な調整やすれ違いを減らし、チーム間の協働をスムーズで予測可能なものにできる。
これらはいわば、チームの構造(かたち)とシステム(はたらき)という両輪であり、どちらが欠けていても機能しない。そして多くの組織ではこれらを明確に定義できていないために、認知負荷が膨らみすぎて様々な問題を引き起こしている。
では、チームトポロジーではどの様にそれらをモデル化しているだろうか。
4つの基本的なチームタイプ
チームトポロジーではチームを4つの基本的なチームタイプに分類できるという。(逆にこのタイプに分類できないチームはモダンな開発を進めるうえで問題を抱えている可能性が高いという。)
中心となるのは顧客に直接価値を届ける「顧客価値提供チーム(ストリームアラインド・チーム)」であり、他の3つはその主役を支えるサポーターだ。(4つのチームの日本語名は分かりやすくなるように私がとりあえず設定したものです。)
その役割の第一目的は、顧客価値提供チームの認知負荷を下げること。
これにより価値提供チームはフローを途切れさせず、価値を素早く顧客に届けられる。
簡単にそれらをまとめると
■顧客価値提供チーム (ストリームアラインド・チーム Stream Aligned Team)

顧客に直接的な価値(製品・サービス)を届ける一連の流れをストリームと呼ぶ。そのストリームに対して責任を持つ、最も基本となるチーム。
安定したフローを確立し、フィードバックに対する俊敏性を備え、プロダクトを進化させる。
他チームへの引き継ぎは最小限(理想はゼロ)とする。
目的を達成するために適宜他チームと連携する。(ただし自律性を維持し、依存しない)
■能力向上支援チーム (イネイブリング・チーム Enabling team)

他のチームが新しい技術やスキルを習得し、自律的に開発できるよう支援・促進する専門家チーム。
このチームの目的は顧客価値提供チームにソリューションを提供することではなく、顧客価値提供チームの認知負荷を抑えながら自律性を高めるための学習を支援をすることであり、いわば専門のコーチのようなものだ。
■専門技術支援チーム(コンプリケイテッドサブシステム・チーム Complicated Subsystem team)

高度な専門知識を必要とする複雑なシステム部分を専門に扱うチーム。
このチームの目的は、複雑なサブシステムに絡む顧客価値提供チームの認知負荷を低減することにある。
■共通基盤構築チーム(プラットフォーム・チーム Platform Team )

複数のチームが利用する共通の基盤(開発・運用環境など)を開発・提供し、開発効率を向上させるチーム。
目的は、顧客価値提供チームが自律的に仕事を届けられるように基盤を作ることにある。顧客価値提供チームのフィードバックを受け、目的にあったプラットフォームをすばやく提供する。いわば、組織内のチームを対象とした開発運用チームである。
チーム配置の設計指針
これら4タイプをどう配置するかは、組織設計の成否を分ける。
ポイントは
- 役割についての曖昧さを排除する。
- 依存関係をできる限り排除する(他チームにフローが制限されないようにする)
- どの依存関係(知識・タスク・リソース)を取り除き、どの依存関係を受け入れるかを明確にする。
- チームを開発や変更のフロー(ストリーム)に添って配置し最適化する。
- チームの適切なサイズと適切な境界を定義する。
- チーム同士の関係性をシンプルにする。
- そのためにチームに分解する適切で自然な節理面を見つけ出す。
要するに、チームをどう切り分け、どう支援するかを意図的に設計することで、価値提供の流れを滞らせないこと。これがチームトポロジーの実践の第一歩となるだろう。
チームインタラクションモード
ここで主役(ストリームアラインド・チーム)とサポーター(3つの補助的チーム)の役割は明確になった。
しかし、それだけでは十分ではない。実際の成果を大きく左右するのは、チーム同士がどう関わるかという関係性そのものだ。
この定義が曖昧なままでは、不要な軋轢が生まれ、チーム間のコミュニケーションは非効率になる。
そこでチームトポロジーは、チーム間のやり取りを 3つのインタラクションモード として明確に整理している。
それぞれ、有効な場面やメリット・デメリットがあるのでそれらをおさえておく。
■協働(コラボレーション Collaborating)

2つのチームが密接に連携し、共通の目標に向かって探求や試行錯誤を共に行う関わり方。特に、新しい技術の導入や、解決策が不明確な問題に取り組む際に有効。
メリット
- 迅速な学習と発見: チーム間の知識が融合し、革新的なアイデアや素早い問題解決が生まれやすくなる。
- 複雑な問題への対応: 不確実性が高い領域において、両チームの専門知識を動員して最適な解決策を模索できる。
- コンテキストの共有: 暗黙知や背景情報が深く共有され、チーム間の信頼関係が構築される。
デメリット・注意点
- 認知負荷が高い: 関わるメンバーは両方のチームのコンテキストを理解する必要があり、精神的な負担が大きくなる。
- コミュニケーションコスト大: 頻繁なミーティングや調整が必要となり、本来のタスクに集中する時間が削られがち。
- 境界の曖昧化: チーム間の責任境界が曖昧になり、意思決定の遅延や責任のなすり付け合いにつながるリスクがある。
- 【重要】期間限定で行うべき: このモードはコストが非常に高いため、目的を達成したら速やかに別のモード(X-as-a-Serviceなど)に移行すべき。長期化はチームの疲弊と自律性の喪失を招く。
■サービス提供(X-as-a-Service)

あるチーム(通常はプラットフォーム・チームや複雑なサブシステム・チーム)が提供する機能や基盤を、もう一方のチームが明確なAPIなどを通じてサービスとして利用する関わり方。
メリット
- 利用側の負担軽減: サービスの利用側は、その仕組み(How)を理解する必要がなく、使い方(What)に集中できるため、開発スピードが向上する。
- 提供側の集中: サービスの提供側は、信頼性・使いやすさ・ドキュメントの充実に集中でき、プロダクトの品質を高められる。
- チーム間の独立性: チーム間の依存関係が疎になり、お互いのペースで並行して開発を進めることができる。
デメリット・注意点
- 提供側の責任増大: サービスの提供側には、安定稼働、十分なドキュメント、手厚いサポートなど、質の高いサービスを提供する大きな責任が伴う。
- フィードバックの欠如: 利用側からのフィードバックが提供側に届きにくくなる可能性がある。意識的な改善サイクルを設ける必要がある。
- ボトルネック化のリスク: 提供側の開発スピードが遅い場合や、障害が発生した場合、それを利用する全てのチームが影響を受けるボトルネックになる危険性がある。
■学習支援(ファシリテーション Facilitating)

一方のチーム(通常は能力向上支援チーム)がもう一方のチームに対し、知識やスキルを教え、自律できるよう手助けする関わり方。組織全体の能力向上を目的とする。
メリット
- 組織全体の能力向上: 支援されたチームのスキルが向上し、特定のチームへの依存(ボトルネック)が解消される。
- 自律性の促進: チームが新しい知識や技術を自分たち自身で扱えるようになり、開発の自由度とスピードが向上する。
- ベストプラクティスの横展開: あるチームで得られた知見や良い実践方法を、組織全体に効率的に広めることができる。
デメリット・注意点
- 支援側の高いスキル要求: 支援する側には、専門知識だけでなく、高いコーチング能力やコミュニケーション能力が求められる。
- 受け身の姿勢への注意: 支援される側が受け身のままだと、スキルが定着せず、支援が終わった途端に元に戻ってしまう。
- 【重要】一時的な関わりであるべき: このモードもコラボレーション同様、永続的な関係ではない。「代わりにやってあげる」のではなく、あくまで「自律できるように手伝う」のが目的。明確なゴールと期間を設定し、支援が終われば速やかに離れることが重要。
インタラクションモードの設計指針
これらの3つのモードは、単なる「関係性の分類」ではない。
チームタイプの配置という“かたち”に対して、“はたらき”を与えるものだ。
それは、「価値あるソフトウェアを素早く届ける」という動的な目的を、現実に結びつけるための見取り図となりうるだろう。
インタラクションモードを設計する際に重要なのは、
- それが「協働」なのか「提供」なのか「支援」なのか、つまりオーナーシップと責任がどこにあるのかを明確にすること
- そして、その関係をできるだけシンプルに、必要十分な数に抑えること
- 適切なタイミングと適切なコラボレーションの量を決めること。
さらにこれらは固定的なものではなく、課題や成熟度に応じて意図的に選び、適切なタイミングで切り替えていくことが求められる。

トポロジー進化
チームトポロジーの重要な特徴のひとつは、組織の形を固定的に考えない点にある。
チームのタイプやインタラクションモードは、環境や課題の変化に応じて進化させることが前提とされている。
組織は一度設計して終わりではない。
市場や技術、プロダクトの成熟度が変われば、チームの構造や関係性もそれに合わせて変化する必要がある。
その進化のプロセスこそが「トポロジー進化」と呼ばれるものだ。
要するに、チームトポロジーは「静的な組織図」ではなく、環境に応じて姿を変える「動的な設計図」を描こうとする試みだと言える。
組織的センシング
トポロジーを進化させるためには、外部環境や内部の状態を敏感に感じ取る「感覚」が必要になる。
本書ではこれを「組織的センシング」と呼び、組織をただの機械ではなく、生きたシステムとして捉える視点を示している。
組織が今どのような負荷を抱えているのか、どこに摩擦や滞留が生まれているのか、あるいはどんな可能性が芽生えつつあるのか――そうした兆しをいち早く感じ取ることができなければ、トポロジー進化は机上の空論に終わってしまう。
DevOps的な視点で考えると、運用部門は開発部門にとって豊富な情報をもたらす入力センサーとして考えることができる。これをチームトポロジーとして明確に配置し、フィードバックループを確立することができれば、自律操舵が可能な組織となりうる。

これは前々回に触れた、心理的安全性に根ざした「環境を探索する機能」とも響き合う。
そして、それを組織設計の中で明確に定義づけることは、仕事のフレーミング――すなわち「環境の編集」の一形態だと言えるだろう。
描かれた組織図がどう動き、どう成果を生むのか。その実証的な視点を次に読む『LeanとDevOpsの科学』で得られそうな気がしている。
社会的構造が絶望と希望を生む B287『社会的ジレンマ 「環境破壊」から「いじめ」まで』(山岸 俊男)
B165 『コミュニティデザイン―人がつながるしくみをつくる』
嬉しい変化 B320『宮大工西岡常一の遺言』(山崎 佑次)
資本主義を使いこなすことは可能か B290『資本主義の中心で、資本主義を変える』(清水 大吾)
出会う建築
動態再起論
環境配慮型ブランド
不動産