アジャイル開発者の習慣-acts_as_agile

第3回 スケール間に連続性を築く

この記事を読むのに必要な時間:およそ 5 分

習慣 #2 スケール間に連続性を築く

プロジェクトを構成するさまざまなスケールのループ構造は,それぞれ独立したものではなく,互いに連続性を持っています。しかし,その連続性は自動的には成立しません。人が絶えず意識し,手を入れる必要があります。スケールとスケールの間をつなぐのがアジャイル開発者の仕事です

ループ構造の各スケール間に連続性を築くために必要なマインドセット(心構え)とプラクティス(実践)を紹介します。

マインドセット「“いま・ここ”のスケールを意識する」

プロジェクトに従事するとさまざまな作業やイベントがあります。計画づくり,ストーリの定義,スタンドアップミーティング,設計の議論,タスクの分割,プログラミング,テスティング,ふりかえり……。それぞれの局面で⁠いま・ここ⁠のスケールがどのレベルにあるのかを意識しましょう。

ストーリを定義する際に,ビジネス価値ではなく実装の詳細を語っていませんか? テストケースを定義する際に,ソフトウェアとしてのそもそも論を語っていませんか?(これは詳細を検討できるだけの情報を得ていないことや,チーム内の認識に齟齬があることのサインです)

マインドセット「スケール間にはギャップがある」

ループ構造は複数スケールで構成されると説明しましたが,これはあくまで比喩です。実際には完全にそのとおりではありません。スケール間にはギャップがあります。

プログラミングレベルでユニットテストの実行を完全に自動化できるからといって,受け入れテストが完全に自動化できるわけではありません。受け入れテストの手動実行を正式なタスクとして計画に組み入れる必要があるかもしれません。

タスクレベルの見積りの合計が,ストーリレベルでの見積りと自動的に一致するわけではありません。見積りの数値的な整合性よりも,タスクの作業結果がストーリと結びついていて,ストーリをタイムボックス期限内に実現できることの論理的な整合性に注意を払います。見積りが妥当かどうかは,チームで考えて判断しなければなりません。

小さいスケールでうまくいっていることを,そのまま大きなスケールに適用するだけではうまくいきません(逆も同様です)⁠重要なことは,ループ構造が各レベルごとの抽象度でリズムを持って正しく回転していることを,動作するソフトウェアで示すことと,各レベルのループを回している理由を,より上位のループ構造から導きだせることです。ストーリはユーザ価値を表現していますか? タスクとストーリとの関連を明確に説明できますか? そのテストケースはタスクの完了のために必要ですか? ⁠このスケールでうまくやるには何をすべきか(そして何をすべきでないか)⁠を常に考える必要があります。

プラクティス「スケール単位での計画づくり」

計画づくりを重視するアジャイル開発では,スケール単位で計画を立てます。計画はさまざまなレベルから構成され,それぞれをタイムボックス化注7します。タイムボックスにはレベルごとにループ構造が存在します図2)⁠

たとえば,四半期単位では,実現する内容を漠然としたテーマのような形でリストにします。直近の四半期については,リリース単位でストーリを一覧にします。リリース対象のストーリを具体的にいつ実装するかはイテレーション単位で計画します。各イテレーションでは,ストーリをタスクに分割し,日々の作業ではタスクを実現するために必要なテスト項目をリストにします。

図2 スケール単位での計画づくり

図2 プスケール単位での計画づくり

プロジェクトカレンダー

四半期,月,週,日といったスケールをチームで共有するためには,プロジェクトのカレンダーを用意するとよいでしょう。ホワイトボードマーカを使って予定やイベントを書き込めると,計画の変更に適応できて便利です。私の周囲ではほぼ日ホワイトボードカレンダーに定評があります。

チームの時間割

私の周囲ではよく作られているものにチームの時間割があります。これは,スケール単位での計画づくりを日次のレベルに適用したものです。

チームの時間割は,学校の時間割と同じです。

1日を複数のコマに分割し,チームの作業時間単位とします。1コマの長さは1.5時間~3時間程度です。

チームの時間割は,1日の作業にリズムとメリハリをもたらします。また,タスク見積りの共通のスケールとして活用したり(⁠このタスクは2コマ分ぐらいだね」⁠チームメンバーの作業結果を同期化するトリガーになったりします注8)⁠

注7)
タイムボックス化については連載の第1回(本誌Vol.39)を参照してください。
注8)
連載第2回(本誌Vol.40)「継続的インテグレーション」も参照してください。

著者プロフィール

角谷信太郎(かくたにしんたろう)

(株)永和システムマネジメント,サービスプロバイディング事業部所属プログラマ。「『楽しさ』がシステム開発の生産性を左右する」と信じてRubyによるアジャイル開発を現場で実践するテスト駆動開発者。目標は達人プログラマ。好きな言語はRuby。好きなメソッドはextend。著書に『アジャイルな見積りと計画づくり』(共同翻訳),『JavaからRubyへ』(翻訳),『アジャイルプラクティス』(共同監訳),『インターフェイス指向設計』(監訳)。

URLhttp://kakutani.com/

著書