JMDC TECH BLOG

JMDCのエンジニアブログです

スクラムを0から導入してみた話

こんにちは。株式会社JMDC プロダクト開発部の三井です。
らくらく健助という健康保険組合の保健事業を支援するWeb分析サービスの開発を担当しています。

今年、JMDCではアドベントカレンダーに参加しています。
qiita.com

本記事は、JMDC Advent Calendar 2023 6日目の記事です。

2023年上期のOKRの一環として、チームにスクラムを導入したのでその活動を振り返ってみようと思います。
※スクラムの説明は省略していますので、ある程度 知識がある方向けになります

ざっくりまとめ

  • スプリント0を開始する前に色々な準備をしたよ
  • スプリント0ではメンバーがスクラムに慣れるように工夫したよ
  • スプリント0ではスプリント1以降のプロダクトバックログを用意したよ
  • スプリント0の流れでスプリント1を行ったよ

なぜ導入するに至ったか

そもそも「らくらく健助」は、JMDCの祖業である健康保険組合向けのプロダクトのため、15年を超える長い歴史があり、一方でニーズがどんどん拡大する中で開発手法の整備やビジネス部門との連携が追い付かないという課題がありました。

具体的には以下のような課題がありました。

  • ビジネス部門とのコミュニケーション量
    • ビジネス側から開発要望を受け取ったあとのコミュニケーションの機会が少なく、開発した機能が要望を満たしているのか不明確
  • メンバー間の連携
    • エンジニア1人につき1案件を対応する体制のため、タスクをシェアする機会がほぼ存在しない(属人的になりがち)
  • カイゼンの機会
    • 自分たちの活動の振り返りの機会が少なく、業務プロセスのカイゼンがほとんどない

…etc

私自身が前職でスクラムを経験していたこともあり、今回この課題を解決するためにスクラムの導入をチーム内に提案したところ、まずはやってみよう!という流れに至りました。

やったこと

振り返ってみると、大きく3つのフェーズに分かれていたと思います。

  1. 導入準備
  2. スプリント0
  3. スプリント1

いざ、スクラムを導入するぞ!となってもいきなりスプリントを開始できるわけではありません。
スクラムを導入する際は「スプリント0」という初期段階の立ち上がりをスムーズにするためのスプリントを行うのが一般的かと思います。
とはいえ、スプリント0もいきなり開始できるわけではなく、ある程度準備をする必要があるということでまずは導入準備を行いました。

1. 導入準備

チーム内外に向けたスクラム導入の調整・すり合わせから入り、最終的にはスプリント0を開始できる状態まで持って行きました。

発足編

チームのOKRを決める際に、スクラムを提案したのがきっかけでした。
その後はスプリント0の実施に向けて、チーム内外とのすり合わせや相談をひたすら行いました。
基本的にはConfluence等でたたき台・草案を作成する⇒リーダーや部門長、メンバーにフィードバックをいただく、というような形で導入案をブラッシュアップしていった形です。

トピックとしては以下のような事柄をすり合わせていました。

● ゴールや方針、進め方はどのような形か?

「どこまでのタスクをスクラムで回すのを目指すのか」、対象のようなものを決めていました。
当初は「いきなり現在進んでいる開発をスクラムで行うのはハードルが高いため、まずはOKR活動を対象にスクラムを回してみる」という方針で進めていました。
最終的には新規の開発案件をスクラムで進めていくことになったのですが、ラフでも良いので現時点での目標や方針を明示的にしてすり合わせておくと進めやすいかなと思います。

また今後の進め方についてもある程度見立てて、方針とセットで展開していました。
TODOリストのようなものでも良いので、共有しておくと自他ともに流れのイメージが沸き、進めやすくなるかなと思います。

実際の内容:

