今こそスクラムを組む時だ!~責任と権利を持つチームの振る舞い~ Web

Preview:

Citation preview

今こそスクラムを組む時だ!~責任と権利を持つチームの振る舞

い~2009.10.10

minamo

最近マスター迎えました!!

シルバーウィークは燃え尽きてました

今回マスターを迎えて思った

振り回されずにコントロールしたい

プロジェクトを

自分を

チームを!

今回のキーワード

チーム

1.スクラムとは?

スクラム• スクラム(SCRUM) 1993年生まれ

• 反復型開発/素早い開発

• キャノンやM3などは以前からスクラム的手法を使っていた

• アジャイルソフトウェア開発手法の一種

ゲーム業界でも・・・

• CEDEC2009「 SCM最新技術事例~「 Star Wars:The Old Republic」での大容量ゲーム開発~」

• GDCでは毎年講演がある?

• 北米が多いが、日本でも事例がちらほらと

語源はラグビー

• スクラム(SCRUM)の語源は、ラグビーの「スクラム」

• スポーツのチームのように、チームが一体となって開発を進めるための手法

チームが一体となって進める手法

スクラムの範囲

• プロジェクトに対する思想

• プロジェクトライフサイクル

• タスクマネジメント

• (チームビルディング)

チームが一体となって進める手法

スクラムの範囲

• チームが一体となるためのプロジェクトに対する思想

• チームで進めるプロジェクトライフサイクル

• チームで進めるタスクマネジメント

• (チームが一体となるためのチームビルディング)

スクラムの価値(思想)

5つの価値• コミットすること

• 集中すること

• オープンであること

• 敬意を払うこと

• 勇気を出すこと

これらについては後で触れます

2.スクラムのプラクティス

プロジェクトライフサイクル

スクラムのPJライフサイクル

計画

準備

リリース

スプリント(イテレーション)による繰り返し

開発

計画フェイズ

• 企画立案

• 予算確保

• 初期のプロダクトバックログの作成

• (調査のための設計とプロトタイプ作成)

準備フェイズ

• さらに詳細な仕様を策定

• 最初のイテレーションに必要な優先順位付け

• (調査のための設計とプロトタイプ作成)

開発フェイズ

• スプリント(イテレーション)を繰り返し、実装を進める

• スプリント内のPDCA

• 各種バックログの更新

リリースフェイズ

• 最終デバッグ

• リリースのための文書等の作成

• リリース

バックログ

バックログとは

• 平たくいえば、ToDoリストやWBSのようなもの

• 「ログ」と名前が付いているので、過去の記録と思いがちだが、全く逆の意味なので注意

バックログの種類

プロダクトバックログ

リリースバックログ

リリースバックログ

スプリントバックログ

スプリントバックログ

スプリントバックログ

リリースバックログ

プロダクトバックログ• 製品の機能リスト

• プロダクトオーナーによってプライオリティ付けがされたもの

ID 機能 分類 状態 プライオリティ 工数

10 ロード画面でセーブデータをロードできる セーブ・ロード 完了 1 4127 メッセージスピードを切り替えられる オプション 作業中 4 242 戦闘画面のどこでもセーブできる セーブ・ロード 未着手 2 7* ……* ……* ……

リリースバックログ

• プロダクトバックログから、次期リリース( αとか βとか)の項目を抜き出したもの

• 抜き出し後、さらに粒度を細かくすることもある

スプリントバックログ• あるスプリントで行うことのリスト(ToDoリスト)

• 残作業時間を日々トレースする

• ひとつのタスクは通常4~16時間くらい

ID タスク 担当者 状態 残作業時間7月10日

7月11日

7月12日

7月13日

7月14日

20 タイトル画面仕様レビュー 佐々木 完了 10h 5h 0h 0h 0h127 メッセージスピードを切り替えられる 本間 完了 12h 5h 8h 2h 0h42 戦闘画面のどこでもセーブできる 田切 作業中 16h 16h 10h 12h 6h* ……* ……* ……

スプリント

スプリント(イテレーション)

• 一定期間の開発サイクル

• プロダクトバックログの中から一部を抜き出して、この期間中の完成を目指す

• スクラムでは1スプリント30日が推奨されている(ただし、ゲームの場合もっと短い方がいい気がする)

スプリント計画ミーティング• スプリントを開始する前(もしくはスプリントの最初)に2つのミーティングを行う

• 1つはステークホルダー(利害関係者)が集まり、プロダクトバックログとリリースバックログの精度を上げる

• もう1つは、スクラムチームとプロダクトオーナーが集まってスプリントバックログを作る

スプリントの管理

• 原則、スプリント中に仕様追加を行うことは禁止とされている

• プロジェクトマネージャーは、完了の見込みがない時、スコープの縮小、スプリント再構築・中止をすることができる

スプリントバックログの更新• スプリント中は、毎日スプリントバックログの更新を行う

• 残作業見積もりを行うので、バーンダウンチャートを書くことができる

スクラムミーティング

• スタンドアップミーティングの名で知られるものと同様

• 毎日同じ時間・同じ場所でスクラムチームが集まり、決まった報告を行う

