アジャイル開発用語の一つに「ベロシティ」があります。ベロシティとは、企業のプロジェクトにおいて開発を担当するチームが作業を進める「速度」または「作業量」のことです。
この記事では、アジャイル開発におけるベロシティに焦点を当て、アジャイル開発やベロシティの定義、有効な活用方法について解説します。
ベロシティの定義
ベロシティとは、企業のプロジェクトにおいて開発を担当するチームが作業を進める「速度」または「作業量」を指します。ベロシティを活用し、スクラムを組んでいる期間内に完了できる作業量をストーリーポイントで表せば、業務完了までの期間が予測可能になります。
ベロシティは、作業完了見込み時期の予測やスクラム(仕事を進めるために組まれたチーム)の成長度合いを把握する際に役立てられます。主な活用方法、スクラムやストーリーポイントについては、次章で詳しく解説します。
アジャイル開発とは
アジャイル開発とは、企業の価値を高めるために、顧客に対して高品質なサービスを素早く提供し続けることを目的とした開発手法です。具体的には、一定の開発業務を反復しながら短いサイクルで顧客からのフィードバックを受け、自社成果物の価値を確認しつつ開発を続けていきます。
アジャイル開発のメリットには「仕様変更に強い」「開発がスピーディに進む」「顧客の満足度が高くなりやすい」といった点が挙げられます。厳密な仕様が決まっていないため、顧客の要望に柔軟に応えられるのです。また、開発途中の仕様変更に対応可能なことから、短期開発の実現にもつながっています。さらに、開発工程を後戻りさせる必要もないため、コストの削減にも役立ちます。
一方で、アジャイル開発には「開発の方向性やターゲットを見失いやすい」「開発プロジェクト全体の進捗管理が難しい」といったデメリットもあります。顧客の要望に応えやすく、開発途中の仕様変更が可能なアジャイル開発ですが、同時に目的やスケジュール、ターゲットを把握しづらくなってしまうのです。
そのため、アジャイル開発の目的は「顧客に継続的なサービスを提供すること」であるという意識が必要です。
アジャイル開発の詳細については、以下の記事でも解説しています。併せてご覧ください。
アジャイル開発とは?特徴やウォーターフォールとの違いなど徹底解説
ストーリーポイントとは
アジャイル開発の一つであるスクラムでは、ストーリーポイントを用いて見積もりを出しています。ストーリーポイントとは、ユーザーストーリーを実装するのに必要なコストを見積もるための単位です。
ユーザーストーリーとは、システムがユーザーに対して提供する価値を自然言語で書いたものです。アジャイル開発において要件定義の代わりに用いられます。
ストーリーポイントとは、スクラムで作業項目の規模を見積もる手法の一つです。一般的な時間見積もりの場合、見積もり担当者の経験やスキルによって結果に差が出てしまいます。しかし、ストーリーポイントによる見積もりは差異が発生しにくく、スクラムメンバー内での認識のズレも生じにくい傾向にあるのです。
その理由としては以下3点が挙げられます。
- ユーザーストーリーのストーリーポイントに対する相対的な見積もりである
- チーム全員で繰り返し議論する
- 見積もったストーリーポイントはベロシティ(チームの開発速度)に基づいてスケジューリングされる
ユーザーストーリーについては以下の記事でも詳しく解説していますので、ぜひこちらもご覧ください。
ユーザーストーリーとは?作成のメリットや方法、ポイントを解説
スクラムについては、以下の記事でも解説しています。併せてご覧ください。
アジャイル開発とスクラム開発の違いとは?それぞれの開発手法について特徴やメリット、その関係性について解説
また、システム開発において少しでも正確な見積もりに近づけるために「プランニングポーカー」という手法を用いる場合もあります。
プランニングポーカーは、担当者一人が見積もりを出すのではなく、開発チーム全員で見積もりを算出する方法です。それぞれの結果に差異が出れば必ず議論を行い、相対的に見積もることで、より正確さを向上させます。
プランニングポーカーについてはこちらの記事でも詳しく解説しております。
アジャイル開発におけるベロシティの活用方法
ベロシティとは、企業での開発プロジェクトにおいて、開発を担当するチームの「作業速度」または「作業量」を指す言葉です。ここでは、アジャイル開発におけるベロシティの主な活用方法を3つ紹介します。
スプリントの達成可能性を予想する
アジャイル開発で新しいスプリントを開始する際には、スプリントプランニングで実施するストーリーを見ながら計画を立て「このスプリントで予定している作業が完了するかどうか」を検討する必要があります。そこで参考にしたいのがベロシティです。
方法としては、予定しているスプリントの合計ポイントを確認し、前スプリントのベロシティと比較して達成可能なポイントであるか否かを確認します。その際、前スプリントだけではなく、ある程度の幅を取って複数のスプリントと比較することをおすすめします。稼働日が少ないスプリントや休みのメンバーがいたスプリントは、ベロシティに波ができるためです。目安としては、直近の3スプリント程度を比較対象にすると良いでしょう。
スプリントの詳細については、以下の記事でも解説しています。併せてご覧ください。
スプリントとは?アジャイル開発やスクラムとの関係性、メリットを解説
開発の完了時期を予測する
ベロシティは開発の完了時期を予測する際にも活用します。案件全体のリファインメントが完了した後、ベロシティを用いて予測を行います。
以下はストーリーポイントとベロシティをもとにした、開発完了時期を予測する方法と計算例です。
【計算方法】
案件全体のストーリー合計÷チームのベロシティ=予測スプリント数
【例】
案件全体のストーリー合計:400ポイント
チームのベロシティ:20ポイント
400÷20=20
つまり「予測されるスプリント数は20」という結果になります。1スプリントが1週間であれば、20週で開発が完了する見込みです。
あくまでも見込み数値ではありますが、直近のスプリントで完了したベロシティを参考に算出しているため、根拠のある予測といえるでしょう。
チームの成長度を測る
前述の通り、ベロシティとは企業のプロジェクトにおいて開発を担当するチームが作業を進める「速度」または「作業量」の値です。そのため、ベロシティが安定している場合や、上昇傾向にある場合は、チームが成長している証拠でもあります。
つまり、ベロシティを記録していればチームの状態が可視化され、作業が進んでいるのか、それとも滞っているのかが把握できるようになるのです。ベロシティでチームの成長度を測ることは、業務の効率化や問題の解決、スキルアップにもつながるでしょう。
また、企業に所属していると他のチームやプロジェクトに移動する可能性も出てきます。移動先チームの作業速度を把握する際にも、ベロシティの数値は有効です。
ベロシティの誤った使い方
開発を円滑に進めるためにも、ベロシティの誤った使い方には注意が必要です。以下、ベロシティの使い方のNG例をご紹介します。
直近の1スプリントだけで判断する
ベロシティは、直近の1スプリントだけを参考にして判断することはおすすめできません。ベロシティには「環境起因による波」があり、稼働日やチームメンバーの出勤率、見積もりの正確さによる影響を大きく受けています。そのため、直近の1スプリントのみを参考に判断すると、進捗が悪くなったり同じ失敗を繰り返したりする可能性が高くなってしまうのです。
失敗を回避するためには、できるだけ複数回のベロシティデータを参照し、その平均値を基に判断することが大切です。
ベロシティを上げることが目的になっている
ベロシティは数値で結果が表示されるため、開発チーム内でベロシティを上げようとしたり、他チームと数値を比較して競争心を働かせたりしてしまうかもしれません。ベロシティの数値を上げるのは良いことですが、いつの間にか目的が「ベロシティを上げること」にならないように注意が必要です。
ベロシティを上げること自体が目的になってしまうと、残業の増加や過度なプレッシャーからのストレス、チーム同士の関係性悪化などにつながる恐れがあります。
本来ベロシティの目的は、業務を安定させて予測可能性を高めることです。ベロシティを上げることに躍起になると数値にばらつきが生まれ、開発が予定通りに進むかの判断すらできなくなってしまいます。ベロシティは、チームが安定したペースで開発作業をするための参考として活用する数値であることを意識しましょう。
他チームのベロシティと比較し競争する
ベロシティはチームによってストーリーポイントの基準が異なります。基準がチームごとに違っていれば、相対的な見積もりも変わってくるため、ベロシティの数値を他チームと比較して競争するのは無意味といえるでしょう。
前述の通り、ベロシティの数値を他チームと比較して競争心が出てしまう場合があります。この状態が発生してしまうと、チームごとに基準や見積もりは異なっているうえ、競争することでチームメンバーのストレス原因にもなりかねません。そのため、ベロシティは一つのチームが安定して作業をするための数値であることを意識し、活用しましょう。
ベロシティをもとにチームを評価する
ベロシティの数値をもとにチームを評価すると、チームのメンバーは自分たちを良く見せようと勤務に励むでしょう。そうすると、ベロシティの数値を高めるためにストーリーポイントを多く見積もるようになる恐れがあります。これでは、無理のない開発作業を進めることが難しくなり、ベロシティを活用する意味もなくなってしまいます。
ベロシティを予測以外に使うのは避け、数値は評価と切り離すようにしましょう。また、チームを評価する際は、顧客の満足度を参考にするのがおすすめです。
ベロシティの目標が高すぎる
ベロシティの目標としてよく見られるのは、「今回は前回よりもプラス1ポイントを目指そう」といった前向きなものです。前向きな目標でも、ポイントがプラスになる根拠があるかどうかが重要となります。数値がプラスとなる根拠がないのに、目標を上げるのはおすすめできません。
チームの評価を良くするために目標数値を徐々に上げることを「ストーリーポイントのインフレーション」と呼び、ベロシティの意味がなくなってしまう恐れがあります。
曖昧な意図でベロシティの目標を高く設定するのではなく、前回と同じベロシティを設定し、余裕ができた場合にプロダクトバックログアイテムを追加するのがおすすめです。
プロダクトバックログについてはこちらでも記載があります。合わせてご確認ください。
スクラムマスターとは?役割や仕事内容、必要スキルまとめ
ベロシティは安定化することが重要
ベロシティの安定化とは、毎回のスプリントでベロシティの大幅なブレがない状態のことです。アジャイル開発において、ベロシティが安定しているということは重要な要素になります。
毎回のスプリントで「終わる」と予測したことが確実に終わり、そうした予想を重ねて開発を続けていくのは、開発を進めるうえで効率的といえます。加えて、ベロシティの安定は開発チームが変化に押し潰されていない証明にもなり、チームが達成感や自信を継続して得られるのも大きなメリットです。
しかし、ベロシティの安定化はスクラムにおける最初の壁ともいわれており、決して簡単なことではありません。ベロシティを安定させるためには、以下のポイントを意識しましょう。
・タスクの不確実性を下げる
タスクの不確実性が高いと、万が一の時にスプリントからあふれてしまう恐れがあります。あらかじめ調査タスクを積み、技術検証しておくと良いでしょう。不明瞭な点も確認・把握し、早めに対策することでリスクを最低限にします。
・クリティカルパス上のタスクや不確実性の高いタスクを優先する
スプリントに積まれたタスクはすべて消化します。消化する順番は基本的に自由ですが、「クリティカルパス上のタスク」や「不確実性の高いタスク」をできるだけ優先しましょう。
・チームで助け合う
スプリント中に作業者の力量を超える問題が発生すれば、生産性が低下してしまいます。普段から特定のメンバーだけに頼らず、助け合いながらそれぞれが適所で業務をこなすことが大切です。
・業務を詰め込みすぎない
手すきの時間があるからといって業務を詰め込むのはおすすめできません。ソフトウェア開発は不確実性をはらむものであり、必ず問題が起きます。作業のバッファを作ることで、突然のトラブルにも対応できるでしょう。
・スプリントゴールをひとつに絞る
スプリントゴールが複数並行していると、チームの余裕がなくなり生産性が下がってしまいます。
まとめ
アジャイル開発におけるベロシティについて理解いただけましたでしょうか。顧客と良い関係性を築きつつ効果的に開発を進めるためには、ベロシティを有効に活用することが重要です。ただし、誤った活用方法にならないように注意しましょう。
また、チームを立ち上げたばかりの時期は、ベロシティが安定しにくい傾向にあるため、焦らずに取り組むことが大切です。
弊社が過去に実施した「アジャイル開発のプロジェクト管理手法」セミナー(講師:弊社会長梅田)の講演資料を公開しています。こちらもぜひご覧ください。
- カテゴリ:
- アジャイル開発
- キーワード:
- アジャイル開発