チームの紹介

コメントと大量のメール (そして Twitter でのフォロー) をいただきありがとうございます。コミュニティの熱意と関心の高さに、本当に身が引き締まる思いです。初期の投稿に対するコメントの中に、既にいくつかの重要なスレッドができています。そのうちのいくつかは Windows 8 のユーザー エクスペリエンスのプレビューに基づくものです。これらの問題や製品の設計、トレードオフについて議論する準備を、チームでも着々と進めているところです。Windows 8 では、製品全体にわたって新しい機能が盛り込まれています。そんな Windows 8 の構築に欠かせな い強力なチームの構造について、ここでお話しするのも有意義かと思います。"どうやって (How)" を知ることが、"何 (What)" や "なぜ (Why)" を理解するのに役立つことがあるからです。この説明によって同時に、Windows 8 のどういった部分に機能が追加されているか 、概要をつかんでいただくこともできると思います。また、製品の話をしていくにあたってのガイドのような役割も果たしてくれるはずです。

Windows を 1 つのエンティティなりグループとして考えたり、何人かの決まったメンバーの集まりと考えたくなる方も多いと思います。たとえばあるメンバーがカンファレンスで話したり、ブログを書いていたりすれば、その人が製品を代表する顔として記憶されるでしょう。実際には、 Windows は常にチーム全体で取り組む製品であり、Microsoft の大部分を占めるプロジェクトでもあります。社内のほぼすべての開発グループが、なんらかの形で Windows 8 の構築に貢献しています。そして Windows も他のグループに貢献する取り組みを行っていま す。

Windows は、組織化された小さなプロジェクト群から成る、かなり幅広いプロジェクトです。Windows 8 の構築を始めるにあたって、向かうべき方向ははっきり把握できていたので、その方向性をサポートするためのチーム構造を作ることになりました。多くのチームを連携させる一方 で、同時に作業を細分化して比較的独立性の高いグループに分けていきます。ユーザーにとっては各パーツの適切な連動が重要なのは当然ですが、一方エンジニアとしては独立して仕事を進められることも重要です。この微妙なバランスが重要でした。

Windows という大きな仕事をやり遂げるためのチーム構造作りには、多くの工夫が盛り込まれています。最も重要な第一歩は、最適なチームと最適な構造を用意できるよう、何をやりとげるべきなのか ("What") を決定することです。同時に、すべてのエンジニアリング プロセス、 たとえばデイリー ビルド、統合、品質、セキュリティー、そして多くの基礎要素が、最初からうまく連動するようにしなければなりません (これらのトピックについても話したいことは山積みです)。

チームにはいくつかのエンジニアリング上のロール、つまり専門分野があります。Windows における実装作業とは、開発者がコードを書くこ とです。このコードによって実装される機能の基になるのは、プログラム管理担当者が書いた仕様と、製品デザイン担当者が用意するインタラクション デザインです。 そして仕様に不備がないか、コードが仕様に書かれたとおりに動作するかどうかをテスターが確認します。これらの各ロールの相互関係は 簡略化した見方であり、実際にはお互いの役割に少し踏み込むこともしばしばあります。チームには同じくらい重要なロールが他にもいくつかありますが、私たちは、開発、テスト、およびプログラム管理が、リリース全体をとおして一体となって進めていくことをエンジニアリングの基本的なプロセスと 捉えています。成果物に対しても、途中で下される決断においても、各ロールは同等の発言権を持ちます。

Windows の作業は各 "機能チーム" に分けて進められます。機能チームは開発者の集まりで、あるアーキテクチャ上の要素とシナリオとのペアを、Windows 全体をとおして担当します。Windows 8 の組織には約 35 の機能チームあります。各機能チームには 25 名 から 40 名の開発者がおり、それにテスターとプログラム管理の担当者が加わって共同作業を進めます。チームはどれもグローバルな製品の構築に注力しており、チームによってはアメリカ国外に拠点を置いたり、成果物をグローバルに提供したりしています。

各機能チームは基本的に、Windows の中の 1 つの領域またはコンポーネントと一般的に捉えられるものを担当し、構築します。"機能" というのは少しトリッキーな言葉です。人によっては機能とは "ユーザー インターフェイス" やネットワークといったアーキテクチャ上の大きなコ ンポーネントであり、人によってはもっと具体的なもの、たとえば "[スタート] メニュー" や IPv6 などを指します。少々多くの意味を盛り込まれすぎている言葉と言えるでしょう。Windows では各機能チームを組む際、アーキテクチャ (コード、サブシステム、コンポーネントなど) とユー ザーがそれに出会うシナリオ (ユーザー エクスペリエンス) をペアにして組み合わせ、同時にチームを管理可能なサイズにとどめるよう注意しています。私たちは新機能を数えることをずっと前にやめてしまいましたが、これは何を "機能" と定義するかが難しいためです。実際に数えるのは作 業項目で、これは実際の作業や仕様に対応するものです (しかしこちらはかなり長いリストになります)。

こういった数字からチームの開発者の数を計算してみた人の反応は、たいてい 2 種類に分かれます。「ずいぶん多いな、そんな大人数で開発ができるわけがない」というものと「ずいぶん少ないな、10 億人以上が使う製品を作るというのに」というものです。私たちにとってはチームの人 数は少ないほどよいのですが、ユーザーの皆さんにとっては必要なものを漏れなく盛り込むことができるよう、人数が多いほどよいわけです。そこで私たちはその中間地点を探すことになります。管理可能な大きさでありながら、高品質で完全に機能の揃ったコードを生産できるチームを目指すので す。

