Dennis Minium
Program Manager, Visual Studio Team System
January 2006
日本語版最終更新日 2006 年 9 月 12 日
適用対象:
Microsoft Team Foundation Server
概要: ソフトウェアをチームで開発する際のプロセス最適化を支援する Microsoft Visual Studio 2005 Team Foundation Server について、そのデプロイメント トポロジ、機能セット、および拡張性アーキテクチャを紹介します。
目次
Team Foundation Server とは何か
Team Foundation の形状
Team Foundation Server の要素
拡張性のための設計
まとめ
Team Foundation Server とは何か
Microsoft は、精巧なソフトウェアを作成するビジネスに長年取り組んできました。
巨大チームが、いくつものリリースを重ねながら、複雑なコード ベースを次々に作り出しては絶えず保守に努めてきました。
ソフトウェアの作成を無事完了するためには、バージョン管理、問題点および作業項目の追跡、およびビルド管理のための効率のよいアプローチを開発する必要がありました。
他方、法人顧客側で採用されているプロジェクト管理アプローチを、その広範囲にわたる展望の視点から定期的に把握するために、顧客および業界の専門家と連係して費やした時間はかなりの長さにのぼります。
Microsoft Solutions Framework チームの支援を受けて、そのような技法のエッセンスを抜粋し、柔軟性に富んだ一連のプロジェクト管理要素にまとめあげました。
弊社社内には、これまで培ってきたソフトウェア作成の実績と調査の結果がありますが、それは、新規の一連のテクノロジおよび技法を生み出す方法論にすでに結び付けられています。そのテクノロジおよび技法とは、チーム内のソフトウェア開発プロセスの最適化を図れるように工夫をこらしたものです。
そのような取り組みの結果として生まれたのが、Microsoft Team Foundation Server です。
Team Foundation Server には 2 つの局面があります。
一方では、これには、共同作業の効率を高めるためにプロジェクト チームのさまざまなメンバによって共用される各種機能の集合という局面があります。
チーム メンバは、プロジェクト計画、ワーク プロダクト、および進行状況の査定を、簡単にしかも当然のこととして共有することができます。
Team Foundation Server を構成する主な機能には、次のようなものがあります。
- バージョン管理。バージョン管理を必要とするソース コードおよびその他の提出物を管理します。
- 作業項目の追跡。問題点、要件、タスク、およびシナリオなどの追跡記録をとります。
- プロジェクト管理機能。ユーザー別のソフトウェア プロセスに基づいたチーム プロジェクトの方向付けを可能にし、Microsoft Excel および Microsoft Project を使用した計画と追跡を可能にします。
- チーム ビルド。共通プロセスでの実行可能プロダクトの作成を可能にします。
- データ収集およびレポート作成。Team Foundation Server ツールで集めた情報に基づいて、チーム プロジェクトの状態を査定するのに役立ちます。
- チーム プロジェクト ポータル。Microsoft Windows SharePoint Services サイトとしてパッケージ化されたチーム プロジェクト用の、一元化された通信拠点として機能します。
- Team Foundation 共用サービス。エンド ユーザーからは見えない一方で、ツール作成者および拡張担当者にとっては重要な、いくつかの共通インフラストラクチャ サービスとして機能します。
他方、Team Foundation Server には、統合および拡張性に特に主眼を置いて設計されたプラットフォームという局面もあります。
顧客およびパートナーは、Team Foundation Server の各種要素をカスタマイズし、新たな機能を補足することができます。
そのような拡張の範囲は、非常に単純なものから非常に複雑なものまでをカバーします。
それは、作業項目内のフィールドの名前変更から、まったく新規のツールの統合までの範囲にわたります。
この記事の後半で、そのような機能セットと拡張性アーキテクチャを取り上げています。
ただし、それより先に、Team Foundation Server の一般的なデプロイメント トポロジを理解することが重要です。
Team Foundation の形
Team Foundation は、3 層に分かれたアーキテクチャであり、クライアント層、アプリケーション層、およびデータ層で構成されます。
クライアントは、Web サービスを通してアプリケーション層と対話し、アプリケーション層は、データベース接続を使用して、データ層上の永続データ ストアに接続します。
このアーキテクチャの概要が、図 1 に示されています。