①スクラム運用ルールのたたき台を作る
・導入にあたって、最低限必要なポイントを絞りたい、、
・スクラムマスターの人と一緒に考える
②〇〇さん、XXさんに相談
③スクラム運用ルール レビュー依頼
④POとバックログ整理などを行う
⑤勉強会の実施
⑥チームに展開してスプリント0開始(=キックオフ)


● チーム体制はどのような形か?

スクラムは開発チームだけではなく、スクラムマスタ―とプロダクトオーナー(PO)の役割を持つメンバーが必要となります。
その際、自チームのメンバーの役割兼任を許容するのか、もしくは他チームのリソースを借りられるのかは部門長と相談していました。
結果的にスクラムマスターは他チームのエンジニア、POは自チームのリーダーが担うことになり、ともに導入の準備を進めていくことになりました。

● ツールは何を使うのか?

スクラムをスムーズに進めるためにどのようなツールを使うのか、特にプロダクトバックログやカンバンは何を使うのかを決めていました。
チームではヌーラボのBacklogを使っていましたが、他チームがJiraを使っているのを見て、プロダクトバックログとカンバンがセットで扱いやすそうな点からJiraに決めました。

● その他

上記以外にも細かいトピックは色々ありましたが、スプリント0の内容についてというよりは「スプリント0を始めるために何が必要か?」という視点で話を詰めていました。
またメンバーのスクラムに関するノウハウが足りていないということもあり、他チームと合同で勉強会を開催することになりました。

勉強会編

発足編を進めている一方で、書籍やUdemyを参考にスクラムに関する説明資料を作成していました。
スクラムの全体像やスクラムイベントなど個々の要素についてページを作成し、事前にメンバーに読んでおいてもらう想定でしたが、これらの資料を使って勉強会を開く、といった提案を受けたため実施に至りました。

勉強会は毎朝30分、デイリースクラムを想定した時間で行いました。
内容としては理論編と実践編に分かれており、理論編で記事の読み合わせ、実践編では他のスクラム経験者からコメントをいただくというような流れで実施しました。

実際の企画内容:

●勉強会の内容
[理論パート]:10分×2本、または15分×1本
 ・スクラム勉強会_資料 を読み合わせします
 ・三井が画面を共有し、1ページずつ説明します
 ・1日1~2ページを実施予定
[実践パート]:5分程度(XXさん、〇〇さん)
[質疑応答]:5分程度
 ・FAQページ作ったので、こちらに書いてもらってもOK

●スケジュール
・毎朝10:00 - 10:30
[day1]
 ・アジャイルを選択する理由
 ・スクラム全体像
[day2]
 ・アジャイル開発とは
 ・アジャイルマニフェストとは
[day3]
 ・アジャイルの12の原則
 ・スクラムガイド
[day4]
 ・スクラムチーム構成
 ・プロダクトバックログ
[day5]
 ・見積もり手法
 ・リファインメント
[day6]
 ・スプリントプランニング
 ・プロダクトバックログ、見積もり、リファインメント、プランニングのまとめ
[day7]
 ・デイリースクラム
 ・スプリント中の役割
[day8]
 ・スプリントレビュー
 ・スプリントレトロスペクティブ


内容についてはスクラムイベントなど基本的な要素をメインとし、他は実際に経験しつつ身に着けていってもらう形でした。


直前編

最後にスプリント0が実施できるように最終準備を行いました。

具体的には下記の5つです。

  1. スプリント0の期間はいつからいつまでにするか
  2. 1スプリントの期間は何週間にするか
  3. スプリント0で何を行うのか
  4. プロダクトバックログの作成とリファインメントの実施
  5. スプリント0 キックオフ


1. スプリント0の期間はいつからいつまでにするか

まずはスプリント0の期間を定めました。
一般的には2週間〜最大で1ヶ月程度の期間を置きますが、今回は3週間と期間を定めました。(お盆を含んだため)
また、スプリント0の期間が決まれば自ずとスプリント1の開始日も決まるかと思います。

実際の定義:

