pr



「Visual Studio」で実現する、効率的なチーム開発

2008年7月17日に東京・ベルサール神田で開催された@IT情報マネジメント編集部主催『ソフトウェアテスト・ミーティング2008〜なぜわたしたちは「早め」にできないのか?〜』で、マイクロソフトは「チーム開発における成功のためのプラクティス:継続的インテグレーション」と題し、「Visual Studio Team System」による効率的なチーム開発手法について講演した。ここではその内容を詳しくリポートする。

    各担当者が連携し、全体最適を図る

 マイクロソフトはソフトウェアのチーム開発を実現するツールとして「Visual Studio Team System」を提供し、ソフトウェア開発の品質向上を支援している。今回のセッションでは、「チーム開発における成功のためのプラクティス:継続的インテグレーション」と題して、同社 デベロッパー&プラットフォーム統括本部 エグゼクティブプロダクトマネージャの岩出智行氏が登壇。実際に「Visual Studio」を使ったデモを交えながら、チーム開発を成功させるためのポイントを説明した。

 チーム開発が注目される背景について岩出氏は、「ビジネスを支援し、競争優位性を生み出すための差別化ツールとして、ソフトウェアへの期待が高まる一方で、品質や納期、コストに対する要求は年々厳しくなっているのが現状だ」と指摘した。

 こうした課題に対して、「従来のようなエンジニア個人の力に頼った開発モデルではなく、アーキテクトから開発者、テスト担当者、DBプロフェッショナル、そしてプロジェクト管理者まで、各担当がチームとしてコラボレーションすることで全体最適を実現する開発スタイルが求められている」と語った。

 そして、チーム開発を構成するプラクティスとして、(1)モデリング、(2)テスト駆動開発、(3)テスト自動化、(4)継続的インテグレーション、(5)変更管理、(6)プロジェクトの見える化──の6つを挙げ、「この中で、チーム開発の成功に向けて、特に重要な役割を担っているのが継続的インテグレーションであることを紹介した。

 「これは、通常、システム開発の後半で行う統合作業を、初期段階から頻繁に行っていくプラクティスで、ソースコードのビルドだけでなく単体テストなどの各種テストも組み合わせ、コードの検証も行っていく」と説明。実際に「Visual Studio」を使用して、継続的インテグレーションの手順をデモで紹介した。

 継続的インテグレーションの流れとしては、まずビルドサーバーでビルドプロセスを起動し、最新のコードをサーバーにコピー。そのコードに対し、ビルドを行い、コンパイルエラーやAPIの不一致などの問題を検出する。

マイクロソフト デベロッパー&プラットフォーム統括本部 エグゼクティブプロダクトマネージャの岩出智行氏

 次に、自動テストやコードの分析機能を利用し、ビルドの検証(BVT:Build Verification Test)を行い、問題がなければ、ビルドの成果物として開発チームで共有する。これを開発の初期段階から頻繁に繰り返していく。

    頻繁にビルドを行い、ミスを最小に防ぐ

 この継続的インテグレーションによって、システム開発の後半で統合を行う際の課題であった、(1)開発と統合のタイミングが離れることにより問題の原因究明が難しくなる、(2)問題解決におけるコンポーネントの依存関係による副作用の発生、(3)問題解決のコストが把握しづらい──という3点を一気に解消することが可能になる。

 問題の原因究明については、頻繁にビルドを行うことで、前回のビルドと最新のビルドの間隔を短くし、コード開発の記憶が鮮明なうちに容易に問題に対応することができる。また、副作用の発生については、コンポーネントの依存関係をテストなどで常に確認できるため、原因を排除した際の副作用を最小に抑えることができる。

 そして、問題解決のコストに関しては、初期段階での問題検出により、問題自体のサイズを小さく抑えることで、解決までのコストを予測しやすくなるという。セッションでは、継続的インテグレーションによって、実際に問題検出がどう行われるかのデモが紹介された。

 次に岩出氏は、「継続的インテグレーションの効果を最大化するためには、テスト駆動開発とテスト自動化の2つのプラクティスとの連携が重要になる」と指摘した。テスト駆動開発は、コードを記述する前に、仕様としてテストを記述するというプラクティス。これによって、いままでコードを確認するための役割だったテストが、いわばコードの設計書となり、コンポーネントの品質向上にもつなげることができる。

    人、プロセス、ツール──3つがかみ合ってこそ開発は上手くいく

 一方、テスト自動化では、テスト作業の効率化によるコスト削減を始め、テストの再現性確保、手動によるミスの削減などを図ることができる。そして、このテスト駆動開発およびテスト自動化によって作成された各種テストを継続的インテグレーションに組み込んで、繰り返し行うことで、開発者に負荷を掛けることなく、ソフトウェアの品質を高めることができる。

 「ただ、すべてのテストを自動化して実施すると、ビルドプロセスにおけるテストの負荷が増大してしまうケースもある。そのため、チェックインのときはなるべく軽いテストにして、夜間のビルド時にすべてのテストを行うなど、テストの使い分けも考える必要がある」としている。

 さらに、これらのプラクティスを連携するためのカギとして、変更管理のプラクティスである「ソースコードの管理」を挙げた。「ソースコード情報を管理するサーバーを設置し、タスクの情報を共有することで、どんな理由でコードの変更が行われたか、発生したバグがどのコードに関連付いていたのか、バグは解消されたのかなどの情報をすべてトラッキングすることができる。さまざまな情報を一元的に集めることで、より効果的にプラクティスを連携することが可能となる」という。

 このほか、「Visual Studio」の特徴として、テストのコード名に日本語が使用可能、複数のテストをリスト化する機能、ビルドの定義機能、ビルドの成否やテスト状況などのレポートを表示する機能などを紹介した。

 最後に岩出氏は、「今回は、Visual Studioというツールを中心にチーム開発におけるプラクティスの実践を説明したが、実際にはツールの導入だけで成功することは難しい。チーム開発では、それにかかわる“人”、チームメンバーがどう動くかという“プロセス”、そしてツールによる“テクノロジー”の3つがかみ合って始めてチーム開発として効率を上げていくことができる」とまとめた。

提供:マイクロソフト株式会社
企画:アイティメディア 営業本部
制作:@IT情報マネジメント 編集部
掲載内容有効期限:2008年9月4日