チームの生産性向上の鍵は「メンバーのコラボレーション」
分散開発や大規模開発のプロジェクトは、多様な関係者間でのコミュニケーションロスなどの要因により、生産性や品質の低下が懸念される。こうした問題を解消すべく、IBMが取り組んでいるのが、メンバー間のコラボレーションによってチームの生産性向上を目指す『Jazzプロジェクト』だ。
2009年5月13日~5月15日の3日間、東京ビッグサイトにて開催された「ソフトウェア開発環境展」(SODEC)のIBM社ブースでは、このJazzプロジェクト製品を中心としたデモンストレーションが行われた。まずは、Jazzプロジェクトの最初のリリース製品である『Rational Team Concert』(以下、RTC)の概要について解説したプレゼンテーション「生産性を向上するチーム開発」の様子をレポートする。
Rational Team Concertとは
RTCは、ワークアイテムと呼ばれる作業のリクエストを軸に、計画管理、構成管理、変更管理、そしてビルドなどを統合し、プロジェクト全体を「見える化」し、関係者たちがお互いにコラボレーションできる開発環境を提供するツールだ。
分散開発におけるチーム間の連携をサポートするため、wikiやチャット、RSSを統合している。またオープン性やスケーラビリティについて考慮されているので、既存資産や既存ツールおよび、サードパーティ製品との連携もできる。何より、Jazzプロジェクトでは、RTCの開発自体をRTCで管理しているという(最新の情報は、http://jazz.net/ で公開されている)。
Ratinal Team Concertの適用シーン
プレゼンテーションでは、ソフトウエア開発における、ソフトウエアの機能拡張が起こった場合を想定した、RTCの利用例が紹介された。
通常、ソフトウェアの機能拡張が発生した場合、プロジェクトリーダーには、開発メンバーのほかに、サポートスタッフ、営業担当、マーケティング担当といった、プロジェクトの関係者からさまざまなリクエストが上がってくることが想定される。そのリクエストに応えるための作業は、プロジェクトリーダーが各担当メンバーに割り振り、開発者がコードを変更するなどの作業を行う。作業が終わったら。ビルド担当者がソースを集めてアプリケーションを作成する。
この場合、生産性や効率性を妨げる要素として、関係者の立場の違いによるコミュニケーションのロスや、各メンバーが使用するツール間の整合性の問題に起因する情報のやりとりや、出戻りの発生が懸念される。アプリケーション開発は、障害対応や機能拡張など、多様な職種のメンバーによるコミュニケーションが絶えず行われるので、小さなロスであっても、それが積み重なると生産性に問題が生じてしまう。
アイテム駆動型のインフラで実現するトレーサビリティ
RTCの場合、すべての関係者から上がってきたリクエストに対して、ワークアイテム(障害や機能拡張といった種別がある)が作成され、一元管理される。プロジェクトリーダーは、集まったワークアイテムの情報に基づいて、開発担当者に作業を割り振る。このとき、各担当者に、今抱えている案件の情報などをいちいち聞くのではなく、RTCでは、どの人がどれくらいの作業をやっているのか、何件かかえているか、どの程度余裕があるのかを確認し、開発の計画を立てることができるようになっている。
開発担当者は、自分に割り当てられた作業をもとにコードを記述していく。コードの変更の際、何のために変更を行ったか、といったコメントを記入するのではなく、リーダーから与えられたワークアイテムに対してRTC上から紐付けして定義すればよい。同じように、ビルド担当者は、追加された項目や、障害についてをいちいちリストアップしてからリリースノートを作成するのではなく、ワークアイテムのリストを表示するだけで、ビルドに含まれる修正内容や新規機能を得ることができる。
このように、プロジェクト全体を一貫したツールの中で管理するため、情報と成果物のトレーサビリティがとれる。追加修正があった場合でも、元のソースを探す手間はかからない。
チームの独立性を保ちつつ並行開発に必要な統合が行いやすい
プロジェクト計画という観点では、リーダーが作業項目をいずれかの作業工程に割り振ることができ、割り振ったものを開発担当者に渡すことができる。これにより、現在完了しているプロジェクトの作業件数や、次の工程で必要な作業がどれくらいあるかといった進捗管理も一目瞭然だ。
ソースコードのバージョン管理の機能も、複数の開発拠点における分散した並行開発環境を考慮し、充実したものとなっている。チームのメンバーは「Jazzチームサーバ」で管理されているファイル群を自分専用の「ワークスペース」という作業領域に移動して作業する。ワークスペースは、新規開発用、修正作業用、メイン開発用、補修用といった観点で個人あるいはチーム単位で持つことが可能で、作業の独立性を確保している。
また、個人のワークスペースを最終的に統合する場所は、「ストリーム」と呼ばれる。このストリームに統合する際に、競合などの何らかの問題が発生した場合も捕捉可能だ。並行開発を行う場合、チーム用に統合する前に、別の担当者に直接自分の作業内容を渡したいときのため、チームを経由せず、別の個人の作業領域に直接反映するという機能もある。
こうした機能により、個人作業の独立性を保ちながら、チームによるガバナンスをきかせた並行開発が可能になる。
チームメンバーの役割に応じた機能が充実
次に、チームメンバーの役割に応じた使い方をみてみよう。
プロジェクト全体を統括するマネージャーは、数あるプロジェクトの進捗状況を見て、計画の見直しやリソースの再配分の判断をする必要がある。RTCのダッシュボードには、複数のプロジェクトの現在の状況を見る機能がある。
単一のプロジェクトにおける開発リーダーは、自分が担当している作業をメンバーに割り当て、その進捗を確認する必要があるが、この場合もダッシュボードから、作業タスクの件数や残りタスクの数などを見ながら、現在の自分のプロジェクトチームの進捗状況を把握することができる。さらに、個々のメンバーの作業状況報告も確認できるので、メンバーの状況に応じて、作業を再配分したりできる。
開発メンバーは、リーダーに割り振られたコードの作成作業を進めていく。自分の作業をワークアイテムと紐付けることにより、今何の作業をしているかなどの報告業務や、コード中にいちいちコメントを記入する必要もない。実際の作業時間や残りの作業見積りなどもその都度別の手段で報告するのではなく、ツールの中に入力することで、リーダーに伝達できる。
チームメンバーが分散している場合、離れた場所にいるメンバー間では、チャット機能を使って意見を求めたり、発生した競合の解消を求めるなどのコミュニケーションをとって改善していけるのだ。
コードやドキュメントなどの成果物やワークアイテムは、Jazzチームサーバにあるが、RTC自身は複数のインターフェイスを持っているため、EclipseやVisual Studioなどの開発ツールからのアクセスが可能だ。CVSやSubversionといった、他のバージョン管理ツールの既存資産をインポートし、統合することもできる。
ビルドに関しても、成功や失敗など、差分の比較も可能で、継続的なインテグレーションもできるので、素早いリリースが期待できる。
チーム開発のロスを減らして生産性を向上する「Rational Team Concert」
このように、プロセス全体を可視化し「担当者の役割が異なる」「場所が離れている」「ツールが異なる」といった原因に基づくロスを減らし、生産性を向上していくRational Team Concert。IBMでは、実際に体験したい人のために「Rational Team Concertハンズオン・セミナー」も実施している。
続いて、次回ではブースにて展示されていたJazz製品をレポートする。
「ソフトウェア開発環境展(SODEC)」のIBM Rationalブースで行われた、7つの講演を再現するWebcastが公開されました。簡単なアンケートに答えると、セッション資料をダウンロードすることもできます。