Facebook
ソフトウェアを開発するには、まずその開発手法を選択します。ソフトウェア開発手法には「アジャイル開発」「ウォーターフォール開発」「プロトタイプ開発」「スパイラル開発」など様々なものがあり、それぞれ特徴があります。ここでは「アジャイル開発」とその中の種類の一つである「スクラム開発」の特徴や長所と短所について説明します。

目次

1.アジャイル開発とは

1.そもそもアジャイル開発って?

「アジャイル開発」とは、ソフトウェア開発の設計、実装、テストを反復していく開発手法です。そしてアジャイル開発には、「スクラム」、「XP」、「動的システム開発手法(DSDM)」などいくつか種類があります。それぞれの種類に特徴はありますが、基本方針は同じで、「決められた短めの期間で機能を開発し、それを何度も繰り返していく」という手法になります。

2.ウォータフォール開発との違い

アジャイル開発はウォーターフォール開発とは全く異なる開発手法でよく比較されます。では具体的にどのような違いがあるのでしょうか。

まず、ウォーターフォール開発は、一つの部品ごとに開発を行うのではなく、開発工程を一つ一つ終わらせていくという手法です。ウォーターフォール開発は、ソフトウェアを作るための工程として、「要件定義」「設計」、「実装」「テスト」とタスクの種類ごとに分けて<一つ一つこなしていきます。基本的に、一つの工程が終わってから次の工程に進み、次へ進んだ後は前の工程に戻ることはありません。

それに対しアジャイル開発は、「システムを一つのモジュール、機能、要件などを軸に、決められた短い期間で開発できるように分けてタスク化し、そのタスクを何度も繰り返しこなす」ことで開発を進めます。ウォーターフォールでは原則、「要件定義⇒設計⇒実装⇒テスト」という流れを一度だけ行うのに対し、アジャイル開発ではその流れを何度も繰り返します。そして、その流れを行うたびに、その成果物を評価します。

3.アジャイル開のメリットとデメリット

メリット ・常にシステムの動作を仕様書などではなく実際に動かしながら確認できるため、顧客側と開発側に認識齟齬があった場合も初期の段階で発見できることが多い。 ・試行錯誤を繰り返しながらの開発のため、システムの仕様を変更したくなった場合も方向転換しやすい(ウォーターフォール開発と比較した場合)。 デメリット ・顧客側は成果物の評価のため常にプロジェクトに参加する必要がある(ウォーターフォールの場合、顧客は基本的にマイルストーンのみ参加する)。 ・仕様変更が容易にできるため、実験を繰り返してシステム開発が進まなくなったり、途中で要件や機能が追加されて開発期間とコストが増加したりすることがある。

2.アジャイル開発の一つの手法であるスクラム開発とは

1.そもそもスクラム開発って?

「スクラム開発」とは「アジャイル開発」の一つで、ラグビーのフォーメーションの名前がもとになっています。通常、5~9人ほどのチームメンバーが2~4週間程度かけて新しい機能を開発します。

「スプリント」と呼ばれる短い開発期間の中で機能の実装とその成果物の評価を行い、それを何度も繰り返してシステムを開発していきます。

2.スクラム開発における必要な3つの役割

プロダクトオーナー
プロジェクトのステークホルダーで、開発するソフトウェアのビジョンを開発チームに共有します。プロダクトバックログと呼ばれる要件を書いたリストを作成します。

スクラムマスター
開発チームのリーダーで、開発メンバーが効率的にタスクをこなせるような環境を作ることが仕事になります。開発チームが開発期間内にすべてのタスクを終わらせることができるよう進捗を管理します。

開発メンバー
デイリースクラムと呼ばれるミーティングで進捗を確認しながらソフトウェア開発を行います。通常、自分たちでマネジメントを行う必要があります。

3.スクラム開発の進め方

スクラム開発は、「スプリント」と呼ばれる開発期間を何度も繰り返すことによって、システム開発を進めていきます。スプリントがどのくらいの長さかはプロジェクトによって異なりますが、通常は2週間から4週間程度になります。まず、スプリントの最初に開発チーム内でどのタスクを対応するかが決定されます。

スクラム開発では、プロダクトオーナーが作成した「プロダクトバックログ」と呼ばれる要件リストがあります。このリストにあるタスクは、「Todo(未完了のタスク)」「OnGoing(対応中)」「inreview(成果物の評価中)」「Done(完了)」の4つのステータスで管理されており、ステータスが「Todo」のタスクから今回のスプリントで開発されるものを選択します。対応するタスクが決まると、開発メンバーは「デイリースクラム」と呼ばれる毎日のミーティングで進捗を確認しながら、開発を進めます。

そして、開発終了後、顧客側は成果物に対するレビューを行います。この時、「ベロシティ」と呼ばれる開発チームのパフォーマンスも評価され、このベロシティをもとに次のスプリントがスケジュール通り完了できそうかどうか判断されます。そして、顧客側のレビューが完了すれば、そのスプリントは完了になり、また次のスプリントが始まります。

4.スクラム開発のメリットとデメリットについて

メリット
・常に日々のミーティングで仕事の方向性を確認・修正しているため、進捗状況を正確に把握できチームのタスクをスケジュール通りに進めやすい。

・スプリントは期間が短めで成果物はスプリントの度にフィードバックを受けるため、仕様変更に対応しやすい。

・各開発チーム・メンバーが開発できる量をスプリントごとに確認しているため、次回以降のスプリントでより正確にスケジュールの見積もりを行うことができる。また、開発チーム・メンバーの能力を把握することで生産性も改善しやすい。

デメリット
・仕様変更が容易なため、スコープクリープ(プロジェクトの範囲が肥大化すること)を引き起こすことがある。

・スプリントは期間が短いため、チームメンバーに初心者がいる場合、スケジュール通りに開発を進めづらくなる。

・開発中にチームメンバーから離脱者がでると、プロジェクトの進捗に大きな影響が出ることがある。

・各スプリントの後に回帰テストを実施する仕組みが無いと、品質を保つのが難しくなる。

3.スクラム開発の今後のニーズについて

システム開発のプロジェクトは、どうマネジメントするかが重要になります。効率的にプロジェクトを進めていくために、最適な開発方法を選択する必要があります。ソフトウェアの開発手法は無数に存在しますが、優劣は無く開発するシステムの特徴などによりどれが適切か判断する必要があります。各ソフトウェア開発の長所と短所を理解することが大事です。

そして、今回紹介した「スクラム開発」はその特徴から、仕様変更が頻発することが予想されるプロジェクトに採用されていくことになるでしょう。仕様変更の要望に対応しやすいという特徴があるため、市場のニーズが変化しやすい業界や、仕様変更できることに重点を置く企業などに好まれる開発手法になります。

4.まとめ

今回はアジャイル開発の一つである「スクラム開発」の特徴について説明しました。スクラム開発は、仕様変更がしやすく、注意点はありますが基本的にはスケジュール通りにタスクを進めやすい、という特徴があります。スクラム開発のメリットを最大限に生かすためには、その仕組み・特徴を理解して運用することが大事です。