今回はさまざまな企業で採用されている開発手法である「スクラム開発」についてお話をしていきます。言葉自体はよく耳にするけど実際にどんな開発手法なのか、導入するメリットやデメリットは? と思っていらっしゃる方のために、スクラム開発の基本的な概要から実際の開発の流れ、導入事例に至るまで盛りだくさんでお届けします。
もくじ
スクラム開発とは?
スクラム開発とはアジャイル開発のひとつで、アジャイル開発の中で最も有名な開発手法の一つとして知られています。ラグビーにおけるスクラムのようにチームメンバーがフォーメーションを組むことで、コミュニケーションを重視しながら開発に向かう姿が語源と言われています。
アジャイル開発とは?
アジャイル開発とは、システム開発やソフトウェア開発においてお互いに協力しながら、機能単位で開発工程のサイクルを短期間で繰り返すタイプの開発手法です。特徴としては、優先順位の高いやリスクの高い機能から順番に開発を進めていくことで、優先順位の低いものは後回しにすることで迅速に成果を得ることを目的としている点です。アジャイルという言葉が「俊敏な」という意味持つように、従来型のウォーターフォール開発よりも素早く開発を行うことに価値を置いています。
アジャイル開発のコンセプト
従来型のシステム開発で採用されていたウォーターフォール開発では、事前にシステムやソフトウェアの全体像を確定させて、あとは決まった仕様に沿って開発手法が採用されてきました。しかし実際の開発では、顧客の要望変化などにより計画が仕様になることがしばしば発生します。また仕様の変更により、他の機能に大きな影響を与えることが判明すると、全体の仕様を再検討しなおす必要が出てくるなどスピード感を持って開発を行うことが困難でした。そこでアジャイル開発では、これらの課題を解決するために開発の単位を機能単位まで絞り込んで計画を行うことで、仕様の変更に強く、短期間で成果を出せる開発体制をコンセプトとしています。
スクラム開発の進め方
役割を決める
スクラム開発では、通常の開発メンバーのほかに2つの管理者が設置されます。
- プロダクトオーナー
方向性を決めて開発する機能の優先順位を決めて、プロダクトの価値最大化に関して責任を負います。具体的には、プロダクトの目標や予算、開発方針などをプロダクトバックログに落とし込んでチームに提示する役割を担います。 - スクラムマスター
開発面メンバーが正しく開発を行っているかをチェックして、プロジェクトが円滑に進行する責任を負う役割。プロジェクトの進行を阻害する障壁を洗い出し、解決に取り組むことが求められます。
機能と優先度を決めてプロダクトバックログを作成
プロダクトオーナーが、開発するシステムやソフトウェアに求められる機能とその優先度をプロダクトバックログにまとめます。
スプリント目標を作成
プロダクトバックログを参照して、スプリントで実装する目標を設定します。
スプリントとは、開発チームが決められた作業量を完了させるまでの1週間~数週間の期間のことを指す言葉です。
スプリントバックログの作成とタスクの割当
スプリントバックログをより詳細なタスクに分解したスプリントバックログを作成します。ここではこのスプリント内に何を、どれくらい開発するのかについて決定して、実際に作業を担当するメンバーに割り振りを行います。
毎日の進捗確認会(デイリースクラム)を開催する
スプリント中は、毎日決まった時点に10~15分程度の短い進捗確認会(デイリースクラム)を開催します。開発の進捗状況や現在抱えている課題などについてチーム内で共有をして、その日の仕事の進め方を決めていきます。
スプリントレビューを開催する
スプリントが終了したら今回のスプリントで開発した機能についてレビューを行います。レビューはプロダクトオーナーや社内の利害関係者、顧客などに対して行われ、ここで問題がなければリリース、問題があったりより改善が必要な場合は次回のスプリントまでリリースが持ち越されます。
スプリントの振り返りを行う
スプリントレビュー終了後は、今回のスプリントをチーム全体で振り返ります。改善できるポイントなどについて話し合い、次回のスプリントでより効率的な開発が行えるように改善計画を立案します。
スクラム開発のメリット
正確な工数見積が可能になる
1週間~数週間先単位で開発を区切って(スプリントと呼びます)開発計画を立てるため、数ヶ月~数年に渡る開発計画を立てるウォーターフォール開発に比べて工数見積を正確に行うことができます。
チーム内での課題発見が早い
スクラム開発では、プロジェクトに参加しているメンバー同士で現在の状況や抱えている課題などについて確認し合う短時間のミーティングを毎日開催します。何か課題が発生した場合でも問題が大きくなる前に対応することができるので、スムーズなプロジェクト運営が可能となります。
顧客との大きな認識齟齬が生まれにくい
機能単位で開発を進めていくスクラム開発では一定期間ごとに成果物を顧客に確認してもらうことが可能です。そのため仮に成果物が顧客の認識と異なる場合でも、早い段階で修正対応を行うことができ、大きな認識齟齬の発生を避けることができます。
スクラム開発のデメリット
全体スケジュールのコントロールが困難
アジャイル開発全体に言えることですが、仕様や要件ごとにスケジュールが設定されるため、プロジェクト全体のスケジュール管理が難しい傾向にあります。開発中に品質改善のための修正が次々と追加され、当初の計画通りに進まない…などというケースもよく耳にしますので、スクラム開発に慣れたプロジェクトマネージャを中心にスケジュール管理を行うことが大切です。
プロジェクトメンバーの理解が重要
スクラム開発では、プロジェクトに参加するメンバーがスクラム開発を行うことにより得られるメリットを十分に理解している必要があります。この理解がないと、毎日のデイリースクラムが形骸化してしまい生産性の向上を期待できなくなってしまいます。
メンバーの入れ替えに弱い
スプリント期間中に参加メンバーが頻繁に入れ替わると、新規に参加したメンバーの教育や受け入れ体制の構築に時間を要してしまいプロジェクト全体の進行に悪影響を及ぼすおそれがあります。新規参加メンバーを加入する際は、どのチームで受け入れるのかなどしっかりとした計画を立てておくことが大切です。
スクラム開発を行う上で大切なこと
何でも話せる雰囲気を作る
スクラム開発はプロジェクトに参加しているメンバー間のコミュニケーションを最重視しており、話しやすい雰囲気を作ることが何よりも大切です。「仕事なのだから話して当然」という意見もあるかもしれませんが、導入初期段階では最も経験の浅いメンバーから発言を求めるなど、誰でも発言しやすい雰囲気作りを意識することも重要です。
小回りの効くベストなメンバー数で取り組む
スクラム開発に関わるメンバー数は5~8人程度がベストと言われています。チームに関わるメンバーの数が少なすぎるとお互いにポジティブな影響を与えることができず生産性の向上に繋がらず、一方でメンバー数が多くなりすぎるとデイリースクラムで調整・相談事項が増えてしまうそうです。
企業でのスクラム開発事例
ゲームポット(現GMO):ゲーム開発
◆SlideShare:ゲーム開発におけるScrum実施例
よりユーザーの期待に応えるために状況変化に強いスクラム開発を採用した事例です。プロダクトオーナーの選定から開発チームのビルディングをはじめ、会議体の設計やバックログの管理方法まで非常に細かく説明しています。発表は2012年と古い資料ですが、これからスクラム開発について学びたい、実際に導入してみたいと考えている方にとって有益な資料となっています。
KDDI株式会社:auでんき
従来型の開発手法で開発すると8ヶ月かかる開発を、スクラム開発を採用することで半分の4ヶ月で実現した事例です。通常であれば、稼働人員数を増やす、残業時間を増やすなどの物理的な対応が取られることが多いと思いますが、スクラム開発を採用することで素早く判断して開発をすすめることで、プロジェクトに関わる人員数や残業時間を増やすことなく開発を完了しています。同チームはスクラム開発を採用するのがはじめてだったそうですが、大企業におけるスクラム開発の好事例といえるでしょう。
リクルート:海外版エアレジ
◆SlideShare:小さくはじめる大規模スクラム
リクルートでは、店舗にPOSレジシステムを提供しているエアレジの海外版をスクラム開発で行ったそうです。海外というマーケットニーズが見えづらい領域で、継続的な改善を実施できるようにプロダクトオーナーのもと、複数のスクラムチームで開発を行う大規模なチームを構築しています。スクラム開発というと小規模な開発で採用されることが多いのですが、大規模な開発にも用いることができる事例となっています。
スクラム開発以外のアジャイル開発手法
エクストリーム・プログラミング
XPなどと呼ばれることもあるアジャイル開発手法の一つで、仕様が途中で変更されることを前提に、プロジェクト全体を細かい部分に分けることで各部分の開発に要する期間を短くすることで開発を行います。エクストリーム・プログラミングでは「コミュニケーション」「シンプル」「フィードバック」「勇気」「尊重」を重視しており、スピード感が求められる小規模な開発に最適な手法と言われています。
ASD(Adaptive Software Development)
2000年にジム・ハイスミスとサム・ベイヤによって開発された手法で、ウォーターフォール開発では対応しきれない、複雑なビジネスや変化の激しい業界向けのシステムやソフトウェアを開発する際に、継続的に変化を受け入れることを前提にしています。ASDでは「スペキュレーション」「コラボレーション」「ラーニング」といった3つのイベントを繰り返すことで開発が進みます。
LSD(リーンソフトウェア開発)
1980年代のトヨタ生産方式を参考に作られた製造業向けのリーン生産方式をシステムやソフトウェア開発に適用するものです。「ムダを省く」「品質を作り込む」「知識を作り出す」「決定を遅らせる」「早く提供する」「人を尊重する」「全体を最適化する」という7つの原則に基づいて開発が行われ、「ムダ」「ムラ」「ムリ」を可能な限り小さくするための手法です。
まとめ
今回は「いまさら聞けないスクラム開発」と題して、多くの開発現場で採用されているスクラム開発について見てきました。スクラム開発は、従来型の開発手法に比べて短期間で開発を行える上に、ビジネスの変化や開発途中で得られた新しい視点などにも柔軟に対応できる優れた開発手法と言えます。一方で開発に関わるメンバーがスクラム開発に慣れていない場合は、スクラム開発自体の目的ややってはいけないの理解と浸透に時間を要するというデメリットもあります。しかし、誰もが最初からスクラム開発に慣れているわけではありませんので、まず大切なことは第一歩を踏み出すことです。この記事をご覧になって、スクラム開発に興味を持たれた方は、ぜひ現場にスクラム開発の導入を検討されてはいかがでしょうか?