アジャイル開発の手法であるスクラム開発とは?メリットや流れを解説
ソフトウェアを開発するには、まずその開発手法を選択します。
ソフトウェア開発手法には「アジャイル開発」、「ウォーターフォール開発」、「プロトタイプ開発」、「スパイラル開発」など様々なものがあり、それぞれ特徴があります。
ここでは「アジャイル開発」とその中の種類のひとつである「スクラム開発」の特徴や長所と短所について説明します。
そもそもアジャイル開発とは
「アジャイル開発」とは、ソフトウェア開発の設計、実装、テストを反復していく開発手法です。そしてアジャイル開発には、「スクラム」、「XP」、「動的システム開発手法(DSDM)」などいくつか種類があります。それぞれの種類に特徴はありますが、基本方針は同じで、「決められた短めの期間で機能を開発し、それを何度も繰り返していく」という手法になります。
アジャイル開発のメリットは、システムの動作を仕様書などの書面上ではなく、実際に動かしながら確認できる点にあります。そのため、顧客と開発の間に認識の齟齬があった場合にも初期段階で発見できるケースが多くなります。
また、ウォーターフォール開発などに比べて、途中からの仕様変更対応もしやすいメリットがあります。
デメリットとしては、顧客側が動作確認のため、常に開発プロジェクトに参加する必要があるという点が挙げられます。また、簡単に仕様変更ができるため、プロジェクトが紆余曲折してしまい、途中から開発が進まなくなるケースや、コストが嵩んでしまう可能性があります。
ウォータフォール開発との違い
アジャイル開発はウォーターフォール開発とは全く異なる開発手法でよく比較されます。
まず、ウォーターフォール開発は、ひとつの部品ごとに開発を行うのではなく、開発工程をひとつひとつ終わらせていくという手法です。
ソフトウェアを作るための工程として、「要件定義」、「設計」、「実装」、「テスト」とタスクの種類ごとに分けてひとつひとつこなしていきます。基本的に、ひとつの工程が終わってから次の工程に進み、次へ進んだ後は前の工程に戻ることはありません。
それに対しアジャイル開発は、「システムをひとつのモジュール、機能、要件などを軸に、決められた短い期間で開発できるように分けてタスク化し、そのタスクを何度も繰り返しこなす」ことで開発を進めます。
ウォーターフォールでは原則、「要件定義⇒設計⇒実装⇒テスト」という流れを一度だけ行うのに対し、アジャイル開発ではその流れを何度も繰り返します。そして、その流れを行うたびに、その成果物を評価します。
アジャイル開発のひとつの手法であるスクラム開発とは
「スクラム開発」とは「アジャイル開発」のひとつで、ラグビーのフォーメーションの名前がもとになっています。通常、5〜9人ほどのチームメンバーが2〜4週間程度かけて新しい機能を開発します。
「スプリント」と呼ばれる短い開発期間の中で機能の実装とその成果物の評価を行い、それを何度も繰り返してシステムを開発していきます。
スクラム開発のメリットとデメリットについて
以下にスクラム開発のメリットとデメリットをまとめます。
メリット
メリットとしては以下の4点があげられます。
- 仕様変更に柔軟に対応可能
- 常に生産性を改善することが可能
- 進捗状況の把握がしやすい
- 正確なスケジュール管理が可能
スクラム開発は、短い期間で開発を行い、頻繁にフィードバックを行うことができる開発手法です。日々のミーティングで常に仕事の方向性を確認・修正しているため、進捗状況を正確に把握することが可能とも言えます。
これによるメリットとしては、仕様変更に強い、生産効率を改善しやすいといった点があげられるでしょう。また、スプリントごとに開発チームのタスク量を確認するため、フィードバックを重ねるごとに正確なスケジュールが立てられるようになるのもメリットのひとつです。
デメリット
デメリットとしては、以下の4点が考えられます。
- プロジェクトが肥大化する可能性がある
- 開発初心者には向かない可能性がある
- メンバーが離脱すると大きな影響が出る場合がある
- 回帰テストの実施が必須
スクラム開発のデメリットとしては、仕様変更が簡単にできるため、スコープクリープ(プロジェクトの肥大化)を引き起こす場合があるということが挙げられます。
また、スプリントは期間が短いため、チームメンバー内に初心者がいると、スケジュール通りに開発が進まない場合があります。初心者がいない場合も、開発中になんらかの理由でチームメンバーが離脱すると、プロジェクトの進捗に大きな影響が出ることがあるので注意が必要です。
その他、回帰テストを行わないと品質を保つのが難しくなるというデメリットがあります。各スプリントの後には必ず回帰テストを実施するという仕組みが必要です。
スクラム開発における必要な3つの役割
プロダクトオーナー
プロジェクトのステークホルダーで、開発するソフトウェアのビジョンを開発チームに共有します。プロダクトバックログと呼ばれる要件を書いたリストを作成します。
スクラムマスター
開発チームのリーダーで、開発メンバーが効率的にタスクをこなせるような環境を作ることが仕事になります。開発チームが開発期間内にすべてのタスクを終わらせることができるよう進捗を管理します。
開発メンバー
デイリースクラムと呼ばれるミーティングで進捗を確認しながらソフトウェア開発を行います。通常、自分たちでマネジメントを行う必要があります。
スクラム開発の進め方
スクラム開発は、「スプリント」と呼ばれる開発期間を何度も繰り返すことによって、システム開発を進めていきます。ひとつのスプリントの始まりから終わりまでは以下のように流れていきます。
- スプリントプランニングを行う
スプリントの最初に開発チーム内でどのタスクに対応するか決定します。これをスプリントプランニングと呼びます。
スクラム開発では、プロダクトオーナーが作成した「プロダクトバックログ」と呼ばれる要件リストがあります。このリストにあるタスクは、「Todo(未完了のタスク)」、「OnGoing(対応中)」、「inreview(成果物の評価中)」、「Done(完了)」の4つのステータスで管理されており、ステータスが「Todo」のタスクから今回のスプリントで開発されるものを選択します。 - スプリントを開始する
スプリントがどのくらいの長さかはプロジェクトによって異なりますが、通常は2週間から4週間程度です。このスプリントの中で、開発メンバーは「デイリースクラム」と呼ばれる毎日のミーティングで進捗を確認しながら開発を進めていくことになります。
そして最終的には「インクリメント」と呼ばれる製作物を生み出していきます。 - スプリントレビューを行う
インクリメントが出来たら、開発した機能についてスプリントレビューを行います。このレビューは、開発側の内部メンバーに加えて、顧客側にレビュー確認をしてもらうケースも多くあります。レビューを実施して、問題がなければスプリントレトロスペクティブに進みます。 - スプリントレトロスペクティブ(振り返り)を行う
最後に、スプリントレトロスペクティブを行います。レトロスペクティブとは、振り返りという意味です。ここで、スプリントの評価を行います。スクラム開発における振り返りは、とても重要な作業です。発生した課題や問題などを挙げ、次のスプリントを行う際には同じ問題が起こらないように対策を講じます。この際、参考になるのが「ベロシティ」と呼ばれる開発チームのパフォーマンスです。このベロシティをもとに次のスプリントがスケジュール通り完了できそうか判断します。
この振り返り作業を以って、そのスプリントは終了となり、また次のスプリントが始まります。
まとめ|プロジェクトによって適した開発方法を選択しよう
今回はアジャイル開発のひとつである「スクラム開発」の特徴について説明しました。
「スクラム開発」は仕様変更がしやすく、注意点はありますが基本的にはスケジュール通りにタスクを進めやすい開発方法です。仕様変更が頻発することが予想されるプロジェクトに強いことから、市場のニーズが変化しやすい業界や、仕様変更できることに重点を置く企業などにおすすめです。
システム開発のプロジェクトはどうマネジメントするかが重要になります。効率的にプロジェクトを進めていくためにも、最適な開発方法の選択は必須と言えます。ソフトウェアの開発手法は無数に存在しますが優劣はありません。開発するシステムの特徴などによりどれが適切か判断するためにも、各ソフトウェア開発の長所と短所を理解しておくことが大切です。