for Startups Tech blog

このブログのデザインを刷新しました。(2023/12/26)

【フォースタ テックブログ】CTOが組織をサッカーで例えてみた話

始めに

こんにちは。フォースタートアップスでCTOをしている戸村(@KenjiTomura)です。

最近、サッカー界では欧州スーパーリーグ問題が話題ですね。

クラブ運営の枠に止まらず、ヨーロッパのサッカー文化にも波及する様々な問題が出てきおり実現は難しそうですが、私はサッカーを見ることが好きなので純粋に強いクラブ同士の試合が多く見られるようになるということは楽しみだったので少し残念です。

私がCTOを務めるフォースタートアップスの開発チームにおいても、私の好きなサッカーの哲学を取り入れながらチーム作りをしているので、今回は私が目指している開発組織について記事にさせていただきました。

最近の開発について

開発はプロダクト作りにおいても、技術においてもどんどん進化していっています。さらにはその進化のスピードもどんどん早くなっていっているのは、皆さんも感じているところだと思います。

プロダクトの規模も複雑性も増えていく中で、1人の人間が全ての最新の技術を押さえ、社内の全てのPull Requestを全て確認し、全てのコードを把握し、問題が起きないように開発をしていくことはどんどん難しくなっています。

そのため、CTOや開発責任者が開発の方向性を決めながら、細部はメンバーそれぞれに権限を与え、判断を委ねていくべきだと私は思っています。

この状態はターンのある野球などのスポーツよりは、ターンがなくリアルタイムに進むサッカーが近いのではないかと思います。

そこで私は、サッカーの戦略の中でも1974年W杯のオランダ代表が唯一完成させたと言われているトータルフットボールを目指しています。

トータルフットボールについて

トータルフットボールとはなんなのでしょうか。
以下はWikipediaのトータルフットボールの解説を少し抜粋しました。

1950年代初期に、オーストリア人のヴィリー・メイスルによって考案された「渦巻き」理論がトータルフットボールの原案であるとされている。
それは、個々の選手が思いのままにポジションチェンジを繰り返し、渦を巻くようにチームがダイナミックに機能するというものであった。

ただ、これを可能にするには、選手一人一人が同じくらい高い技術と戦術眼を併せ持ち、なおかつかなりのスタミナが必要だと考えられていた。

さらに、動きの連続性を持ったその渦が、自ら意思を持つように前進と後退を繰り返すためには、渦の中心にいながら、渦の外からその流れを俯瞰できる稀有なビジョンを有し、渦をコントロールするだけの並外れた影響力を具えた選手が必要であった。

何といっても、最大の特徴はポジションが存在しないことである。
当時のオランダ代表にとってポジションとは「キックオフ時の立ち位置」というだけのものであり、攻撃時には選手は積極的にボールを持つ選手を追い抜いて前線に飛び出し、守備時にはFW登録の選手もカバーリングに入る。

サイドバックの選手が前線へ飛び出せばウイングの選手がそのスペースを埋めに下がる。
まさに全員攻撃・全員守備である。

また、“スペース”を最大限活用する考え方から、ウイングを中心としたサイドアタックを積極的に使い、ワイドな攻撃を展開した。

このサッカーを支えたのは選手全員の高い技術、戦術眼、スタミナもさることながら全員が高い守備意識を持っていたことも忘れてはならない点である。

反面、この戦術は理想的だが非効率的とされ、完全分業でポジションを固定した方が効率が良いといった説もあるが、後に様々なチームによって改良され、現代サッカーの戦術に浸透していく事になる。

引用元:https://ja.wikipedia.org/wiki/トータルフットボール

このトータルフットボールは1974年W杯のオランダ代表ヨハン・クライフが唯一完成させたと言われています。 クライフ以後のサッカー界でトータルフットボールを実現したチームは無いとされています。
しかし、後にクライフはバルセロナというクラブの監督となり、その時に司令塔としてプレイしていたグアルディオラへと系譜が繋がれ、形を変えてバルセロナの中にトータルフットボールの新しい形が活きていると私は思っています。

そして、グアルディオラバルセロナの監督になり、メッシを中心とした美しいサッカーをバルセロナで実現したと思っています。

私はこの形の組織を目指しています。

トータルフットボールのような開発組織とは

トータルフットボールのような開発組織とはなんなのでしょうか。
重要なポイントとしては以下の3つです。

  • 激しいポジションチェンジにより、明確なポジションが存在しない
  • 高い位置からのプレス & オフサイドトラップ
  • 選手全員の高い技術、戦術眼、スタミナもさることながら全員が高い守備意識を持つ

一つずつ深掘りしていきましょう。

激しいポジションチェンジにより、明確なポジションが存在しない

クラウドインフラが出てきて以降、エンジニア1人が受け持つ領域はどんどん増えています。
その為、フロントエンドエンジニアがサーバサイドに業務領域をオーバーラップしていくこともあるだろうし、その逆も同じ様にあります。

それはさらにサーバレスなどの技術が進むことによりフロントエンドエンジニアがインフラを理解し、触っていくなどのオーバーラップも拍車がかかっていくと感じています。

弊社でも得意領域などはありますが、あまり領域を明示せずに様々なところにポジションチェンジしながら開発に取り組んでもらうことが多く、エンジニアはエンジニアリングだけではなく、ユーザヒアリングから仕様検討も行うことも多くあり、それが結果的に良いプロダクトを作るための基になっています。