• 15分~20分

スクラムミーティングの内容• 1.この1日で何をしたか

• 2.この1日で何を行うか

• 3.スプリントの目標を達成するための障害

• (4.スプリントバックログに追加するものはあるか?)

• (5.新たに学んだことはあったか?)

スプリントレビュー

• スプリントの最後にスクラムマスター主催で行うレビュー

• ステークホルダーにスプリントの成果物を見せる

• PowerPointなどは使わずに、開発して動いている状態のものを見せることを中心に進める

スクラムマスター

スクラムマスターとは

• スクラムチームの代表

• スクラムを成功させる責任を持つ人

• スクラムの価値(思想)、プラクティス、ルールを正しく守って運用する人

スクラムマスターの役割

• スクラムを主導する

• チームの障害を取り除く

• 決断が必要な際に素早く下す(基本1時間以内)

3.スクラムに関するその他知識

中規模・大規模開発の場合

中規模・大規模開発の場合

• スクラムは基本的に7人(最大でも10人)以下を想定している

• 中規模・大規模開発の場合は、スクラムチームを複数で構成する

• スクラムマスターたちで、スクラムチームを組む

スクラムチーム スクラムチームスクラムチーム

スクラム

複数チームでのスクラム

スクラムマスター

メンバーA

メンバーB

メンバーC

メンバーD

メンバーE

スクラムマスター

メンバーA

メンバーB

メンバーC

スクラムマスター

メンバーA

メンバーB

メンバーC

メンバーD

他手法との併用

• スクラムは他のアジャイル開発手法と競合しないので、併用されることが多い

• 特にXPとの併用は有名

XP スクラム

技術的要素が強い マネジメント要素が強い

苦労しそうな点

タスクの見積もり

• 各タスクごとに時間で見積もりをつけるのは難しい(特にプログラム作業)

• 誤差が3倍ほど出ることは日常茶飯事

• 悩んだ時は、「三点見積もり法」でとりあえず数値を決めておけば大体問題ないはず

三点見積もり法• 楽観値:全てが上手くいった場合• 通常値:期待値。普通に考えた場合。• 悲観値:進みが最悪だった場合。

• ( 楽観値 + 通常値 ×4 + 悲観値 )  ÷ 6

• 個人的には次のくらいでも悪くない気がする

• ( 楽観値 + 通常値 ×2 + 悲観値 )  ÷ 4

4.スクラムの価値を振り返って

5つの価値• コミットすること

• 集中すること

• オープンであること

• 敬意を払うこと

• 勇気を出すこと

コミットすること

• スクラムチームは、イテレーションの達成目標にコミットする(責任を負う)

• その代わり、達成するためにどうするかを自分たちで判断する権限と自治権を与えられる

• イテレーション内での仕様追加が許されないのもこのため

集中すること

• スクラムチームはイテレーションの目標に集中しなくてはならない

• 経営陣とスクラムマスターはそのためのリソースの提供や障害の排除を心がける

オープンであること

• プロダクトバックログをオープンにし、作業と優先順位を各ステークホルダーが見られるようにする

• スプリントバックログをオープンにし、チームの進捗状況が分かるようにする

敬意を払うこと

• チームメンバーそれぞれの長所/短所に敬意を払う

• 何か失敗しても、責任転嫁しないのはもちろんのこと、誰か一人の責任にしない

• 自己組織化と自立によって、問題を解決する

勇気を出すこと

• 経営陣は勇気を持って適応型の計画や方向性を示す

• チームは自主性と自己管理を必要とする仕事に勇気を持って当たる

5.スクラムは結局なんなのか

こう考えると見えてくる

普通にプロジェクトのフローを考える

1.基本仕様を起こして「機能リスト」を作成する

2.実装順番を考える

3.細かいタスクを考える

4.進捗を把握し、問題を解決する

5.機能がある程度出来たらフィードバックを受ける

• 1.基本仕様を起こして「機能リスト」を作成する

• 2.実装順番を考える

→  計画・準備フェイズ→  プロダクトバックログの作成

• 3.細かいタスクを考える

→  スプリント計画ミーティング→  スプリントバックログの作成

• 4.進捗を把握し、問題を解決する

→  スクラムミーティング→  スクラムマスターの役割

• 5.機能がある程度出来たらフィードバックを受ける

→  スプリントレビューミーティング

“ ”当たり前のこと

しかし

いつも重要なのは“ ”当たり前 なこと

つまりスクラムとは

“ ”何が 当たり前 かを

ハッキリさせて一歩踏み込んだ手法

業界内で定番のこのQ&A

• Q : ゲーム開発に一番重要なことは?

• A : チームワーク/コミュニケーション

Q : スクラムとはどんな手法か?

チームが一体となって進める手法

スクラムを組んでみましょう!

ありがとうございました!

参考文献

• 初めてのアジャイル開発  ~スクラム、 XP、 UP、 Evoで学ぶ反復型開発の進め方 ~ (クレーグ・ラーマン著)

• アジャイルソフトウェア開発スクラム  (ケン シュエイバー著)

Recommended