アジャイルにおけるキャパシティ プランニングとは
アジャイル キャパシティ プランニングとは、アジャイル プランニング プロセスの一部であり、これによってアジャイル チームのキャパシティを計算します。こうしたプランニングにより、生産性の高いエンジニアリングを行う上で利用可能な時間についてチーム内での理解が深まります。
たとえば、アジャイル チームのキャパシティを計画するには、各チーム メンバーの空き状況と休暇の情報を収集し、各人のキャパシティを加算してチーム全体のキャパシティを計算する必要があります。また、スプリントの期間、バックログ項目、1 日の標準的な勤務時間数、競合する優先順位を考慮してキャパシティを適切に評価しなければなりません。こうしたプロセスを経ることで、チームがスプリント内での作業に自信を持ってコミットできる状況が整います。
IT キャパシティ管理と、ITIL のキャパシティおよびパフォーマンス管理という用語は、IT チームにとって同様のプロセスを意味します。どちらのアプローチも、将来のビジネス ニーズを満たす十分な IT リソースを確保するのに役立ちます。
アジャイルでキャパシティを計画するタイミング
アジャイルでのキャパシティ プランニングは、スプリント プランニング ミーティングの前に行います。この手法は、コミットメントベースのスプリント プランニングやキャパシティベースのスプリント プランニングとも呼ばれます。
スプリント キャパシティ プランニングの参加者
スプリント キャパシティ プランニング ミーティングには、プロダクト オーナー、スクラム マスター、開発チーム メンバーが参加します。ミーティングは 30 分以内で終わらせます。場合によっては、メンバーと直接会わずにキャパシティを計画することもあります。
スクラムにおけるチーム キャパシティとは
スクラム フレームワークの目的はチーム連携の改善にあるとは言え、キャパシティを超えてコミットしたスクラム チームには課題が生じることがあります。コミットメント主導でのプランニングやアジャイル キャパシティ プランニングを行えば、そうしたオーバーコミットなしにタスクを完了するのに十分なキャパシティを確保できます。
アジャイルにおけるチーム ベロシティとチーム キャパシティの違いとは
ベロシティとは、特定期間においてアジャイル チームがスプリントあたりに得られるストーリー ポイントやタスクの平均数を測定する概念であり、チーム キャパシティとは、スプリントで利用可能な開発時間を意味します。
アジャイルでのキャパシティを計算するには
アジャイルのキャパシティ プランニングでは、ストーリー ポイントを使用するベロシティ プランニングと 、エンジニアリング上で利用可能な時間を計算するキャパシティ プランニングという 2 つの方法を使用します。次に、ストーリー ポイントのキャパシティと、利用可能な時間を計算する方法を詳しくご紹介します。
ストーリー ポイントに基づいてキャパシティを計算するには
ストーリー ポイントを基にキャパシティを計算するには、ベロシティ主導のスプリント計画で、一定のチーム サイズ、スプリント間で類似する作業、一定の長さのスプリントを想定します。
softsolutions (ソフトソリューションズ) の創設者兼 CEO シャイ・シャンディル (Shai Shandil) 氏はこう語ります。「成熟したチームの場合、測定基準に、時間ではなくストーリー ポイントを選択することがあります。理由はさまざまですが計算方法は同じです。唯一異なるのは、作業時間ではなくベロシティをチームのキャパシティとする点です。チームのベロシティは、通常、直近のスプリントで完了した作業に相当するポイントの平均値で表します。」
Project Management Essentials, LLC (プロジェクト マネジメント エッセンシャル) の主要創設者であるアラン・ザッカー (Alan Zucker) 氏は、アジャイル チームがキャパシティを計画する背景について、こう解説します。「従来のプロジェクトでは、タスクの期間を日単位または時間単位で見積もっていました。この場合、作業完了にかかる時間を集計してスケジュールを作成します。しかし私自身の経験とデータによれば、こうした従来の推定方法は効果的ではありません。作業を予算内かつ想定内で予定どおりに完了できたのはプロジェクトの約 3 分の 1 だけであり、平均的なプロジェクトでは約 75% を上回る予算超過が生じています。」
同氏はこう補足します。「アジャイルではそれとは異なるアプローチを取ります。チームでは、一定期間のイテレーションまたはスプリントで新しい機能を開発することになり、こうしたスプリントの長さは、多くの場合 2 週間です。また、キャパシティ (スプリント内で完了可能な作業量)、つまりユーザー ストーリー完了のために必要な労力を見積もります。イテレーションの初めには、短いプランニング ミーティングを開き、そのキャパシティで達成可能な作業の認識合わせを行います。それは、バケツを満たすのに似ています。バックログから取った作業をバケツが一杯になるまで注いでいくものだからです。」
同氏は、キャパシティと作業時間を時間単位ではなく、フィボナッチ数列に基づくストーリー ポイントで見積もることを推奨しています。「その単位を使えば、さまざまな作業の相対的な規模をすぐに見積もることができます。つまり「このストーリーは、あのストーリーよりも 2 倍、3 倍、5 倍規模が大きい、または複雑」というように予測可能なわけです。」
同氏は、チーム間でストーリー ポイントを比較しない方が良いとアドバイスします。比較すれば、言わば得点のインフレが進むだけだからです。「ストーリー ポイントはチームに固有のものであり、通常どのチームでも、サイズを見積もるためのチーム内プロセスを開発します。そのための最良の方法とは、過去のパフォーマンスに基づいた見積もりです。つまり、直近数回のイテレーションで得られたストーリー ポイント数に従って見積もります。それ以降のイテレーションのキャパシティについては、休日、チームの休暇、今後のトレーニングといった既知のイベントに合わせて見積もりを調整する必要があります。たとえば、アジャイル チームにメンバーが 10 人いて、スプリントが 10 日間、チームが各スプリントで完了したストーリー ポイント数が 100 だとしましょう。スプリントに休日が 1 日あれば、そのスプリントのキャパシティを 10 ポイント減らすことになります。チーム メンバーがさらに休暇を取る場合は、それに応じてキャパシティを調整します。」
キャパシティベースのスプリント プランニングで時間単位の計算を行うには
キャパシティベースのスプリントは、各バックログ項目の完了に必要な時間を見積もり、その時間に基づいて計画します。また、エンジニアリング キャパシティの時間を念頭に置いて、スプリントに合ったタスクを選択します。
キャパシティベースでスプリントを計画するには、次の手順に従います。
- チーム メンバーの可用性を計算: この最初のステップでは、生産性の高いエンジニアリングを行う上で利用可能な時間を計算します。
- スプリント期間を計算: 各スプリントに割り当てた日数の把握が不可欠です。
- 1 日の標準時間を計算: この数字には、毎日の勤務時間数を含めます。
- 可用性に関するその他の要因を考慮: 休日、休暇、シャットダウンなど、プランニング プロセス中の勤務時間に影響を与える要因を考慮しなければなりません。
- 他の作業を特定: スプリント作業でのエンジニアの生産性を下げる要因となるその他のプロジェクトや優先順位を確認します。
- フォーカス ファクターを計算: フォーカス ファクターとは、各日において、チームが中断されずにスプリントの目標達成に集中できる割合です。
キャパシティベースのスプリント プランニングの例
このセクションでは、キャパシティ プランニングの例を 3 つ紹介します。1 つ目では、スケジュールに追われているときに誰にでもありがちな例を挙げ、2 つ目と 3 つ目では、アジャイル キャパシティ プランニングでの実例を挙げます。
「ニューヨーク市に初めて旅行に行くとしましょう。見てみたい観光地が 20 か所、体験したいことが 15 種類、行ってみたいレストランが 10 軒あります。しかし滞在するのは 5 日間だけです。これらをすべて行うのは物理的に不可能なので、何かを優先し何かをあきらめる必要があります。」プロジェクト アンド チーム (Project & Team) でアドバイザーを務めるサーヒル・パニカー (Saahil Panikar) 氏は、そう話します。
同氏はこう続けます。「スタテン アイランド フェリーに乗ると、往復に少なくとも 2 時間かかるし、行きたいレストランは港の近くにはないとわかっているので、この計画の優先度を下げます。セントラル パークの散策、ニューヨーク ベーグル、大道芸は同時に楽しめるので、これらの優先度は上げます。これで、最優先したいものだけで旅の計画を立てることができました。キャパシティ プランニングとは、自分 (または自分のチーム) の時間的な制限を認めた上で、その価値を最大限に引き出すことです。」
シャンディル (Shandil) 氏もキャパシティ プランニングについて同様のシナリオを挙げました。「スクラム チームで、キャパシティ プランニングのために最も広く行われているのは、スプリント プランニングの儀式です。この儀式を定期的に行い、ユーザー ストーリーやタスクの完了にかかる時間 (またはポイント) を見積もり、優先度順にタスクを並べ替えます。見積もった値の合計がそのチームのキャパシティ (または速度) と等しくなったら、プランニング セッションは終了です。」
同氏は、メンバー 3 人のチームが 1 人当たり週 40 時間働くことを想定して、実践的な例も挙げています。
「チーム メンバーが 3 人いて、全員が週 40 時間働くとします。この場合に 2 週間のスプリントを計画すると、キャパシティは 240 時間です。つまり、次のように合計します。3 x 40 x 2 週間 = 240 時間」
次に、すべてのタスクを確認して時間を割り当て、何が実現可能かを判断します。同氏によると、以下のように「見積もりの手法を使って、リストにある 5 つのタスクを見積もります。」
- タスク 1 - 50 時間
- タスク 2 - 80 時間
- タスク 3 - 60 時間
- タスク 4 - 70 時間
- タスク 5 - 40 時間
「ご覧のように、タスク 4 の見積もりがチームのキャパシティを超えているので、タスク 4 を断りタスク 5 を引き受けてスプリントをキャパシティ内に収めます。これで、作業時間は合計 230 時間となりました。」
Absio (アブシオ) のリード ソフトウェア エンジニアであるセルゲイ・ズラヴェル (Sergii Zhuravel) 氏は、アジャイル キャパシティ プランニングの計算例をこう解説しています。「5 人のメンバーがいるチームで、2 週間のスプリント (10 日間) を設定し、毎日 8 時間働くとします。まず次の式を使って、総キャパシティを計算してみましょう。」
チームのメンバー数 * 時間 (時間) * 日数 = チームの総キャパシティ
5 * 8 * 10 = 400 時間
同氏はこう続けます。「しかし、この場合の問題は、合計時間を基準にすると、チームの燃え尽き、焦りによる作業品質の低下、チーム満足度の低下を招きかねないことです。実際のキャパシティを最も適切に特定するには、フォーカス ファクターを使うとよいでしょう。フォーカス ファクターを使ってキャパシティを計算すると、気を散らさずに作業に専念できるキャパシティを正確に計算できます。この例のフォーカス ファクターの範囲は 0.6 ~ 0.8 なので、スプリントの実際のキャパシティは 400 * 0.8 = 320 時間になります。」
アジャイル キャパシティ プランニング テンプレート
アジャイル キャパシティ プランニング テンプレートをダウンロードする
この包括的なキャパシティ プランニング テンプレートを使用すると、作業のキャパシティ、有効キャパシティ、開発タスクに関連する時間を計算できます。最初に従業員の総数、勤務時間、稼働率を入力し、次に各プロジェクトに必要な時間をリスト アップします。このキャパシティ プラン ダッシュボードでは、必要なキャパシティの合計、有効キャパシティ、リソース不足を自動的に計算できます。
その他にもアジャイル キャパシティのプランニングおよび管理用テンプレートをまとめてご用意しています。プランニング活動の具体化にご活用ください。
キャパシティベースのスプリント プランニングに役立つヒント
このセクションでは、アジャイルの専門家がキャパシティ ベースのスプリント プランニングに関するヒントを教えてくれます。こうしたヒントは、次のスプリントを計画する際に、プランニング活動をシンプルに保つことから計画外の中断に備えることまで、さまざまに利用できます。
シャンディル (Shandil) 氏は、キャパシティベースのスプリント プランニングを開始するのに役立つヒントを 2 つ紹介しています。「常にシンプルにすることを心がけましょう。精度を完璧にすることを最初から気にしてはなりません。この時点で考慮すべきなのは、チームが自力で見積もりを行い、その後、徐々に精度を高めることです。もう 1 つは、次のスプリントに進んでも同じキャパシティを維持することです。そうすれば、学習曲線が向上します。」
ズラヴェル (Zhuravel) 氏は、フォーカス ファクター値の適用に役立つヒントを次のように提示しています。「経験の浅いチームの場合、0.6 などの小さいフォーカス ファクターを使いましょう。」
新しい機能を提供するためのチーム キャパシティを見積もる際には、どのような要因がチームの時間に影響を及ぼすかを考慮することが不可欠です。ザッカー (Zucker) 氏はこう提案します。「チーム キャパシティは、計画外の作業に応じて調整しなければなりません。計画外の作業とは、製品バックログの作業以外に生じるあらゆる業務を指します。たとえば、全員参加の会議、業務命令による避難訓練、生産上の問題のサポートなどです。つまり、チームの生産的な時間を奪うあらゆる通常業務を意味します。中断を考えずに 100 ポイントのキャパシティを確保できると仮定しがちですが、理想的なチームなら、中断を想定して 90 ポイントを設定するでしょう。」
同氏は、キャパシティとストーリー ポイントはチーム固有のものだとも強調しています。「キャパシティやストーリー ポイントをチーム間で比較してはなりません。チームの結果を比較すれば、難易度のインフレ、つまり実際の難易度が反映されなくなり、プロセスが武器化されます。たとえば、チームのキャパシティが、チーム A は 100 ポイント、チーム B は 200 ポイントだとします。チーム A に、チーム B の半分の能力しかないと伝えれば、チーム A は見積もりを 2 倍や 3 倍に増やしかねません。難易度のインフレを避けるために、直近のスプリントで達成した以上のキャパシティを次のスプリントに設定できないというルールを課すようにします。」
キャパシティベースのスプリント プランニングにおけるアウトプットとは
キャパシティベースのスプリント プランニングにおけるアウトプットの役割は、開発チームのキャパシティ定義だけに留まりません。その目的は、チームがスプリントで実行するバックログ項目を決定することです。利用可能なチーム キャパシティは慎重に検討する必要があります。
アジャイル キャパシティ プランニングの利点と重要性
アジャイル キャパシティ プランニングにより、アジャイル チームは、タスクに正確にコミットし、それらを完了できます。品質の高い計画を立てれば、リソースが要する時間とスキル上の課題をより適切に予測できます。
アジャイル キャパシティ プランニングの主な利点を次に示します。
- エビデンスに基づく予測の改善: シャンディル (Shandil) 氏によると、「アジャイル キャパシティを計画することで、過去のミスや見積もりの誤りから学び、その知識を新たなスプリントにすぐに適用できるようになります。最終的には、リーダーにとって実用的なレベルの予測可能性をもたらすまでに向上します。」
- 予測可能性の向上: 「ソフトウェアの世界では、予算の超過、デリバリの遅れ、品質の悪さという課題が全体的に続いていました。」と同氏は言います。「その理由は、プロとして大量の作業を予測する方法を見つけ出せないことにあります。アジャイル キャパシティを計画すれば、その問題を解決できます。取り組みに着手したばかりの頃には、当然、予測できませんが、すぐに失敗から学んで行動を起こし、予測可能性を確保できるようになります。」
- チームの士気向上: 「効果的なキャパシティ プランニングは、アジャイル チームが健全性を維持し、継続的に機能するために非常に重要です。『フル稼働しているので負荷が減らない限り次の作業は受けられない』と反論するチームを尊重し、『ビジネスのための使い捨てリソースなどではなく貴重だと考えているし、能力を発揮できる環境を用意したい』とチームに伝えられる組織であれば、メンバーは忠誠心を高め、期待に応えようと常に最善を尽くすものです。」パニカー (Panikar) 氏はそう語っています。
- 信頼の向上:
「信頼を得られることは、キャパシティ プランニングの最も重要な利点です。コミュニケーションによって、事業部門と開発部門の間で互いの信頼が深まり共感も高まります。」Scaled Agile, Inc. (スケールド アジャイル) の SAFe フェロー兼主任コンサルタントであるハリー・コーネマン (Harry Koehnemann) 氏はそう語ります。「予測どおりにタスクを実行できれば、事業部門と開発部門との間にありがちな緊張を解くことができます。」 - コミットの信頼性向上: ズラヴェル (Zhuravel) 氏はこう説明します。「キャパシティを計画すると、現在のスプリントに対する実際のチーム キャパシティを把握し正確にコミットできます。スプリント キャパシティは休日や計画済みの休暇によって変動する可能性があるため、実際のキャパシティを事前に確認し、それに応じてコミットすることをお勧めします。」
アジャイル キャパシティ プランニングの課題
キャパシティを計画せずに、過大な約束をしたり、過小な成果物を提供したりすることは珍しくありません。キャパシティ プランニングには利点がありますが、次のような一般的な課題が生じる可能性もあります。
- 一貫性のないデリバリ: 「献身的ではないチームのキャパシティは、スプリントごとに変化します。」とシャンディル (Shandil) 氏は指摘します。「たとえば、あるスプリントに 240 時間、次のスプリントに 80 時間、その次のスプリントに 300 時間かかるようであれば、予測可能性は確保できません。キャパシティがそのように変動すると、本来のパフォーマンスから得られたはずの成果を得られなくなります。」
- スプリントの曖昧な区切り: 「スプリントの区切りは厳守しなければなりません。」とパニカー (Panikar) 氏は言います。「タスクが減らされずに、別のタスクが追加されることが少なくありません。これは、チームのキャパシティが守られていないことを意味します。」
- 不十分な優先順位付け: 同氏はこう続けます。「効果的なキャパシティ プランニングを妨げる特に大きな課題は、十分に把握されていない優先度『高』の課題がバックログの最上位に置かれることです。これは、不明確な作業へのコミットを招きかねません。チーム メンバーが、作業を開始するまで正確な要件を把握できないからです。こうした動きは、往々にして、不適切な見積もり、ストーリーの崩壊、チームのコミット不履行につながります。」
- 困難な拡張: 「キャパシティ管理の最大課題の 1 つは拡張です。アジャイル プランニングは、20 年以上にわたり、チーム レベルで広く使用され成果を上げており、多くの場合、調整は行われませんでした。」とコーネマン (Koehnemann) 氏は言います。「ほとんどの組織で、非常に多くのチームを連携させることが求められていますが、予測可能な方法で戦略を拡大し組織全体で実行することが困難になっています。」
Smartsheet のリアルタイムの作業管理でアジャイル キャパシティ プランニングを合理化
ニーズに合わせ変化に対応できるようデザインされた、柔軟性のあるプラットフォームで、チームの能力を最大限に引き出しましょう。 Smartsheet プラットフォームなら、いつでもどこでも簡単に作業の計画、保存、管理、およびレポート作成が可能なため、チームはより効率的かつ効果的に仕事を進めることができるようになります。作業に関して主要なメトリックを表示したり、リアルタイムの可視性を提供したりするために、ロールアップ レポート、ダッシュボード、および自動化されたワークフローを作成する機能も装備されており、チーム メンバーをつないで情報共有を促進することが可能です。 やるべきことを明確にすると、チームの生産性と作業達成能力が向上します。ぜひこの機会に Smartsheet を無料でお試しください。