About us データのじかんとは?
ソフトウェア開発において、今や欠かすことのできなくなった手法がアジャイルソフトウェア開発です。アジャイル(agile)は、「素早い」「俊敏な」といった意味の単語です。はじめから
要件や仕様、納期が決まっているウォーターフォール開発とは異なり、アジャイル開発ではその名の通り、顧客の満足度を高めるためにプロダクトを機能単位で素早く開発していくのが特徴です。
その中でも多くの現場で活用されているのが、スクラム開発です。
今回はスクラム開発について簡単に紹介していきます。
技術の発達で多様なサービスや機能が日々生み出され、働き方改革や新型コロナウイルス感染症の流行など、人々の働き方や市場も変化しつつある昨今、ソフトウェアを取り巻く状況は刻一刻と変わっていきます。
そうした中で、数ヶ月から数年のスパンで計画を立てて、実行しようとしても、市場の変化や思い通りにいかない人員計画などに悩まされているチームも少なくないのではないのでしょうか?
スクラム開発では、経験に基づいて考える経験主義や価値を届けられない開発を最小にするリーン思考をもとに、以下の三つの柱を掲げています。
(1)透明性(Transparency):プロセスや作業の状況や障害がチーム内で可視化する
(2)検査(Inspection):チームの障害や制作物における問題、リスクを検知するための検査を行なう
(3)適応(Adaptation):顧客やステークホルダー、開発チームの状況に適応し、チームやプロセス、プロダクトに問題が生じた際に、調整を行う
また、スクラムの成功は以下の五つの価値基準を実践できるかにかかっています。
スクラムでは、3つの成果物、5つのイベント、3つの責任が必要不可欠な要素としてあげられます。
プロダクトバックログは、優先度順に並べられた、プロダクトの改善に必要なタスクの⼀覧です。タスクはプロダクトバックログアイテムとよばれます。
スクラムチームはプロダクトの将来を見据え、プロダクトゴールを定め、計画の柱にします。プロダクトゴールは常にプロダクトバックログに含まれます。
スプリントバックログは、スプリントゴール(なぜ)、スプリント向けに選択されたいくつかのプロダクトバックログアイテム(何を)、およびインクリメントを届けるための実⾏可能な計画(どのように)で構成されます。
スプリントバックログは、開発者が作成する、開発者のための計画です。スプリントバックログには、開発者がスプリントで⾏う作業がリアルタイムで反映され、スプリントの期間を通して更新されていきます。
スプリントゴールはスプリントで達成するべき目標です。スプリントゴールは開発者が確約しますが、スプリントゴールを達成するための手段は開発者に委ねられます。
作業が予想と異なることが判明した場合は、スプリントゴールに影響を与えることがないように、プロダクトオーナーと交渉してスプリントバックログのスコープを調整する必要があります。
インクリメントは、プロダクトゴールに向けた具体的な成果物です。正確なインクリメントを作成するためには正確な完成の定義(タスクの完了条件)が必要です。
なお、完成の定義を満たさない限り、作業をインクリメントの⼀部と⾒なすことはできません。スクラムチームは、すべてのインクリメントが連携して機能することを保証するために、徹底的に検証する必要があります。価値を提供するには、利⽤可能なインクリメントにしなければなりません。1スプリント内で、複数のインクリメントを作成することができ、作成されたインクリメントはまとめて、スプリントレビューでチームとステークホルダーに提⽰します。
スクラムには、以下の5つのイベントがあります。
スプリントはスクラムの基礎となるイベントで、1ヶ月未満のタームを繰り返します。複雑性を減らすため、スプリントはできる限り固定された時間、場所でおこなうことが望ましいとされています。スプリントにおいてスプリントゴールを定め、プロダクトゴールに向け、1スプリントごとに利用可能なインクリメントを作成します。
スプリントプランニング、デイリースクラム、スプリントレビュー、スプリントレトロスペクティブを含む、プロダクトゴールを達成するために必要なすべてのイベントは、スプリント内で⾏われます。また、プロダクトバックログアイテムの分割、定義が必要な場合は適宜リファインメントという作業を行います。
スプリントプランニングはスプリントの一番最初に行うイベントです。ここではスプリントで実⾏する作業の計画を⽴てます。計画はスクラムチーム全体で行います。スプリントが1ヶ月の場合は最大で8時間程度がプランニングに充てられます。スプリントの期間がそれより短い場合、プランニングの時間も短くなることもあります。
プロダクトオーナーは、参加者にプロダクトバックログアイテムの重要性と着手順、それらとプロダクトゴールとの関連性について話し合う準備をします。
プロダクトバックログアイテムについて、この場で見積もりや分割を行い、実現可能性についてチームで話し合います。そのスプリントで着手するアイテムはスプリントバックログアイテムとしてスプリントバックログ移動します。
イベントが終わるまでにスプリントで達成するべきスプリントゴールを定めます。スプリントゴールはステークホルダーに伝えられます。また、このイベントには、アドバイスをもらうためにチーム以外の⼈を招待することもできます。
毎日同じ場所、同じ時間に開催される15分のイベントであるデイリースクラムは、日々の作業を共有し、スプリントゴールに対する進捗を検査します。また、必要に応じてスプリントバックログを調整することもあります。
スプリントレビューはスプリントの最後から2番目のイベントです。
スプリントレビューの⽬的は、スプリントの成果を検査し、今後の適応を決定することです。スクラムチームは、主要なステークホルダーに作業の結果を提⽰し、プロダクトゴールに対する進捗について話し合います。具体的には、プロダクトゴールに向け、このスプリントで達成できたことや変化をレビューしたり、スプリントの結果を受けて次にやるべきことを話し合ったりします。
スプリントが1か⽉の場合、スプリントレビューは最⼤4時間です。スプリントの期間が短ければ、スプリントレビューの時間も短くすることもあります。
スプリントレトロスペクティブはスプリントの最後のイベントです。スプリントレトロスペクティブの⽬的は、スプリントを振り返り、チームの動きやインクリメントの作成過程を検証、改善することです。
スクラムチームは、個⼈、相互作⽤、プロセス、ツール、完成の定義に関して、今回のスプリントがどのように進んだかを検査し、スプリント中にうまく行ったこと、発生した問題とその解決を話し合います。最も影響の⼤きな改善は、できるだけ早く対処する必要があり、次のスプリントのスプリントバックログに追加することもできます。
スプリントレトロスペクティブをもってスプリントは終了します。スプリントが1か⽉の場合、スプリントレトロスペクティブは最⼤3時間。スプリントの期間が短ければ、スプリントレトロスペクティブの時間も短くすることがあります。
スクラムでは、チームは作業に必要な全てのスキルや専門知識を兼ね備える必要があり、一人のプロダクトオーナーと一人のスクラムマスター、複数人の開発者から構成されます。
開発者は、エンジニアに限らず、インクリメント(成果物)を作成するための作業に関わる人を指します。開発者は、スプリントの計画を作成し、スプリントゴールに向けて日々進捗を管理します。また、インクリメントの作成を確約し、スプリントバックログ以降の流れや成果物について専門家として責任を持つ必要があります。
プロダクトオーナーは、スクラムチームから⽣み出されるプロダクトの価値を最⼤化することに責任を持ちます。
具体的には、プロダクトゴールを策定し、明⽰的にチームに伝えることやゴールを達成するためにプロダクトバックログアイテムを適切に並び替え、チームに明確に伝えることをおこないます。プロダクトバックログアイテムとその並び順は開発チームやステークホルダーの意見を反映できますが、最終的な責任はプロダクトオーナーが負います。
スクラムマスターは、スクラムを確⽴させることの結果に責任を持ちます(ここでのスクラムは「スクラムガイド」で定義されたもの)。
スクラムマスターは、スクラムチームと組織において、スクラムの理論とプラクティスを全員に理解してもらえるように支援すること、また、チームがスクラムフレームワークのなかで円滑な開発ができるように改善を続けることに責任を持ちます。
スクラムマスターは、スクラムチームと、より⼤きな組織に奉仕する真のリーダーとされ、チームの中でスクラムの理解を高めるため、また常に改善をおこない、障害を取り除くためにさまざまな行動をおこないます。
例えば、⾃⼰管理型で機能横断型のチームメンバーをコーチすることやスクラムチームが完成の定義を満たす価値の⾼いインクリメントの作成に集中できるよう障害を取り除いたり、改善をおこないます。
ソフトウェア開発の主流となりつつあるスクラム開発。基本となる要素はwebで公開されている「スクラムガイド」で紹介されていますので、まずはそちらを読んでみることからはじめてみてはどうでしょうか?
【参考引用文献、サイト】 ・スクラムガイド ・SCRUM BOOT CAMP THE BOOK | 西村直人, 永瀬美穂, 吉羽龍太郎
(大藤ヨシヲ)
メルマガ登録をしていただくと、記事やイベントなどの最新情報をお届けいたします。
30秒で理解!インフォグラフィックや動画で解説!フォローして『1日1記事』インプットしよう!