RTCを活用したアジャイル開発の実際
日々のオペレーション
さて、いったんマイルストーンが始まってしまえば、あとは計画されたアイテムをこなすだけ、と簡単に考えてしまいがちですが(特に偉い人たちは)、そんな簡単に行かないことは開発者の皆さんなら経験済みだと思います。
例えば、
- 進ちょくが思ったとおりに行かず、最初に立てたスケジュールどおりに進まない
- 新しい要求が入ってきて、それをこのマイルストーンに入れないといけなくなった
- 風邪で寝込んでしまい、3日分仕事ができなかった
こんなときはどうするのでしょうか。自分で背負い込んで、最後に破たんしたら大変です。自分のみならず、チームにも損害を与えてしまいます。
アジャイルではそのような日々の変化に対応するために、例えば毎日決まった時間にわずかな時間だけでもみんなで集まって状況の報告を行うなどというプラクティスを実践し、変化に対応しようとします。
RTCでは開発者個人が特に意識しない間に、状況が“見える化”され、対応を取ることが可能になります。具体的にJazz.netに参加するある開発者の日々の行動を見てみましょう。
1)マイ・ワークアイテム ビューで今日やることの確認
RTCにはマイ・ワークアイテム ビューというビューがあります。開発者は1日の作業の初め(通常は朝一番)にまず、このビューで「新しく割り振られたワークアイテムはないか」「今日やるべきワークアイテムは何か」「明日以降に残っているワークアイテムは何か」を把握します。
2)チーム・セントラル ビューでチームの状況を確認
次にチーム・セントラル ビューを見ます。ここでは、最近チームの中で起きたことを認識することができます。例えば、
- 開発者Aがワークアイテム2のためにソースコードを書き換えて、ソースコード管理システムに追加した
- 開発者Bがワークアイテム1を完了した
- 開発者Cが開発者Aの持っているワークアイテム2にコメントを書き込んだ
- チーム用の夜間ビルドが失敗した
などなど。詳細な情報を取得でき、自分に関係することが起きていないのかいち早く察知することができます。また、各メンバーの負荷を確認することもできます。そのメンバーが現在どのワークアイテムを実行しているのかの確認もできます。
3)ワークアイテムの実行
ソースコードを書いて、ビルドして、テストします。そのステータスの報告ですが、メンバーが行わなければならないのは、実行したワークアイテムの状態を更新することだけです。
例えば、ワークアイテムに費やした時間を記入する、ワークアイテムを完了状態にするなどといったことを行います。ワークアイテムのステータスに基づいてリアルタイムにチームとチームメンバーの負荷や反復計画の進ちょくが更新されます。
1)、2)で行っていることは、スクラムでいうところのデイリー・スクラム・ミーティングで確認することに近いものがあります。一般的なスクラムでは、日々行ったワークアイテムをメンバー全員がデイリー・スクラム・ミーティングで報告することによって、チーム内の状況を把握することで変化への対応を行うわけです。RTCを使うと、上記のとおりミーティングなどでのメンバーからの報告を待つことなく、チームの状況を誰もがリアルタイムに把握できるようになります。
特にJazz.net上の開発は分散開発です。地理的にも時間的にも、すべての人が一堂に会して毎日ミーティングを持つことは難しくなります。RTCのこのような機能は必須の存在になっています。
コラボレーション
チームで動くことを重要視するアジャイルでは、コラボレーション、つまり開発者同士の対話を重要視します。通常コラボレーションというと「実際に話す」「電話で話す」ですね。アジャイルでは「同じ場所にメンバー全員そろって開発」「必要であればすぐに顔を合わせて会話」といった考えもあります。しかし、分散大規模開発には向きません。Jazz.net上での開発の現場でよく使われるものとして、以下のようなものがあげられます。
ワークアイテムに対するコメント
ブログにコメントをつける感覚で、ワークアイテムを中心にしてメンバー間の会話が実現できます。最近よく使われるのは、@wakao などと文中に書くことです。このように書くと、記述したコメントが指定したユーザー(この場合はwakaoというユーザー)に自動的にメールで送付されるので、別メールでいちいち催促しなくてもよくなります。
チャット
「実際に話す」「電話で話す」の次にリアルタイム性が高いのがチャットです。RTCでは、ワークアイテムの中などユーザーIDが表示されるいたるところからチャットを起動できるようになっています。
Jazz.netに参加するメンバーの間ではチャットは最もよく使われるコラボレーション手段です。複数のチャット・ウィンドウが立ち上がって同時並行での会話、複数人が参加してのチャットなど、日々チャットの毎日です。会話の記録をリポジトリーに残すことができるというメリットもあります。英語が苦手な日本人にとっては電話よりもはるかに楽なコラボレーション手段ですね。