■期間
・スプリント0は8/1~22とする
・スプリント1は8/23開始とする


2. スプリントの期間は何週間にするか

次に1スプリントを何週間にするかを定めました。
こちらも1週間〜4週間で定めるのが一般的かと思いますが、初期はプロセスのカイゼンサイクルを短く回そう(=レトロスペクティブを週一回行いたい)という点から、1スプリントを1週間と定めました。


3. スプリント0で何を行うのか

スプリント0でやることをスクラムマスター、POと相談し定義しました。
アトラクタさんのスライドを参考に、チームで行う・行わないプラクティスを決定しました。

スクラムプロジェクト開始のベストプラクティ.ス
https://www.ryuzee.com/contents/blog/7120

実際には下記の事柄を決めました。

  • スプリント0でやること

    • プロダクトの観点
    • プロダクトゴールや価値の明確化
    • スクラムによる開発の合意
    • 初期のプロダクトバックログの準備
    • 人の観点
    • ロールの明確化
    • ドラッカー風エクササイズ
    • ファシリティ
    • ワーキングアグリ-メントを再定義する
    • 技術や品質の観点
    • 完成(完了)の定義の作成
    • ドキュメントの扱い
    • 計画やマネジメントの観点
    • レポーティング
    • Others
    • 運用ルールの作成&共有
  • スプリント0でやらないこと/あとでやること

    • 星取表
    • スクラムチーム全員が集まれる場所を用意する(プロジェクトルーム)
    • 非機能要件の明確化
    • アーキテクチャや開発言語などの選定(再定義)
    • 技術検証(スパイク)
    • 開発環境・ツールセットの再定義
    • テスト自動化
    • 技術的なプラクティスの選択の検討すること
    • スケジュールに影響するパラメータ
    • リスクを管理する
    • インセプションデッキ
    • 開発ルール
    • リリースについて


制約として期間が3週間であること、またメンバーそれぞれが開発タスクを抱えていることから、スプリントを開始させるのに最低限必要なものを取捨選択したような形でした。


4. プロダクトバックログの作成とリファインメントの実施

スプリント0で行うプロダクトバックログアイテムの起票とそのリファインメントをPO、スクラムマスターと一緒に行いました。
事前にスプリント0でやることを決めていたのでそれぞれを起票していき、最初の1週間分のアイテムをリファインメントしてReady状態にしていました。
フォーマットとしてはWhyやWhat、受け入れ基準を書くようにし、ストーリーポイントについては特に振らずに進める形としました。

実際のフォーマット:

  • 経緯や背景(なぜこの課題を行うのか)
  • TODOや概要(この課題で何を行うのか)
  • 受け入れ基準
  • その他


5. スプリント0 キックオフ

最後にチーム内に向けてキックオフミーティングを実施し、スプリント0の開始を宣言しました。

実際には下記の内容をチームに展開しました。

  • スプリント0とは
  • 目的
  • 期間
  • 概要
  • その他


概要ではスプリント期間やスクラムイベントのスケジュールを定義し、プロダクトバックログの状態をチームに展開しました。

実際に記載した概要:

  • 「タスク洗い出し」は完了
    • (バックログのリンク)
  • タスク実施からスタート
  • スクラムの練習も兼ねて、イベントを実施します
    • スプリント:1週間
    • デイリースクラム:毎日10:30~10:45
      • ツール:Jira
    • スプリントプランニング:毎週水曜日、10:30~12:30
      • ツール:Jira
    • スプリントレビュー:毎週火曜日、14:00~15:00
      • ツール:Confluence
    • スプリントレトロスペクティブ:毎週火曜日、15:00~16:00
      • ツール:Confluence、Google Jamboard
    • リファインメント
      • ペア形式でトライ
      • プランニングの最後に、リファインメント対象を決めて、メインとサブ決めて行う
      • 時間は特に決めず、担当者間で決める
  • 成果について
    • 練習なのでそこまで厳密には成果を求めない。(スプリントに慣れるまで許容)
  • その他
    • プランニングは行うが、ポイントは振らない予定
    • プロダクトバックログアイテムの中身は共有するが、プランニングポーカーはスキップとする