高い位置からのプレス & オフサイドトラップ

サッカー用語で、プレスとはボールを持っている相手にプレッシャーをかけたり、パスコースを塞いだりすることを言います。

オフサイドトラップは説明が難しいので詳細な説明は割愛しますが、相手の攻撃を防ぐディフェンスの戦術の一つです。

このポイントを簡単に説明すると、プレスやオフサイドトラップなどのディフェンス戦術を用いて、守備の時間を減らすことです。

開発において攻撃とはアウトカムを出すこと、ストーリーポイントを消化することなどで、守備とはバグ・障害の対応、手作業(Toil)の運用、リファクタリングなど、やらないといけないが必ずしもプロダクトを前に進めるものではないことだと思っています。
開発においては、ここで定義している守備の時間を減らし、攻撃の時間をできるだけ増やすことが大事です。
守備の時間を減らすためには以下のようなものが挙げられますが、こういったものを適切に取り入れながら守備の時間を減らすという戦術が重要だと思っています。

  • CI / CD
  • Toilの撲滅
  • 明らかに負債となるコードを減らす
  • ポストモーテムによる失敗の共有
  • マネージドサービス、SaaSの活用
  • インフラやコードクオリティなどの適切なモニタリング

そして、より良質な攻撃をするためには、闇雲にコードを書き続けることは正しいとは思っていません。
戦略、プロダクト、ユーザなどの深い理解をした上で書かれたコードは良質なコードになりますし、長くリファクタリングをしなくてもバグを生みづらいコードになっていきます。

選手全員の高い技術、戦術眼、スタミナもさることながら全員が高い守備意識を持つ

特にこのポイントが一番重要だと私は思っています。

要は高いプロフェッショナル意識をもち、1つ1つの仕事に怠慢なプレーをしないということです。
さらには、選手全員というところも大きく重要なポイントです。

サッカーでいえば、一人でも連携が取れていない選手がいるだけで、その選手から連携が崩れボールが取られてしまったり、オフサイドトラップがうまくいかず失点しまったりということが容易に想像できます。
エンジニアも同じで、どんなに使いやすく美しく書かれた優れたコードでも、1人のミスによって、セキュリティの問題に発展し大切なデータを失ったり、サービスの信用を失うこともあります。

なぜサッカーでバルセロナというクラブが強いのかというと、この全メンバーのゴールへ向かうビジョンの一致、高い戦術理解の能力、ハイレベルな一つ一つの技術など、当たり前のレベルが高く設定されていることだと私は思っています。

海外のサッカーの試合を見ていると、同じリーグに属しているクラブチームでも上位のチームはパス精度、パススピード、トラップ精度が圧倒的に高いと思います。そこから相手の守備を崩していき、ゴールにつなげる。

パス精度が高いことによりトラップのしやすいパスになり、トラップ精度が高いことによりパススピードが上がってもトラップのミスが少なくなり、高速にパスを繋げていくことで相手の守備が崩れ、パスがどんどん通りやすくなっていきます。

しかし、この中にトラップ精度が悪い選手などが混じってくるとパススピードを下げないといけなくなり全体の精度が下がっていき、通るはずだったパスが通らなくなってしまいます。

開発組織も同じです。 それぞれの当たり前のレベルが高いからこそクオリティの高いプロダクトが作れます。 デザイナーがどんなに優れていても、フロントエンドエンジニアがそのデザインを再現できなければ意味がありません。 その逆も同じでフロントエンドがどんなに優れていても、デザイナーが優れていなければUXの優れたプロダクトは作れません。

サーバサイドも同じです。

最近マイクロサービスという話が良く出ていますが、分割するポイントを間違えるとリクエストが増え、あっという間に遅いサービスになってしまいます。

さらには一回マイクロサービス化して終わりではなく、サービスは成長していくものなので、新しい機能を追加する度に適切なサービスに機能を追加していかないといけないですし、既存ではなく新規のサービスとして作るなどの判断をしていかないといけません。 そんな状況でプロフェッショナルではない怠慢なプレイをしてしまうと、プロダクト全体のクオリティの低下に繋がってしまいます。

まだプロダクトのクオリティ問題で済んでいれば良いですが、これがセキュリティ問題に発展してしまったとしたら目も当てられません。

最後に

このトータルフットボールという考え方は完成形が難しく、元日本代表監督のイビチャ・オシムも「目指しているのはトータルフットボールだ。ただしそれは永遠に実現されないが。」と言っています。 このトータルフットボールは個人の力に大きく依存するので、得意領域や専門性は必要性ですがオールラウンダーな人を採用していかなければいけません。

それは求人票で厳密に定義された職務を遂行してもらうジョブ型雇用ではなく、優秀なメンバーを採用し、その人にやることを合わせていくようなメンバーシップ型雇用になっていくと思います。 ですが、組織は往々にして大きくなるにつれてジョブ型雇用に組織全体を変えていかないと難しくなると言われています。
フォースタートアップスの開発組織も大きくなるにつれ同じ悩みにぶつかる可能性もあるでしょう。

トータルフットボール的な組織の完成形はオシムの言うようになかなか難しいのかもしれませんが、最良の形を模索しながらより良い組織を作っていきたいと思っています。