図 1. Team Foundation Server のアーキテクチャ
Team Foundation Server ユーザー インターフェイスの大半は、Microsoft Visual Studio IDE を通して利用することができます。
UI のこの部分は、弊社の顧客およびパートナーが使用するのと同じ VSIP インターフェイスを使用して実装されています。
さらに、Office アプリケーション (具体的に言うと、Microsoft Word および
Microsoft Project) を通して、クライアント側で機能が公開されます。
同じように、Web 要素もいくつかあります。最もよく知られているのは、チーム プロジェクト ポータルおよびレポート サーバーです。
プロジェクト マネージャと、Visual Studio IDE を複雑かつ厄介な環境であるとみなすその他の非開発者向けに、簡素化 UI が作成されました。
技術スタッフ以外のプロジェクト メンバは、言語ツール、デバッガ、および開発者用ユーティリティといった煩雑さに煩わされずに、Team Foundation Client (TFC) を介して、使用したい機能にアクセスすることができます。
それには、プロジェクトの作成およびその進行状況のモニタ、ポリシーの制御、および作業項目の追跡などが含まれます。
言語ツールと Team Foundation へのアクセスの両方を必要とする開発者およびテスト担当者も、この TFC の機能を利用して、簡単に全機能の IDE を増強することができます。
クライアント アプリケーションが書かれた目的が、Visual Studio IDE のもとでの実行、またはスタンドアロンの Windows アプリケーションの実行のどちらであっても、オブジェクト モデルと、充実したプロキシとして稼働する一連の API を介して、アプリケーション層上の Web サービスと通信できます。
そのようなメカニズムによって、ネイティブの Web サービス層に対するプログラミングが大幅に簡素化され、サーバーのラウンド トリップを最小化するための要領のよいキャッシングを行えるようになります。
実際、検証、キャッシング、およびツール相互の対話をはじめとする機能の大半は、クライアント API に組み込まれているので、そのような API のみを使用し、Web サービス API に対する直接的なコーディングを避けるよう、ツール作成者および拡張担当者に対して強くお勧めします。
そうであっても、直接的な Web サービス API を含め、すべての API はパブリックなので、完全な WSDL (Web Service Description Language: Web サービス記述言語) が提供されます。
Team Foundation Server のサーバー部分は、アプリケーション層とデータ層で構成されます。
どちらの層にも、Microsoft Windows 2003 Server オペレーティング システムが必要です。
これらの層は実際には、スケーラビリティを有効化するための機能の論理分割に他なりません。
ただし、その場合、アプリケーション層およびデータ層の機能を 1 つのマシン上で連結し、インストール内容を小型化することができます。
アプリケーション層は、Team Foundation Server の作業の大部分が行われる場所であるとともに、各ツールの Web サービスが公開される場所でもあります。
Team Foundation のアーキテクチャでは、データ層に保管されているデータにクライアント アプリケーションから直接アクセスすることはできません。
データを求めるすべての要求は、アプリケーション層から出す必要があります。
さらに、アプリケーション層上のコンポーネントどうしの通信はすべて、Web サービスを通して行われます。
アプリケーション層は、各ツールの Web サービスに加えて、プロジェクト ポータル用の Windows SharePoint Services (WSS) サイトもホストします。
このサイトは、プロジェクト文書の保管場所である WSS データ ストアの前面にあります。
最後に、SQL Reporting Services の Web サイトは、アプリケーション層でホストされます。
すべての永続データは、データ層に保管されます。
それには、すべての Microsoft Visual Studio Team System ツールの操作可能ストアが含まれ、そのようなストアには、開発者およびテスト担当者ツールで保守されるバージョン管理ストア、作業項目データベース、テスト結果データベース、およびチーム ビルド データベースが含まれます。
データ層は、そのような作業用の実動ストアに加えて、プロジェクトの分析およびレポートで使用されるハイブリッド リレーショナルおよび OLAP データ ウェアハウスもホストします。
データ層のデータの大半は、SQL Server データベースに保管されます。
Team Foundation Server には、最低限 Microsoft SQL Server 2005 が必要です。
チーム ビルドでは、3 層式アーキテクチャにぴったり収まりきるコンポーネントに加えて、専用のビルド マシンの導入が可能です。
ビルドは、クライアントから開始し、ビルド マシン上で稼働し、アプリケーション層上のチーム ビルド Web サービスを通して、データ層上の結果ストアに結果を送信します。
Team Foundation Server の要素
この記事の冒頭で述べたとおり、Team Foundation Server はいくつかの主要機能で構成されています。この後、それらを詳しく取り上げます。
プロジェクト管理
ユーザーは、プロジェクトの進行状況と稼働状態をモニターするために必要なツールとして、作業項目の追跡および Microsoft Office スイートの各種機能と、レポート ウェアハウス内に保管されて分析される情報を一緒に使用することができます。
それ以外に、Team Foundation のプロセス テンプレート メカニズムを併用すれば、ユーザーは各自の環境にあわせてプロジェクト プロセスを調整できます。
プロセス テンプレートは、新規プロジェクトのセットアップに関する一連の指示を定義します。それには、作業項目タイプ、プロジェクトのロールおよび許可、プロジェクトのロードマップとして活用できるように事前にデータを移植された一連のタスク、文書テンプレート、およびレポート定義などの項目があります。
Microsoft Solutions Framework の Agile および Formal プロセス用の既定のプロセス テンプレートは、Team Foundation Server とともにインストールされます。
このテンプレートは、変更および拡張可能ですが、新規のテンプレートを作成することもできます。それによって、顧客はそれぞれのニーズにあわせて開発プロセスを調整することができます。
ちなみに、「チーム プロジェクト」という概念は、Visual Studio の言語プロジェクトとはかなり異なります。
チーム プロジェクトに関与するものには、サーバーベースの共用の作業項目の集まり、ソース ブランチ、レポート、および文書などがあるのに対して、Visual Studio 言語プロジェクトは通常は、実行可能ファイルまたは .dll を作成するのに必要なデータの集まりであります。
チーム プロジェクトのコンテンツは、チーム エクスプローラを使用して表示することができます。
バージョン管理
Team Foundation Server は、企業のソース管理要件をターゲットとする業界屈指のバージョン管理システムで構成されています。
SQL Server という土台で補強されたこの機能は、基礎から始まって、バージョン付きデータへの信頼性の高いセキュアな高速アクセスの手段となっています。
Team Foundation は、チェックイン、チェックアウト、バージョン管理、および差異化/マージのための標準のバージョン管理メカニズムを備えています。
また、シェルビング (完全検証のチェックインを実行しないで、部分的な変更を保管する機能) や、大規模開発の個々の問題について定めた動的チェックイン ポリシーなどの新機能も組み込まれています。
作業項目の追跡
Team Foundation Server の作業項目追跡システムを使用して、バグ、要件、シナリオ、タスク、およびその他のモニター対象として選択する作業項目を保管および評価します。
作業項目タイプは XML で保管されるので、追加のフィールド タイプおよびルールを使用して、すぐに使える作業項目タイプを簡単に拡張および修正することができます。
しかも、まったく新しい作業項目タイプを各プロジェクトごとに作成することもできます。
ユーザーは、Visual Studio IDE で作業項目を直接表示および修正することができます。
また、作業項目追跡システムを Microsoft Excel および Microsoft Project に統合すれば、慣れ親しんだ Office 製品を使用して、作業項目の表示および編集を行うこともできます。
チーム ビルド
チーム ビルドは、パブリック ビルドを作成する簡便な手段となります。
そこでは、自動化テスト、コード チャーンの決定、および作業項目の更新などの、Team System 固有のタスクを使用して、MSBuild エンジンが拡大されます。
チーム ビルドは、アプリケーション層上の Web サービスを通してクライアントと対話する一方で、ビルドおよびテストの実行場所としての別の「ビルド サーバー」もサポートします。
ビルド サーバーは、データ層上のチーム ビルド ストアに状況および結果を記録します。
そのデータは後でウェアハウスにプルされて、分析およびレポートで使用されます。
データ コレクションおよびレポート
Team Foundation Server ツールによって永続化されたデータは、データ層上の SQL Server データベースに保管されます。
どのツールにもウェアハウス アダプタが組み込まれていて、それが、正規化された操作可能テーブルからデータをプルし、分析およびレポートで使用されるデータ ウェアハウスにデータを送り込みます。
このデータ ウェアハウスは、星状スキーマによってファクト テーブルおよびディメンション テーブルに編成された SQL Server データベースです。
SQL Server Analysis Services キューブは、このようなテーブルを基盤に構築されていて、簡単に集約、スライス、およびさいの目刻みを行えるようにします。
SQL Server Reporting Services を使用して作成される、ウェアハウスに対する標準レポートが、Team Foundation Server に付属しています。
これは、バグ傾向、テスト対象範囲、コード チャーンなどの、各種のツールおよびプロジェクトを対象とするさまざまなレポートで構成されています。
顧客はまた、Microsoft Excel およびサード パーティ製のレポート パッケージを使用して、カスタム レポートを作成することもできます。
プロジェクト ポータル
プロジェクト作成ウィザードを使用してチーム プロジェクトを作成すると、Windows SharePoint Services サイトがアプリケーション層上でインスタンス化されます。
このサイトは、チーム プロジェクト用のポータルとして機能します。
既定では、このサイトのホーム ページには、プロジェクトの稼動状態に関する一連のレポートが示されます。
その文書ライブラリには、ユーザーによる修正が可能な文書テンプレートおよびサンプル ファイルが事前に取り込まれています。
各プロジェクトごとに、このサイトを個別にカスタマイズすることができます。
社内でプロジェクト サイトの作成時に使用するテンプレートを設計し直すことができます。
共用サービス
Team Foundation Server のアーキテクチャは、拡張性の簡素化を目指して設計された一連の共用サービスによって支えられています。
そのツールでは、この一連の共用サービスを統合のために使用します。
また、顧客およびパートナーは、それらのサービスを使用して、Team Foundation 環境内で自社独自のツールがファースト クラスの機能として稼働できるようにすることができます。
この後の項では、これらのサービスについて、さらに詳しく考察します。
拡張性のための設計
Team Foundation Server に用意されているどのツールにも、カスタマイズおよび自動化に対するきわめて高い対応性があります。
作業項目の定義、ソース管理ポリシー、ビルド スクリプト、プロセス テンプレート、およびプログラム可能なインターフェイスのすべてが、顧客がそれぞれ独自のニーズにあわせて Team Foundation のインストール内容を調整するための手段となります。
しかも、Team Foundation Server の中心には、外部ツールをファースト クラスの機能として Team Foundation Server 環境に統合するための一連のメカニズムがあります。
このような Team Foundation Server の共用の統合サービスは、図 2 では青色のボックスで示されています。Team Foundation Server のアーキテクチャを活用するためにツール ビルダから提供できる要素は、緑色のボックスで示されています。
Team Foundation Server に付属しているツールは、オレンジ色のボックスで示されています。