先述のとおり Windows は他の多くの製品にコードを提供しており、その逆も同様なので、このリストにも他のグループに由来する機能が含まれ (たとえばブラウザーの言語ランタイムは開発ツール グループのものです)、逆に他の製品でも使用される機能もあるという点を念頭に置い てください。たとえばカーネル、ネットワーク、ストレージ、仮想化、その他 OS の基礎的な部分は Windows Server の一部でもあります。そうです、Windows のクライアント OS 全体と Windows Server OS の基礎の大部分を同じ 1 つのチームが担当しているので す。また、OS のコア部分に組み込まれるものの、最終的には Server 製品だけで使用される機能もあります。

下に列挙されたチームが担当する機能や分野の多くは、皆さんにとっても親しみがあったり、名前から役割を推定できることと思います。今後このブログで投稿を続ける中で、各チームのメンバーも所属を明らかにしながら登場していきます。また、関連するチームどうしは 7 つのグループに 分けて組織されています。基礎、デバイスおよびネットワーク、コア OS、開発者エクスペリエンス、ユーザー エクスペリエンス、Web サービス、そしてエンジニアリング システムです。Windows Live グループ (Hotmail、Messenger、Skydrive、Photos、LiveID その他 ) も同様の構造を持ちます。Internet Explorer グループも独自のチームをいくつか持っていますが、もちろん Windows 8 の全体にも寄与しています。

  • App Compatibility and Device Compatibility (アプリ互換性およびデバイス互換性)
  • App Store (アプリ ストア)
  • Applications and Media Experience (アプリケーションおよびメディア エクスペリエンス)
  • App Experience (アプリ エクスペリエンス)
  • Core Experience Evolved (次世代コア エクスペリエンス)
  • Device Connectivity (デバイス接続性)
  • Devices & Networking Experience (デバイス/ネットワーク エクスペリエンス)
  • Ecosystem Fundamentals (エコシステム基礎)
  • Engineer Desktop (エンジニア デスクトップ)
  • Engineering System (エンジニアリング システム)
  • Enterprise Networking (エンタープライズ ネットワーク)
  • Global Experience (グローバル エクスペリエンス)
  • Graphics Platform (グラフィック プラットフォーム)
  • Hardware Developer Experience (ハードウェア開発者エクスペリエンス)
  • Human Interaction Platform (ヒューマン インタラクション プラットフォーム)
  • Hyper-V
  • In Control of Your PC (PC のコントロール)
  • Kernel Platform (カーネル プラットフォーム)
  • Licensing and Deployment (ライセンスおよび展開)
  • Media Platform (メディア プラットフォーム)
  • Networking Core (ネットワーク コア)
  • Performance (パフォーマンス)
  • Presentation and Composition (プレゼンテーションおよびコンポジション)
  • Reliability, Security, and Privacy (信頼性、セキュリティ、およびプライバシー)
  • Runtime Experience (ランタイム エクスペリエンス)
  • Search, View, and Command (検索、表示、およびコマンド)
  • Security & Identity (セキュリティ/ID)
  • Storage & Files Systems (ストレージ/ファイル システム)
  • Sustained Engineering (持続的エンジニアリング)
  • Telemetry (遠隔測定)
  • User-Centered Experience (ユーザー志向エクスペリエンス)
  • Windows Online
  • Windows Update
  • Wireless and Networking services (ワイヤレスおよびネットワーク サービス)
  • XAML

開発、テスト、プログラム管理から成るこれらのチームに加え、製品開発には他にも多くのチームが携わっています。コンテンツ開発チームはオンライン ヘルプ、Web サイト、展開ドキュメント、SDK といった多くのコンテンツの執筆と編集を行っています。製品プランニング チームは顧客お よび市場の調査を主導し、プレリリース ソフトウェアについてのフィードバックや遠隔測定にも細かく注意を払っています。製品デザイン チームは、Windows 8 の全体的なインタラクション モデル、図式言語、および設計言語を開発します。リサーチ/ユーザビリティー チームは、既存の製 品や新しく提案された機能がさまざまな種類の顧客にとってどの程度有効かを示す研究を、現場とラボ内の両方で行います。ローカライズ チームは Windows を 100 以上の言語に展開します (このブログのローカライズも担当しています)。オペレーション チームは何億人ものユーザ ーと 10 億台近くの PC のためのサービスを運営します。そしてここで紹介できるのはほんの一部に過ぎません。

Windows 7 に着手したころ、私たちが耳にした声の中には、Windows チームは大きくなりすぎた、エンジニアリング上の問題を解決するよりも増やすことの方が多い規模になっている、というものもありました。一方でコメントを見れば、非常に幅広いシナリオに対応する多くの新機 能を求める声も大量に寄せられていることがわかります。

新機能の追加と同時に既存機能の変更を。グローバルに利用でき、アクセスが容易で、超高品質な機能を。既存のハードウェアでも動作し、かつ最新のハードウェアの能力をフルに活用できるものを。要望には限りがありません。私たちの仕事は、できるだけ短期間に可能な限りのことを 、しかも非常に大きな規模で、やり遂げることです。エンジニアとして、なかなか大きな仕事と言えるでしょう。

少々長くなってしまいましたが、まだどうやら 5,000 字以内ですので、これをチームの紹介としたいと思います。投稿のためのアイデアや対話を形成するヒントとなりますので、コメントは引き続き大歓迎です。この投稿が、Windows 8 について話し合う上で共通の理解を形成して いく一助となればと思います。

--Steven