銀行員からのRailsエンジニア

銀行員からのRailsエンジニア

銀行員から転身したサービス作りが大好きなRailsエンジニアのブログです。個人で開発したサービスをいくつか運営しており、今も新しいサービスを開発しています。転職して日々感じていること、個人開発サービス運営のことなどを等身大で書いていきます。

当ブログではアフィリエイト広告を利用しています

【読書まとめ25】スクラムブートキャンプ(SCRUM BOOT CAMP THE BOOK)

勤めている会社で、スクラムで開発を進めているプロジェクトに初めて入ることになったので、先輩におすすめいただいた スクラムブートキャンプ(SCRUM BOOT CAMP THE BOOK) を読みました。

この本の紹介に書いてある「はじめて『スクラム』をやることになったら読む本」という言葉通り、マンガをはさんだストーリー仕立ての説明はとても分かりやすかったです。

後から見返せるように、ポイントをまとめてみました。このブログを読むだけでもスクラムの雰囲気は分かると思います。

f:id:ysk_pro:20200115221028p:plain

 

ソフトウェアをつくる上で大事なこと

  • できたものを使って利用者が便利になる等の成果をあげること。何かを作ることは目的ではなく、あくまで手段である。当初作ろうと思っていたものよりも良いアイデアが出れば、目的を達成するためにそれを受け入れながら、作るものを変えていく。そうすることで成果を最大化できる
  • このような考え方で、成果を最大化するために考案された開発の進め方がアジャイル開発である

アジャイル開発とは

  • 次のような開発の進め方をアジャイル開発と言う
    • 関係者は目的の達成のためにお互いに協力し合いながら進める 
    • 利用者の反応関係者からのフィードバック継続的に得ながら、計画を調整する 
    • 一度にまとめてではなく、少しずつ作る。そして実際にできあがったものが求めているものと合っているかを頻繁に確認する
  • あらかじめおおよその全体像を明らかにしたうえで、どのくらいの期間と人数で仕事をするかを決めて、その範囲の中で大事な要求から順にプロダクトを作っていく

スクラムとは

  • 目的を達成できるプロダクトをつくるために、常に進む方向を調整しながら全員が一丸となって行うべき作業、会議、成果物を定めたものスクラムと言う

スクラムの進め方

  • スクラムではプロダクトオーナー(後述)が要求を並べ替えて、開発チームがスプリント単位でプロダクトをつくっていく
  • 「プロダクトバックログ(プロダクトへの要求を抽出して順番に並べ替えたリスト)を作成し、常にメンテナンスして最新に保つ
  • スプリント(1週間〜4週間)の固定の期間内で、計画、設計、開発、テストなどプロダクトのリリースに必要なすべてのことを行う

スクラムのチーム編成

プロダクトオーナー

  • プロダクトバックログを管理する責任者。プロダクトバックログは誰でも追加して良いが、順序(優先度)を最終的に判断して責任を持つのはプロダクトオーナーである

開発チーム

  • 通常3~9人で構成される。3人未満だと個人のスキルに依存してしまい、10人以上だとコミュニケーションコストが増えてしまう
  • 開発チーム内での仕事の進め方は、開発チームのメンバーの合意のもとに決められ、外部から仕事の進め方を指示されることはない

スクラムマスター

  • スクラムのプロセスを円滑を回して、プロダクトオーナーや開発チームを支える

スクラムで実施するミーティング

スプリントプランニング

  • スプリントの開始時に行う
  • 2つのトピックを扱う
    1. スプリントで何を達成するかを決める。プロダクトオーナーが今回のスプリントで達成したい目標を明らかにし、それを達成するためのプロダクトバックログ項目を選ぶ。バックログの個数は、ベロシティ(後述)を踏まえて決める。スプリントの目標をスプリントゴールとして簡潔にまとめておくと良い 
    2. 開発チームが選択したプロダクトバックログ項目をどうやって実現するかの計画を立てる。具体的な作業を洗い出し、プロダクトバックログの項目と作業を一覧にしたスプリントバックログを作成する。個々の作業は1日以内で終わるように分割するのが一般的で、時間での見積もりがよく使われる
  • 2週間スプリントであれば、4時間程度を使う