図 2. Team Foundation Server との統合
Team Foundation の共用サービスは、以下のもので構成されます。
- リンク サービス。これは、ツールが、保有しているデータ要素どうしの間で、疎結合リレーションシップ (「リンク」) を確立できるようにする機能です。
たとえば、Team Foundation Server では、問題点のある作業項目と、その問題点を修正するために変更されたソース コードのリレーションシップが、この種のリンクとして保存されます。
ツールは、そこに関与するためには、Team Foundation の「成果物」としてデータを公開する方法を実装し、自身に対するクエリに応答する必要があります。
ツールは、この機能を使用して、もともと認識するようには設計されていないリレーションシップに関与することができます。
- セキュリティ サービス。これは、Team Foundation Server に固有のセキュリティ グループをサポートします。このグループを使用して、許可割り当てに対する Windows 識別を収集することができます。
Team Foundation Server から見ればローカル側であるこのようなグループは、IT 部署の助けを借りなくても管理することができます。
新規のツールを Team Foundation Server に導入する場合、グループ セキュリティ サービス API を使用して、このグループがそのツールで認知される必要があります。
セキュリティ サービスはまた、許可サービスとしても機能します。
独自の許可メカニズムを備えていないツールの場合、オブジェクトのセキュア化と許可の確立のために、セキュリティ サービスを使用するオプションを与えられます。
- イベント サービス。これは、Web サービスをベースとする pub/sub メカニズムです。
お察しのとおり、ツールはイベント サービスに対してイベントを発生することができます。
サブスクライバは、自身のサブスクリプション基準にイベントが一致したときに通知を受け取るように登録することができます。
通知の受信先は、Web サービスまたは電子メール アドレスのどちらでもかまいません。
受信先を Web サービスにする場合、通知の送付時に呼び出される Web サービスの URL をサブスクリプションに組み入れておきます。
電子メール アドレスにする場合、SMTP サーバーを介した電子メールでの通知が可能になります。
- 種別サービス。これは、リンク サービスと連係して稼働して、事前定義の分類法に従って Team Foundation Server の成果物を分類できるようにします。
それによって、共通の「自然」分類法を共用しない成果物を扱うツールの場合でも、共通軸に沿って他のツールとの間でレポートを発行しあえるようにデータを編成することができます。
たとえば、作業項目がチームによって編成されるのが自然であって、テストはコンポーネントによって編成されるのが自然である場合、それに加えて、テストがチームによって編成されるようにすることによって、作業項目と一緒にそのテストをレポートできるようになります。
- 新規のツールを Team Foundation Server に導入する場合、その成果物タイプ、リンク タイプ、イベント スキーマ、およびサービス インターフェイスは、登録サービスを通して登録されます。
新規ツールのクライアントは、登録サービスにクエリして、そのロケーションを見つけ出します。
顧客およびパートナーは、このような共用サービスに加えて、さらに別のさまざまなプラグ ポイントの利点を活用して、Team Foundation Server にツールを完全に統合することができます。
図 2 の緑色のボックスの詳細を以下に説明してあります。
- クライアント エクスペリエンスを一貫性のあるものにするためには、VSIP を使用して UI を IDE に統合します。
別の方法として、スマートなプロキシ層を使用して、アプリケーション層にアクセスするスタンドアロンの Microsoft .NET アプリケーションを構築することもできます。
- ツールの成果物の作成をチーム プロジェクト作成ウィザード (および、これを駆動するプロセス テンプレートも) に追加します。
- ツールとそのデータが、Visual Studio チーム エクスプローラ上でノードとして表示されるようにします。
- ウェアハウスの動的スキーマ修正機能を使用して、ご使用のツールのデータにあわせてウェアハウスを拡張します。
次に、ご使用のツールの操作可能データをウェアハウス構造体内にプルするためのウェアハウス アダプタを構築します。
まとめ
この記事の解説は、Team Foundation Server の諸機能およびアーキテクチャの表面に触れたに過ぎません。
Team Foundation Server に関する詳しい解説は、http://www.microsoft.com/japan/msdn/vstudio/teamsystem/ の MSDN に記載されています。
著者の紹介
Dennis Minium は、Visual Studio Team System の主任プログラム マネージャであり、
VSTS の統合アーキテクチャの定義および設計に携わっています。
同氏が主に重点を置いているのは、VSTS の基盤である Team Foundation Server ソフトウェアを、パートナーおよび顧客のどちらにとっても拡張およびカスタマイズの点で充実していてしかも使いやすい環境にすることです。
同氏は、VSTS チームに配属される前は、Microsoft で各種アプリケーション開発ツールに取り組んでいました。
Microsoft への入社以前の同氏の経歴としては、主に社内アプリケーション開発用のツールおよび方策の作成を中心として活躍していました。