2000年代に入るまで主流だった開発手法といえばウォーターフォール開発でした。これは要件定義、設計、実装、テスト及び運用という各工程を直列につなげ、滝の水が流れるかのように上流工程から下流工程へとプロジェクトが進んでいくという手法です。一見効率の良い開発手法に思えますが、後工程で問題が発覚した際の手戻りが大きいことや、ニーズ変更のリスクが高いということもあり採用する企業は徐々に少なくなっています。
それに代わって主流になった開発手法がアジャイル開発です。今回は数あるアジャイル開発の中でも主流となっている「スクラム開発」についてご紹介します。
そもそもアジャイル開発とは?
アジャイル開発はイテレーションと呼ばれる短い開発期間を設けて、その中で実装とテストを繰り返しシステムの品質と生産性を向上するという手法です。
従来のウォーターフォール開発が100%の完成度を目指して開発する手法だとすると、アジャイル開発とでは常に70%~80%程度の完成度を目指します。そうした開発を何度か繰り返すことによって、最終的には100%以上の完成度を実現しようというのがアジャイル開発の基本です。
アジャイル開発にはもう一つ、手戻りが少ないという特長があります。ウォーターフォール開発の場合は後工程で手戻りが発生すると多大な手間とコストがかかりますが、短い開発サイクルを設けているアジャイル開発では問題が発生したとしても少ない手戻りで開発を修正できます。その結果としてプロジェクト全体の手戻りが少なくて済み、生産性を高められるという寸法です。
このアジャイル開発には技術プロセスが中心のエクストリームプログラミング(XP)やモデル駆動で古典的な方法の機能駆動開発(FDD)、トヨタのカンバン方式に適応したリーン開発などいくつかの種類があります。スクラム開発はその中の一つです。
スクラム開発とは?
スクラム開発を簡単に説明すると「チームマネジメントに焦点を当てたアジャイル開発」です。具体的に説明していきます。
まず、アジャイル開発を取り入れる最大の目的はシステム開発の品質と生産性を向上することにあります。この品質と生産性を向上するためには開発チームと運用チームのコミュニケーションが非常に大切です。
なので他の開発手法に比べて高頻度でミーティングや進捗会議が発生します。スクラム開発を取り入れた当初はこうした理由から生産性が落ちることもありますが、その後の取り組みによって劇的に生産性を向上することも可能です。
ちなみにスクラム開発の語源はラグビーにおいて8人ずつ肩を組んで一つの集団を作るスクラムというフォーメーションから来ています。この語源からも如何に関係者の団結が大切かが分かりますね。
スクラム開発のメリット
ではスクラム開発を採用するメリットとは何でしょうか?
メリット①短い期間で最大限の効果を発揮する
スクラム開発では1週間~4週間という短い期間(スプリント)を設定し、その中で優先順位の高い機能から開発に取り組みます。1回のスプリントの中で計画、設計、実装、テストを繰り返すことで一つひとつの機能の品質を最大限高められるため、短い期間でも大きな成果を得られるのが特長です。
メリット②工数の見積もりが正確になっていく
従来のウォーターフォール開発ではプロジェクトの1~100までを最初に計画するので、工数見積もりが甘すぎたり厳し過ぎるといった問題がよく発生します。熟練のPM(プロジェクトマネージャー)でも、ウォーターフォール開発において正確な工数を見積もることは至難の業でしょう。それに対し、スクラム開発ではスプリントという短い期間だけで計画するので、正確な工数見積もりが可能というのもメリットの一つです。これによってスクラム開発以外の手法においても正確な見積もりができるようになります。
メリット③一人ひとりの責任感が増しチームが自立する
Googleによるとチームコミュニケーションの良さと生産性は比例すると言われています。これは事実であり、円滑なコミュニケーションが取れているチームほど生産性が高いものはありません。では、円滑なチームコミュニケーションに欠かせないものとは何か?それがメンバー各人の強い責任感であり、スクラム開発はこの責任感を効率良く育める手法でもあります。開発メンバーは少人数かつ短い期間で開発を進めていくため、メンバー各人が確実にタスクをこなさなければ開発は成功しません。それによって責任の所在が常に明確になるため、メンバー各人の責任感は自然と強くなります。さらに、個々人の責任感が増すとチームとしても自立するため、より強力な開発チームへと育っていくでしょう。
メリット④素早い問題検知ができる
スクラム開発は他の手法にくらべて高頻度でミーティングや進捗会議が発生します。コミュニケーションを重視していることから、「わからないこと」「困っていること」があれば気軽に話し合える環境が整うというのが特長です。そのためメンバー各人が抱えている問題の検知が非常に早く、チームとして解決に取り組むため問題への対処もスピーディになります。高頻度なミーティングや進捗会議で一度生産性は落ちますが、その後劇的に改善するのはチームの問題検知能力と問題解決能力が高まるからです。
メリット⑤開発者のモチベーションが維持できる
従来のウォーターフォール開発では一つひとつの工程が最終的な成果物に繋がっているため、作業にあたる開発者がそこの意義を見出せずにモチベーションが下がっていくという問題があります。誰でも自分が今行っている作業に意義を持ちたいものです。スクラム開発では前述のように少人数かつ短い開発期間で進めていくため、メンバー各人の責任が明確になります。これは作業に対して意義を見つけることが簡単になり、成果物もすぐに目に見えるため開発者のモチベーションが維持できるというメリットがあるのです。
スクラム開発が向かない環境
ここまでの解説で「スクラム開発はメリットだらけじゃないか!」と感じていただけた方も多いでしょう。ただし、このスクラム開発が向かない環境というのもあります。
第一にチームメンバーの入れ替わりが激しい環境です。会社の方針で開発者の異動が多かったり離職率が高い環境ではチームメンバーがなかなか固定しません。チームコミュニケーションが重要とするスクラム開発ではかなり致命的です。
イレギュラーな対応が多い環境も同じでしょう。スクラム開発は短い開発期間で計画、設計、実装、テストを行っていきます。いわば小さいウォーターフォール開発を繰り返していくようなものです。そのため差し込みの要件などイレギュラーな対応には弱く、当初の計画が崩れてしまう傾向にあります。
最後に開発スキルがバラバラ過ぎる環境も不向きです。チーム内のタスクが誰もが等しく取っていけることが理想ですから、開発スキルがバラバラだと特定のメンバーに負荷が集中し、結果として生産性向上を妨げてしまいます。
このようにメリットの多いスクラム開発にも不向きな環境というものがあるので十分注意しましょう。
このような懸念材料がなく、チームコミュニケーションを中心として品質と生産性向上を目指したい企業にとっては最適な開発手法だと言えましょう。
- カテゴリ:
- トレンド