本記事ではスプリントに絞ってお話をしてみます。アジャイル開発の文脈ではイテレーションという用語で説明されますが、スクラムの文脈においてはスプリントと表現されます。それではお話ししていきます。
スプリントとは
まずはスプリントとはからお話します。こちらはスクラムガイドから説明を引用しましょう。
スクラムの中心はスプリントである。これは、「完成」した、利用可能な、リリース判断可能なプロダク トインクリメントを作るための、1 か月以下のタイムボックスである。開発中はスプリントの長さは常に 一定である。スプリントが終了すると、すぐに新しいスプリントが開始される。 出典:スクラムガイド
おさえておくポイントは以下の通りです。
- スプリントは1ヶ月以下のタイムボックス
- 開発中はスプリントの長さ(タイムボックス)は常に一定
- スプリントではリリース可能(または判断可能)なプロダクトインクリメントを作る
- スプリントが終了するとすぐに新しいスプリントを開始する
それではそれぞれ詳しくみていきましょう。
スプリントは1ヶ月以下のタイムボックス
1スプリントは1ヶ月以下の期間で設定をします。つまり1スプリントは1週間や2週間といった期間で設定しようということですね。それではなぜ1ヶ月以内なのでしょうか。こちらについては同じくスクラムガイドの中で言及されています。
スプリントの期間は 1 か月以内に制限されている。スプリントが長すぎると、開発対象の定義が変 更されたり、複雑になったり、リスクが増大したりする可能性がある。ゴールに対する進捗を少なくと も 1 か月ごとに検査・適応することで、予測可能性が高まるのである。また、リスクも 1 か月分のコ ストに収まるようになる。 出典:スクラムガイド
皆さんも経験があるかと思いますが開発期間が長いプロジェクトほど非常に複雑で厄介だったのではないでしょうか。上記引用文ではそういったことを危惧しての話でしょう。1ヶ月以内に設定することをルールとしているのはそういったリスクを減らすため(リスクを予測できるようにするため)にスプリントを1ヶ月以内にしましょう、ということですね。
さてそれではもう一つ期間についての話をしてみます。1ヶ月以内がいい、というのは納得したとしてどれくらいの期間がいいのでしょうか。1週間?、それとも2週間?、はたまた4週間という選択肢もルール上は取れるように思いますね。この疑問については吉羽さんの下記ブログが非常に明解にお話してくださっています。
1週間スプリントがよい理由を列挙すると以下のようなものがあります。出典:アジャイルコーチはなぜ1週間スプリントを勧めるのか
- レトロスペクティブ(ふりかえり)が頻繁にあるので改善が進む
- 計画の精度が高くなる
- 例え失敗しても一週間で済むので実験しやすい
- ベロシティの数字がすぐ出るのでやる気になる
- 中だるみする余裕がない・リズムがよい
- 一週間で収まるサイズのプロダクトバックログ項目にするので明確な完成を定義しやすい。従ってプロダクトオーナーの受け入れを取りやすい
- スパイクが必要なプロダクトバックログ項目が明確になる
- プロダクトオーナーが変更を我慢しやすい
- ごまかしが効かない
僕自身も実際にこのブログを読みなるほどと何度もうなづいていました。実際にスクラムを導入している現場でも1週間のスプリントを設定しているチームが多い印象です。しかし最近では2週間スプリントをしているチームのお話もよく聞きます。この辺りはチームで議論して決めるといいでしょう。
開発中はスプリントの長さ(タイムボックス)は常に一定
これはスプリント中に期間を変えることはしないように、ということですね。
例えば1週間のスプリントとしてスプリントを開始したのにスプリント中に突然2週間のスプリントとするということはしないようにということです。これは単純にスプリント中に期間を変えることは混乱をまねく可能性があるのと、スプリント開始時にプランニングをしたのであれば予定していた成果物が出来上がるはずであり、もしできなかったとしてもそれについて予定していた期間のスプリントレトロスペクティブで振り返りをした方がいい、というような意図かと想像できます。
僕自身も以前スプリント期間を変える議論を所属しているスクラムチームで検討をしたことがありますが、その際も変えるのであれば予定していたスプリントが変わってからということを考えていました。(ちなみにスプリント期間は1週間から2週間に変えることを検討していましたが結局1週間のままにしました)
スプリントではリリース可能(または判断可能)なプロダクトインクリメントを作る
スクラム(またはアジャイル)ではスプリントという繰り返しの期間の中でリリース可能なプロダクトを少しずつ積み上げていくことが本質的なところです。もちろんプロダクトによってはそういったアプローチが難しいケースもあるでしょう。そういった面はできるだけスクラムのフレームワークに合わせられるよう努力しつつも自分達にあったようアプローチし続けるのがいいかと思います。
ただ、進捗や成果物の出来上がり具合がわかりにくいソフトウェアの開発においてリリースできないとはいえそういった判断可能な成果物をスプリント内に仕上げることへはトライし続けるのは非常に大切です。
スプリントが終了するとすぐに新しいスプリントを開始する
スプリントが終わったあとはすぐに次のスプリントを開始します。新しいスプリントの始まりということですね。こちらは難しい説明は必要がないでしょう。
例えば僕自身が所属していたスクラムでは木曜日始まりの水曜日終わりのスプリントをしていました。日本の場合は1週間スプリントをしているスクラムチームではおそらく同じように設定しているチームが多いでしょう。理由は様々あるでしょうが例えばこういった理由で設定しています。
- 日本では月曜日は祝日なことが多く、月曜日始まりのスプリントだとセレモニーの日程調整(ex. スプリントプランニング)を頻繁にすることがある
- 週の始まりの月曜日は所属する企業での打ち合わせが多いケースがあり、セレモニーの日時を設定しにくい
個人的には月曜日始まり、金曜日終わりの方がキリが良くて週末をしっかり楽しめるような気がするのですが日本ではちょっと難しいかもですね。他の国ではどういった設定をしているのか気になります。
さて本記事は以上です。スクラムについては下記記事でより詳細にまとめていますのでこちらもぜひ。