毎朝仕事が始まり、夜に終わる。
何かに挑戦し、何かを終わらせ、夜の休憩を得るんだ。

- ヘンリー・ワーズワース・ロングフェロー

タスクの概要

反復計画を行う際に、ほとんどのアジャイルチームはストーリーをタスクに分解する。タスクはストーリーを完了するための個別の作業である。通常、タスクは「時間」(約2~8時間)単位で見積もられる。1つのタスクは1人に割り当て、1つの反復期間内で完了しなければならない。1つのタスクが大きすぎて1つの反復内で完了できない場合、それはストーリーが大きすぎるのであり、ストーリーを分割しなければならない。タスクにより、チーム内でストーリーを完了するために何をするのかということに関する共通認識が得られる。タスクによって、チーム内の依存関係のみならず、ボトルネック、リソースの利用の可否などが明確化する。反復計画のプロセスは通常以下のようなパターンに従う:

チームはストーリーを完了するために、タスクの完了を用いて反復の進捗を追跡する。毎日、各チームメンバーはそれぞれタスクの残時間を更新する。これにより、チームが反復の目的を達成できるかどうかを判断するために利用されるバーンダウンチャートを作る。また、日常的にチームはタスクを利用するが、ストーリーのステータスを用いて、反復の状況を追跡するためストーリーバーンダウンチャートを利用できる。

詳細

チームが行わなくてはならない作業を確実に理解し、確約したことを完成できるように、多くのアジャイルチームではストーリーを完了するために必要な個別の開発作業を見積もり、調整するために非常に詳細な方法を採用している。チームは、ストーリーを詳細な、完成しなければならない個別なタスクへと分解し、ストーリーを完了させるためにはそれらのタスクすべてを行わなければならない。

実際、アジャイルトレーニングによってはタスクオブジェクトを基本な見積もりや追跡のメタファーとして用いている。しかしながら、我々は反復を追跡するためにストーリーレベルに注目することを勧める。なぜならば、ストーリーを使うことで、チームは個別のタスクではなく、ビジネス価値に注目し続けることができる。

ストーリーはタスクによって実装される

タスクは、有用な、細かい作業分解構造(WBS)を提供する。ストーリーひいては反復を確実に完了することを助けるために、チームは、連携、見積もり、状況の追跡、個別の責任の割り当てを行う(あるいは行わない)ために利用することができる。

タスクにはオーナー(そのタスクに責任を持つ人)がおり、時間単位(通常4 から8 時間で、16時間以下。タスクは16時間を超える場合、ストーリーは小さく分割しなければならない)で見積もられる。バーンダウン(計画に対しタスク完了の時間)は、反復の状況を表現する形式の1つである。小さなストーリーであっても納品するのに1つ以上のタスクが必要になることが多い。1つのストーリーのためのタスクが小さなライフサイクルを表していることも一般的である。以下に例を示す。

  • ストーリー51:アップロードする写真を選択する
  • タスク51.1:受け入れテストを定義する- ジュア
  • タスク51.2:ストーリーをコーディングする- ビル
  • タスク51.3:受け入れテストをコーディングする- ジュア
  • タスク51.4:テストに合格させる- ジュア、ビル
  • タスク51.5:ユーザーヘルプを文書化する- シンディー

多くの場合、タスクは関係するストーリーの「子」になる(親のストーリーを削除するとこのタスクも削除される)。しかしながら、柔軟性のために、スタンドアロンタスクが作られ、これによって、チームは「ファイルサーバにメモリに増設する」というような要素のためだけに親ストーリーを作成しなくてもよくなる。

タスクに基づく確約モデル

経験に基づいて、単純に今までのベロシティーを利用し、反復の作業スコープを代表するストーリーをバックログから取り出し、反復を確約するアジャイルチームもある。しかしながら、このようなやり方にはリスクが潜んでいる。なぜなら、「大雑把な」確約は個人の専門分野、休み、他の人の反復に対する確約を考慮しなかったかもしれないからである。そのため、多くのチームがタスクを使っており、すべてのストーリーのタスクが洗い出され、チームメンバーの作業可能時間によってリソースが平準化された場合に反復の目標を確約する。以下は1つの反復の確約を達成するためのプロセスである。

  1. 最上位のストーリーをバックログから取る
  2. ストーリーをタスクに分解する
  3. 個々のメンバーがタスクの責任を引き受け、作業時間を見積もる
  4. チームの時間が無くなるまで上記を繰り返す
  5. チームは反復に収まるストーリーとそれらのストーリーが意味する目標を確約する。

SMARTタスク

Bill Wake氏(ユーザーストーリーのためのINVESTの考案者)は、タスクを記述するためにSMARTという頭字語を用いている。彼は、頭字語の各文字の背後にある意味を以下のように説明している。

  • 具体的(Specific):タスクは、タスクに何が含まれるかを誰もが理解できるように具体的でなくてはならない。
  • 測れる(Measurable):もっとも大事な測定は「これに「完了」と印をつけることができるか?」というものである。
  • 達成できる(Achievable):タスクの責任者はタスクを達成できると期待すべきである。
  • 有意義(Relevant):すべてのタスクは有意義なものであり、対象となるストーリーに貢献するものであるべきである。
  • 時間枠(Timebox):タスクは時間枠を課せられる(特定の期間に制限される)べきである。

このタスクに基づいて確約するアプローチにおいて、個人には自分自身のタスクを完了させ、自分自身のタスクが完了したり、阻まれたときに他の人達とコミュニケーションを取り、さらなる監督なしに次のタスクへと進むことに対する説明責任がある。粒度も大きいし、説明責任も大きい。タスクがすべて完了したら、ストーリーが受け入れられ、反復のゴールが満たされるだろう。

バーンダウンチャート

毎日作業終了後、各人が自分の責任にあるタスクに対し、「残作業時間」を更新する。その際に、見積もりとの対比はあまり行わない。見積もりはあくまでも見積もりであり、実績は現実である。自動化されたツールの少しの支援によって、チームは反復の確約が完成できるかどうかを日々示す追跡図表を持つことができる。下記は一例である。

バーンダウンチャート (引用先: Wikipedia, Pablo Straub)

 


さらに知りたい場合

[1] Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs and the Enterprise, Addison-Wesley, 2007.(邦訳:アジャイルソフトウェア要求:チーム、プログラム、企業のためのリーンな要求プラクティス、翔泳社、2014.)

[2] Wake, Bill. Invest in Good Stories and Smart Tasks. http://xp123.com/articles/invest-in-good-stories-and-smart-tasks/

 

Last update 15 January, 2013

© 2010-2013 Leffingwell, LLC. All rights reserved.