アジャイル開発のメモ

アジャイル開発のメモ

2025-05-03

この記事では筆者がアジャイルについて学んでいく上で、得た知識をメモとして残していく。 私自身はアジャイル開発に精通しているわけではなく、全くの初心者である。 そのため本記事の内容には誤りがある可能性があるとした上でこの記事は読んでいただきたい。

目次

  • アジャイルの基礎中の基礎
  • スクラム
    • スクラム開発の流れ
    • スクラムの役割
    • スクラムのサイクル
    • スクラムの成果物
    • スクラムと相性の良い開発手法
      • ユーザーストーリーマッピング

アジャイルの基礎中の基礎

アジャイル開発はアジャイルソフトウェア開発宣言が経典?として存在している。

アジャイルソフトウェア開発宣言の中では以下のことが重要視されている

  • プロセスやツールよりも個人と対話
  • 包括的なドキュメントよりも動くソフトウェア
  • 契約交渉よりも顧客との協調
  • 計画に従うことよりも変化への対応

スクラム

アジャイル開発の中でも、いくつか種類があるが、その中でもとりわけ有名なのがスクラム開発であり、 今回はスクラムについて学んでいくこととする。

スクラム開発の流れ

  1. プロダクトバックログ
  • 欲しい機能をリストアップし、優先順位をつけたもの
  1. スプリントプランニング
  • スプリントで作るものを決定する
  1. スプリント
  • 開発チームが実際に機能開発等を行う
  • スプリント期間はプロジェクトで一定であるべきで、2週間と決めたならずっと2週間で行う
    • 2週間で実行できないプロダクトバックログ・スプリントバックログは大きすぎるので、昨日の細分化等を行う必要がある
  1. デイリースクラム
  • 毎日15分程度で「昨日何した?」「今日何する?」「問題は?」と言ったことを確認する
  1. スプリントレビュー
  • 完成した機能をお客さんやステークホルダーに見せてフィードバックをもらう
  1. スプリントレトロスペクティブ
  • スプリントの振り返りをして、良かったところ悪かったところを振り返る

スクラムの役割

  • プロダクトオーナー(PO)
    • 発注者が担当する
  • スクラムマスター(SM)
    • SIer側
  • 開発チーム(DT)
    • SIer側

スクラムのサイクル

  1. スプリントプランニング
  • スプリントで何を作るか決める会議
  • PO + SM + DT
  • スプリント期間内で完成させる機能(スプリントバックログ)を決める
  • プロダクトバックログの中で優先順位が高いものをスプリントバックログとする
  1. デイリースクラム
  • 毎日の進捗確認
  • DT
  • 昨日何をしたか、今日何をするか、問題点があれば共有
  • 15分程度
  1. スプリントレビュー
  • プロダクトをステークホルダーに見せる
  • 全員が参加
  • デモ等を実施する
  • 1スプリントで1時間から2時間程度
  1. スプリントレトロスペクティブ
  • スプリントの良かったことや反省点を話し合う
  • 全員が参加
  • 次のスプリントに向けた改善点を話し合う
  • スプリントごとに1時間から2時間程度

スクラムの成果物

| 成果物 | 内容 | 管理者 | |---|---|---| | 📚プロダクトバックログ | 欲しい機能や要望を全部リスト化したもの | PO | | 📋スプリントバックログ | 次のスプリントで作るもののリスト | 開発チーム | | 📈インクリメント(成果物) | 完成した動くプロダクトそのもの! | 開発チーム | | 設計書 | 画面設計・DB設計・API設計などを作る | 開発チーム | | 運用手順書 | 監視・障害対応・バックアップなど運用担当者が迷わず動ける程度 | 開発チーム |

スクラムと相性の良い開発手法

  • テスト駆動開発
  • ドメイン駆動設計
  • CI/CD
  • ペアプロ・モブプロ
  • ユーザーストーリーマッピング
    • ユーザーがやりたいことを、実際のユーザー行動に沿ってマッピングする
    • PBL作成に役立つ
  • 振る舞い駆動開発
  • インフラ自動化

ユーザーストーリーマッピング

ユーザーがやりたいこと(=ユーザーストーリー)を、ユーザーの行動に沿って整理して見える化する。

参加者はスクラムチーム全員 + PO。

ユーザーストーリーを作成すると、それがプロダクトバックログになっていくイメージ。

  1. ユーザーのおおまかな流れ(ジャーニー)を決める
  • ユーザーがサービスやシステムを使ってやりたい大きな行動を順番に並べる
  • ECサイトなら
    1. 商品を探す
    2. 商品を見る
    3. カートに入れる
    4. 注文する
    5. 支払いする
    6. 配送状況を確認する
    7. 受け取る
  1. ユーザーストーリーを洗い出す
  • 各ジャーニーの下に、その行動でユーザーがやりたい細かいことを出していく
  • 商品を見るなら
    • 写真をじっくりみたい
    • レビューを確認したい
    • 在庫数をチェックしたい
  1. ストーリーに優先順位をつける
商品を見る
├── 商品の写真をじっくり見たい(優先度: 高🔥)
├── レビューを確認したい(優先度: 中🌟)
└── 在庫数をチェックしたい(優先度: 低🌱)
  1. リリースごとに区切って計画を立てる商品を見る
商品を見る
├── 商品の写真をじっくり見たい(リリース1✨)
─────────── リリースライン 🎯 ──────────
├── レビューを確認したい(リリース2🎀)
└── 在庫数をチェックしたい(リリース3🌱)