「あくまでも練習、まずはスクラムに慣れよう」としておくことで心理的なハードルが下がり、メンバーが気軽に参加できるような空気ができたかなと思います。

2. スプリント0

キックオフ後はスプリントプランニングからスタートし、プランニングの結果に沿ってプロダクトバックログアイテムを消化していきました。

意識していたのは「スプリントのリズムを作る」という点です。
「スクラムってこんな感じなんだ」という感触をメンバーに掴んでもらい、軌道に乗ってくれればスプリント0としては御の字かなというように考えていました。
そのためにもスクラムイベントの手順書を用意しておき、ファシリテーターを自分が担うことでメンバーがスクラムに慣れていく流れができたかなと思います。
一般的にはスクラムマスターがこの役割を担うかと思いますが、私自身が前職で経験していたこともあり、経験を活かすような形で取り組んでいました。
一方でスクラムマスターには相談役になってもらい、チームを客観的に見てフィードバックを都度いただくような関係で進めていった形でした。

またこの期間中にスプリント1に向けてプロダクトバックログをリファインメントしました。
具体的には下記を行いました。

  • スプリント1で行う案件を定める
  • POとプロダクトバックログアイテムを起票していく
  • 直近1~2週間分のアイテムをリファインメントしReady状態にする(ポイントもつける)
  • 全体の見直し、優先度の確認など

Jiraの場合、エピックというタスクやストーリーをグルーピングしたものが作れるのでこのタイミングでエピックを一通り作成し、エピックに紐づくタスクを起票していきました。

3. スプリント1

スプリント0期間が終了したらいよいよ本番です。
とはいってもスプリント0と流れは変わらず、スプリント0の続きでスプリントプランニングからスタートしました。

スプリント1のスプリントプランニングではスプリント0でリファインメントしたプロダクトバックログアイテムが対象になります。
スプリントバックログを作る際にベロシティをいくつにするか(=どれくらいアイテムを積むか)は最初なので決め打ちで進めていました。

またスプリント0でスキップしていたプランニングポーカーを実施し、アイテムに対してポイントを振るようにして、今後のスプリントの流れを作っていきました。

実際にやってみて

スプリント2以降では、スプリントレビューにビジネス部門の方々をステークホルダーとして招待しました。
自分たちのスプリントの成果をデモすることでビジネス側に共有し、コミュニケーション量も増えたと感じています。

現在はスプリント13まで来ましたが、スクラムを導入してよかったなと感じています。
導入前に比べると、抱えていた課題はだいぶ解消できたように思います。
まだまだ課題はありますが、これからもカイゼンを繰り返してチームの練度を高めていきたいと思います。

おわりに

ここまで読んでいただき、ありがとうございました。
振り返ってみると、スプリント0やその前の準備に時間がかかったなという印象です。
新しいことを始めるにはそれだけ準備に時間がかかるということでもあるのかなと感じました。

導入を考えている方やスクラムに興味がある方に少しでも参考になったら嬉しいです。
ありがとうございました!


明日7日目は、新井さんです!お楽しみに♪


JMDCでは、ヘルスケア領域の課題解決に一緒に取り組んでいただける方を積極採用中です!
フロントエンド /バックエンド/ データベースエンジニア等、様々なポジションで募集をしています。
詳細は下記の募集一覧からご確認ください。
hrmos.co


まずはカジュアルにJMDCメンバーと話してみたい/経験が活かせそうなポジションの話を聞いてみたい等ございましたら、下記よりエントリーいただけますと幸いです。
hrmos.co

★最新記事のお知らせはぜひ X(Twitter)をご覧ください!
https://twitter.com/jmdc_tech