見出し画像

溜池随想録 #14 「スクラム(Scrum)の概要」 (2010年7月)

スクラムの原点

 スクラム(Scrum)は、アジャイルソフトウェア開発の様々な手法の中で最もよく使われている手法である。米VersionOne社が2009年7月から11月にかけて実施した調査によれば、スクラムを使っていると答えた回答者が50%、スクラムとXPの組合せを使っていると答えた回答者が24%を占めている(図1参照)。<図1>
 このスクラムの語源は、ラグビーのスクラムであり、その原点は野中郁次郎と竹内弘高(二人とも現在は一橋大学名誉教授)がハーバード・ビジネス・レビュー(1986年Jan.-Feb)に発表した論文”The New New Product Development Game”にある。
 本田技研工業、キヤノン、富士ゼロックスなどでは、開発チームが一体となった独特の製品開発が行われてきた。このプロジェクト管理の特徴をソフトウェア開発に応用したのがスクラムである。

スクラムの基本

 スクラムは、他のアジャイルソフトウェア開発と同様に、イテレーション(繰返し、反復)によってシステムを開発していく。イテレーションの期間は通常30日間である。スクラムでは、この1回のイテレーションを「スプリント」と呼ぶ。
 開発チームは、7人程度が標準である。また、開発を担当するメンバーのほかに、「スクラムマスター」と「プロダクトオーナー」が重要な役割を担っている。スクラムマスターはプロジェクト管理者というより、開発チームと外部との間の管理的作業を行う世話役に近い。開発チーム内では解決できない障害を解決することが主な役割である。
 また、プロダクトオーナーは、開発しているシステムや製品の総責任者であり、顧客やエンドユーザーの代表でもある。
 スクラムでは、まず、そのソフトウェアに必要な機能をすべて書き出し、優先度をつける。この実現すべき機能の山を「製品バックログ」と呼ぶ。製品バックログのリストアップと優先度の責任は、プロダクトオーナーが負う。

 次に、開発チーム、スクラムマスター、プロダクトオーナーが集まり、スプリント計画を策定する。具体的には、製品バックログから、次のスプリントで実装すべきものを選び、より詳細なタスクに分割し、リストを作成する。これをスプリント・バックログという。ちなみに、一つのタスクは一般的に1人日~2人日程度の作業量である。
 スプリントの間、スクラムマスターは毎日、開発チームと「デイリースクラム」と呼ばれるミーティングを同じ時間、同じ場所で行う。デイリースクラムでは、前回のミーティングから何が完了したか、次回のミーティングまでに何をするのか、何が問題になっているかを報告する。デイリースクラムには、開発チーム以外の利害関係者も出席できるが、意見や質問、要望を述べることはできない。スプリント・バックログをどのように分担するのか、作業手順をどうするかはチームが自律的に決定し、スクラムマスターであってもチームから相談がない限り、口出しはしない。
 スプリント終了時点で「スプリントレビュー」を行い、完成したソフトウェアのレビューを行い、必要に応じて製品バックログとその優先度の見直しを行う。
そして、次のスプリントの計画を策定し、スプリントを実行する。これを繰返し、製品バックログがなくなった時点でプロジェクトは終了する。

スクラムの基本的な考え方

 スクラムで重要なことは、約束したことを確実に実現すること(Commitment)、その実現のために専念すること(Focus)、自分に不利なことでも隠さないこと(Openness)、他のメンバーに敬意を払うこと(Respect)、そして勇気を持つこと(Courage)だと言われている。
 スクラムの開発チームは、各スプリントの目標を達成することをコミットメントする。その代わりに達成するための手順や分担、スケジュールについては自分たちで決める権限をもつ。プロダクトオーナーやスクラムマスターであっても、スプリント中に開発チームに指図したり、作業項目を追加したりしてはいけない。

 製品バックログやスプリント・バックログをオープンにすることによって、作業の進捗と優先順位が可視化され、関係者で情報を共有できる。また、他のメンバーに敬意を払うことによってチームワークを強固なものとし、勇気を持って目標達成のために全力疾走(スプリント)を繰り返す。それがスクラムである。

 以上のように、スクラムはソフトウェア開発者や開発チームの持つ能力を最大限引き出すための枠組みを作るルールだけが決まっている。このため、より具体的なプラクティスを定めているXPと組み合わせて利用されることも少なくない。
 
 次回は、アジャイルソフトウェア開発に適した契約について考えてみたい。

この記事が気に入ったらサポートをしてみませんか?