スクラム開発ってなに?アジャイル開発との違いや特徴を解説
スクラム開発は、多くの開発現場で導入されている人気の開発手法(フレームワーク)です。どのようなメリットがある手法なのでしょうか?ウォーターフォールやアジャイル開発プロセスとの違いとは?スクラム開発の関連用語は独特なので近寄りがたいイメージがあるかもしれません。スクラム開発が開発チームにもたらす変化は多方面に及びます。スクラム開発の概要から、様々な特徴、用語などを解説していきます。
-
Contents
スクラム開発とは
スクラム開発はソフトウェア開発手法の一つであり、短いサイクルで開発とリリースを繰り返しながらソフトウェア製品の完成度を高めていきます。
1ヵ月程度のリリースサイクルを繰り返し、フィードバックを反映しながら製品機能や開発プロセスを改善していくため、柔軟にニーズの変化に対応できる開発手法です。
-
スクラム開発はアジャイル開発の手法
スクラム開発はアジャイル開発手法のなかでも人気のフレームワークの一つです。アジャイル開発では短いサイクルで計画→設計→実装→テストを繰り返すことで、要件の変化に対応し、素早くソフトウェア製品をリリースしていきます。
スクラム開発では、アジャイル開発の特徴に加え、プロジェクトの参加メンバー自身がサイクル毎の計画を立て開発していくことに特徴があります。参加メンバー全員でプロセスを改善していきます。
アジャイル開発は下記の記事で詳しく解説しています。併せて参考にしてください。
関連記事:アジャイル開発とは?開発手法や開発の流れをわかりやすく解説
-
スクラム開発を理解するための基本用語
スクラム開発には、独特の概念や用語が登場します。スクラム開発の基本的な用語を見ていきましょう。
-
スプリント
スプリントとは、一つのサイクルを表し、1ヵ月以内の決まった長さで開発が繰り返されます。製品開発のために必要なスクラム開発の活動はすべてスプリント内でおこなわれます。
スクラム開発では、スプリントを繰り返すことで開発プロセスとソフトウェア製品を改善していきます。
-
スプリントプランニング
スプリントの始めに今回のスプリントで実施する開発工程の計画を立てるのがスプリントプランニングです。
チーム全員で3つの観点からスプリントで実装する機能を計画します。
- なぜ今回のスプリントは価値があるのか?(why)
- 今回のスプリントで何ができるのか?(what)
- 選択した作業をどう完了させるのか?(how)
-
デイリースクラム
スプリントの期間中、毎日同じ場所で開催するイベントです。
スプリントのゴールに向けて、前回からの進捗、次に何をおこなうか、何か問題が発生していないかなどを開発者全員で確認します。進捗を確認し、必要ならスプリントのプランを修正するなど今後の作業を調整します。開発者の間でのコミュニケーションを促進し、問題を早くに共有していち早く対処します。
-
スプリントレビュー
スプリントの終盤におこない、スプリントの成果を確認するとともに結果を関係者に共有します。
今回のスプリントがソフトウェア製品の最終的な目的に向けて進捗したかを確認し、場合によっては要件を調整し、次回のスプリントで何をすべきかを議論します。
-
スプリント・レトロスペクティブ
スプリントの終了時におこなう振り返りです。
成果物ではなく、開発の進め方や使用するツール、チームメンバー同士や個人に焦点を当て、うまく機能したか・問題がないかを検査し、スプリントの進め方の改善点を探ります。
-
プロダクトバックログ・リファインメント
製品に搭載する機能や変更点などの各項目を見直して各項目に見積もりや詳細を追加する、項目間の順序を付けるなど、次回以降のスプリントでより適切なスプリントプランニングができるようにします。
-
プロダクト・バックログ
プロダクトバックログは製品の実現に必要な機能や改善点を優先度順にリストアップしたものです。後に項目の追加もできます。
- スプリント・バックログ
スプリントバックログは1回のスプリント期間で達成すべき作業のリストです。スプリントプランニングで議論しプロダクトバックログをもとに作成します。
-
スクラム開発の特徴
スクラム開発は比較的小さなチームで早いサイクルで開発をおこないます。主な特徴を見ていきましょう。
-
少人数で開発をおこなう
スクラム開発では、多くても10人のチームで毎日コミュニケーションをとりながら、チームスポーツのように開発を進めます。
プロジェクトマネージャーは置かずにメンバー全員で開発スケジュールやスプリントでの進捗を計画し振り返りをおこないます。
-
短時間のスプリントを繰り返す
1回1ヵ月以内のスプリントを繰り返すことで開発プロジェクトを進めます。
各回のスプリントには計画、開発、リリース、振り返りの一連のサイクルを含むようデザインされており、それぞれスプリントプランニング・デイリースクラム・スプリントレビュー・スプリントレトロスペクティブとして、スクラム開発のフレームワークで定義されています。
スプリントを繰り返すことでソフトウェア製品の機能が充実していくとともに、プロジェクトの進め方も改善していきます。
-
スクラム開発のメリット
スクラム開発はチームメンバー個々人のコミュニケーションを重視し、サイクル毎に計画を見直すため変化に強い特長があります。
-
チームの方向性がずれにくい
スクラム開発では、毎日開催するミーティング(デイリースクラム)で進捗の状況や個々人の困りごとなどを検査・対処していくことで、スプリントの目標に対してメンバーの方向性を合わせていきます。
また、実績に基づいて、チームが開発できる機能の量的見積もりを回毎に改善でき、見積もりと成果のずれを防ぐことができます。
-
仕様の変更に柔軟に対応できる
1ヵ月以内の短いスプリントで計画・開発・リリースをおこない、スプリントの終了時には製品のゴールに対するフィードバックをおこなうため、製品の仕様が変わっても、以降のスプリントで対応できます。
-
スクラム開発のデメリット
チームメンバー相互のコミュニケーションを重視し、変化への対応力があるスクラム開発は特有の問題も抱えています。
-
スケジュールの管理が難しい
スクラム開発は、仕様の変化に対して柔軟性があり、製品の機能を順次追加していくことができます。そのため、よりよい仕様を求めてあらゆる改善をおこない場当たり的な仕様となることや、要件単位でスケジュールを管理するため、全体としてのスケジュールを管理するのが難しい面もあります。
-
コミュニケーション能力がないと難しい
スクラム開発ではメンバー全員が開発だけでなくプランニングや振り返りに参加します。
開発メンバーは毎日のデイリースクラムで情報や問題点を共有し作業を調整していくため、メンバー全員のコミュニケーションが求められます。コミュニケーションが滞ると、調整や正しい計画ができずにプロジェクトが計画通りに進行しない可能性があります。
また、製品のあるべき姿は何かという要件を言語化したものがプロダクトバックログとなるため、言語化がうまくいかないとプロジェクト全体に影響があります。
-
スクラム開発のチーム体制
スクラム開発では、関わる人々をスクラムチームとして、個々人の役割を定めています。
開発をおこなうエンジニアから全体の進行を調整する役割までいろいろな立場のチームメンバーをご紹介します。
-
プロダクトオーナー
プロダクトオーナーの役割は、何を開発するか決めることです。
コストを負担する依頼主(ステークホルダー)が投資効果をできるだけ引き出せるように、スクラムチームができる限り価値のあるソフトウェアを開発するために何が重要かを判断しプロダクトバックログへの要件の追加や変更の最終的な責任を持ちます。
プロダクトオーナーは委員会やチームではなく1人で担当します。
-
スクラムマスター
スクラムマスターの役割は、スケジュール管理などスクラムチームの全体支援です。
チームメンバー個々人が積極的に発言できるよういろいろな場面で舞台を整え、共通の目的を達成できるよう支援します。開発チームを外部の影響から守り、障害やトラブル発生時には交渉・調整をおこないます。
ただし、スクラムマスターは1人で担当しますが、開発の進め方はスクラムマスターがコントロールするのではなく、開発チームが決めます。
-
開発チーム
開発チームの役割は、実際に開発を進めることです。
開発エンジニアのスタッフ間で上下関係はなく、平等なことがほとんどで、アーキテクト、プログラマー、テスター、デザイナーなどの区分けはなく、強みを持ち寄り開発に貢献します。
スクラム開発では、スプリントの始めに、バックログの各項目をどうやって完成していくかを開発チーム自らが決めます。計画から実際の制作はもちろん、テスト、リリース、レビューや振り返りに参加します。
-
ステークホルダー
ステークホルダーとは、ソフトウェア開発プロジェクトに利害関係を持つスポンサーです。スクラムチームではありませんが、顧客や取引先などのことで、開発プロジェクトに対して発言権があります。
スクラム開発では、必要に応じてプロダクトオーナーを通じてプロダクトバックログを変更します。
-
スクラム開発の流れ
スクラム開発は、スプリントを繰り返すことでソフトウェア製品をリリースしていく一連のプロセスです。
スクラム開発での主なイベントを見ていきましょう。
-
バックログを作成する
開発の始めに、スクラム開発の目的となる、ソフトウェア製品の将来像を想定しゴールを設定します。ゴールに向けて何が必要か、要件や機能を洗い出し、最初に作成するのがプロダクトバックログです。
-
スプリントプランニングをおこなう
各回のスプリントの始めに、今回のスプリントで何を達成するかゴールを設定します。
プロダクトバックログ項目からスプリントのゴールに沿った機能を選び出したうえで、完了条件を達成できるように計画を立てます。
日々の進捗が追えるほどの細かさに分割した計画がスプリントバックログとなります。
-
デイリースクラムをおこなう
毎日1回同じ時間と場所に開催する15分のイベントです。
スプリントバックログの項目それぞれに、開発者は1日の計画をミーティングなどの方法で計画していきます。
また、進捗に関して問題を共有し、強みを活かして助け合うなど、コミュニケーションを通じてスプリントのゴール達成に向けた障害へ対処します。
-
スプリントレビューをおこなう
スプリントの終盤で、成果に注目して今後の対応を協議するスプリントレビューをおこないます。1ヵ月のスプリントの場合は最大4時間に収めます。
スクラムチームは今回のスプリントで何を達成し、何が変化したのかを確認し、ステークホルダーへ成果を提示します。
レビューにはスクラムチームの他にステークホルダーや外部のコンサルティング会社などが参加する場合もあり、チームはフィードバックを得ます。
チームは成果やフィードバックに基づいて次のスプリントでやるべきことを話し合います。必要に応じてプロダクトバックログを調整します。
-
スプリントレトロスペクティブをおこなう
スプリントの終了時に、今後のスプリントをより効果的にするため振り返りをおこなうのがスプリントレトロスペクティブです。1ヵ月のスプリントの場合は最大3時間に収めます。
成果ではなく、チームのメンバーやメンバー同士の関係、仕事の進め方など、今回のスプリントでうまく機能していたか、どのような問題が発生し、どう解決されたか(されなかったか)を検査します。
検査の結果を踏まえて改善策を話し合い、効果の大きい変更からできるだけ早期に実施するよう、次以降のスプリントに活かします。必要なら、次のスプリントのスプリントバックログに項目を追加します。
スプリントレトロスペクティブの実施でスプリントは終了します。
-
まとめ
スクラム開発とアジャイル開発プロセスとの違いや、用語、メリット・デメリット、スクラムチームの構成、スクラム開発を進める流れを見てきました。
スクラム開発は、
- 少人数のチームでコミュニケーションを重視して進める
- スプリントと呼ばれる計画・開発・振り返りのサイクルを短い期間で繰り返す
- 要件の変化に対応しやすく素早いリリースができる
などの特徴がありました。多くの開発現場で採用されている人気の高い手法ですので、この機会にスクラム開発の方法論を学んでみてはいかがでしょうか。