プロダクトバックログリファインメント

  • スプリントプランニングでプロダクトバックログの項目からスムーズに選択できるようにするため、プロダクトバックログの上位の項目について事前準備を行う
  • 準備する内容の一例
    • 中身を具体的にする
    • 疑問点を解決する
    • 何ができたら完成なのか(受け入れ基準)を明確にする(デモ手順まで決めておくと認識が揃いやすい)
    • 自分たちが扱えるサイズに分割する(具体的な分割方法はこちらの記事が参考になりました)
    • 見積もる
  • いつどのように行うかはスクラムでは定義していないが、使う時間はスプリントの10%以内にするのが一般的

デイリースクラム

  • スプリント期間中、毎日、同じ場所、同じ時間に行う
  • スプリントバックログの残作業を確認し、このまま進めてスプリントゴールが達成できるのかを確認する
  • 開発チームのメンバーが以下の3つを話す形で進めることが多い
    • スプリントゴールの達成のために、自分が昨日やったことは何か
    • スプリントゴールの達成のために、自分が今日やることは何か
    • スプリントゴールを達成する上で、障害となるものがあるか
  • 問題解決の場ではないことに注意する。開発チームのメンバーが問題を報告した場合は、デイリースクラム終了後に改めて、問題解決に必要な人を集めた別の会議を設定する
  • 開発チームの人数に関係なく 15分間で行う

スプリントレビュー

  • スプリントの終わりに行う
  • 開発チームのスプリントでの成果物を関係者にデモを行い、フィードバックを得てプロダクトバックログを見直す
  • デモができるのは完成したものだけである
  • 2週間スプリントであれば、2時間程度を使う

スプリントレトロスペクティブ

  • スプリントレビューの後に行う
  • スプリントの振り返りを行う。うまくいったこと、今後改善すべき点を整理し、今後のアクションプランをつくる。アクションプランのうち少なくとも1つは次のスプリントのスプリントバックログに含めると良い
  • アクションを検討するときは、アイデアを具体化するために便利な指標であるSMARTを意識すると効果が高まる
    • Specific(具体的な)
    • Measurable(計測可能な)
    • Achievable(達成可能な)
    • Relevant(問題に関連のある)
    • Timely / Time-bounded(すぐできる / 期日のある)
  • 2週間スプリントであれば、1.5時間程度を使う

スクラムを行う上で知っておいた方がいいこと

  • プロダクトバックログは詳細なフォーマットは定められていないが、以下のどちらかの形式で書かれることが多い
    • 機能・目的・詳細でまとめて一覧にした形式
    • 実際に使うユーザーに何を提供してその目的は何かを簡潔に書く、ユーザーストーリーという形式
  • プロダクトバックログに重要な項目が漏れないようにするためのやり方:スクラムチームみんなで、プロダクトバックログに含めたほうがいいと思う項目を付箋などに書き出していく。様々な人のいろんな観点で洗い出すことで、致命的な漏れをなくすことができる
  • インセプションデッキは、プロジェクトを始める前に明らかにしておくべきことを知るための活動。10個の質問という形でまとめられていて、それぞれの質問についてスクラムチーム全員で話し合う。話し合って明らかになったことは、プレゼン資料のようなスライドにまとめていく。スクラムではゴールやミッションを常に強く意識しながら行動することが重要であり、スクラムチーム全員で話し合うことが大切
  • 多くのスクラムチームでは、相対見積もりが使われる。基準となる作業とその時の数字を決めて、それとの比較で作業量を見積もる。実際のやり方としては、多くのチームではラニングポーカーという手法が使われる。それぞれの項目について、1人1人が見積もりを考えて、同時に公開してすり合わせる
  • スプリントごとに終わらせられるポイント数は、ベロシティと呼ばれている。ベロシティはスクラムチームのスピードのようなものである。ベロシティは決めるものではなく測るものであり、実際に行った数字を使うのが一番確実である
  • プロジェクトで調整できるものは次の4つしかない。品質予算期間スコープ である

 

 おわりに

本書は、最初にスクラムについてのポイントをまとめ、その後は実践編としてマンガをはさみながらのストーリー仕立てで解説していくという構成でした。

サクサク読めてとても分かりやすかったので、ご興味ある方は是非お手に取ってみてください。 

次は、会社の方におすすめいただいた カイゼン・ジャーニー (アジャイル開発の実例を書いた有名な本です)を読む予定です。

 

以下の記事を合わせて読むことでスクラムのベースとなるアジャイル開発についての理解がさらに深まると思うので、ご興味ある方は是非ご覧ください。

ysk-pro.hatenablog.com

ysk-pro.hatenablog.com

ysk-pro.hatenablog.com