ソフトウェア開発の現場では実にさまざまな開発手法が使われています。その中で、2016年頃より頻繁に採用されるようになったのが「スクラム開発」です。数十年前から手法が確立されているウォーターフォール開発、近年主流のアジャイル開発に比べてどのような特徴があるのでしょうか?本記事では、今さら人には聞けないスクラム開発について解説します。
スクラム開発とは?
ウォーターフォール開発は要件定義から設計、開発、テスト、運用までを一連の大きな流れとして、ワンストップで推進するソフトウェア開発手法です。各工程において明確な成果物が用意されるので、工程ごとの品質を担保しながら開発を進める確実性の高い手法です。
一方、アジャイル開発は少人数制の開発チームが、要件の優先順位に応じてソフトウェア開発を進めていく手法となります。ウォーターフォール開発のように計画が絶対ではないため、途中での要件変更等へも柔軟に対応できます。このアジャイル開発には細かい分類がいくつか存在します。
XP(eXtreme Programing :エクストリーム・プログラミング)開発
プログラマー中心のアジャイル開発であり、「コミュニケーション」「シンプル」「フィードバック」「勇気」という4つの価値を共有することで開発を進めていきます。仕様や要件の途中変更への柔軟性を重視したものなので、変更に立ち向かう「勇気」が非常に大切な要素になります。
FDD(Feature Driven Development:フィーチャー・ドリブン・デベロップメント)開発
顧客にとっての機能価値(Feature)とは何か?に主眼を置いてプロジェクトを進めるアジャイル開発です。事業部門ユーザーのビジネスの見える化を実施してから、実際に動作するソフトウェアを適切な間隔で開発していきます。
スクラム開発は、上記のXP開発やFDD開発と同じようにアジャイル開発の分類の1つです。近年注目され出したスクラム開発ですが、考え方は新しいものではありません。初めて登場したのが1986年であり、日本人経営学者の野中郁次郎と竹内弘高が発表した「The New Product Development Game」という論文の中で、柔軟性と自由度を兼ね備えたソフトウェア開発手法として紹介されています。
スクラム開発を支える3つの支柱と5つの価値基準
スクラム開発とは、チームマネジメントに主眼を置いたアジャイル開発です。一般的なアジャイル開発ではイテレーション(反復)と呼ばれる開発期間を設け、優先度の高い要件から開発を進めていきます。そしてイテレーションごとにクライアントを交えてテストを実行することで、フィードバックを素早く得てプロジェクトの途中でも要件や仕様の変更へと迅速に対応します。
一方、スクラム開発はアジャイル開発の特徴を採り入れつつ、高頻度のミーティングや進捗会議を開催することで、開発者同士のコミュニケーション活発化を自然と促します。スクラム開発実施直後は生産性が一時的に低下しても、開発者同士の連携性が高まるにつれてソフトウェア開発の生産性と品質を向上させるのが最大の狙いです。このスクラム開発を導入するのにまず大切なのが、以下に挙げる3つの支柱と5つの価値です。
スクラム開発3つの支柱
透明性
スクラム開発では、実際の経験と既知の事実にもとづく判断によって新しい知識を得るための「経験主義」が重視されます。これを実現するためにはまず透明性をという支柱を立てます。要するに、開発者全員が共通認識を持って開発が進められるように、開発ツールやそこで使用する言語・ツールに関して明確にしておく標準化を進めます。
検査
スクラム開発ではスプリントと呼ばれる開発単位が、アジャイル開発のイテレーションに該当します。基本としてスプリントごとの成果物や目標に対して頻繁な検査(ミーティングや進捗会議)を行います。これらを高頻度に実施することで、既知の問題を素早く察知して対処することが大きな目的になります。ただし、頻繁過ぎては作業の妨げになるため、高いスキルを持った検査者を置くことが重要です。
適応
スクラム開発で発生した不備やトラブルが許容値を超え、スプリントごとの成果物や目標に対して検査者が受け入れられないと判断した場合。その構成要素や開発プロセスを適宜調整していきます。調整は可能な限り素早く行い、プロジェクトからの脱線を防ぐことが大切です。
スクラム開発5つの価値
確約(Commitment)
チームとしてのスプリントゴールや個人のタスクの完了を周囲に確約し、それに責任を持つ
勇気(Courage)
失敗を恐れない勇気を持って挑戦し成功へと突き進む
尊敬(Respect)
失敗したことを責めずに挑戦したことを称え、周囲な自分よりも優秀なのだと尊敬の念を持つ
集中(Focus)
優先度の高いタスクにリソースを集中させ効率良く作業を進める
公開(Openness)
常に情報交換を怠らずチームメンバー全員の共有することでコミュニケーション力を高める
スクラム開発の何が良いのか?
スクラム開発が多くの現場で採用されている理由は何か?ここではスクラム開発が与えてくれるベネフィットをご紹介します。
1. 短い期間で最大限の効果を発揮
スクラム開発は1~4週間という短い開発期間(スプリント)を設定し、その中で優先度の高い仕様・要件から開発に取り組んでいきます。スプリントごとに計画・設計・実装・テストを行うことで、1つひとつの機能品質を最大限に高め、短い基幹でも最大限の効果を発揮するソフトウェア開発が行えます。
2. 工数見積もりが正確に行える
ウォーターフォール開発ではプロジェクト初期から最後までを計画してから開発にとりかかります。このため開発工数の見積もりが甘い、厳しいなどの問題が発生します。一方、スクラム開発は短い開発期間の中で計画するため、正確な工数見積もりが可能になります。
3. 開発者各人の責任が大きくなる
スクラム開発では開発者1人ひとりが実施すべきタスクが明確に決まっており、それぞれに責任範囲が決まっています。このため責任感が芽生えやすく、それが開発チームとして質の高い生産性を実現するための要素になります。
4. 開発者のモチベーション維持
ソフトウェア開発において責任感が大きくなると、自然とモチベーションが維持されます。ウォーターフォール開発では作業単位で意義を理解することが難しく、開発者のモチベーションが徐々に低下することが問題点となるケースがあります。スクラム開発なら、責任感からモチベーションが維持され、それによって高品質が実現できます。
5. 問題検知スピードの向上
スクラム開発は他のソフトウェア開発手法と比べてミーティングや進捗会議を高頻度に行うことから、開発者各人が抱えている問題の検知が非常に早く、なおかつ開発チームとして解決に取り組むために問題への対処もスピーディに行えます。高頻度なミーティングや進捗会議で生産性は落ちますが、その後劇的に改善するのはチームの問題検知能力と問題解決能力が高まるからです。
いかがでしょうか?スクラム開発にはソフトウェア開発手法としてさまざまなベネフィットがあります。この機会に、スクラム開発の採用を検討してみてはいかがでしょうか?