始めに
先日、アジャイルコーチの方が主催するスクラムワークショップに参加しました。
これを機に、アジャイル開発周りやスクラムについてのまとめ・ワークショップを通じて学んだことをアウトプットしようと思いました。
「アジャイルって何?」「スクラムっておいしいの?」から、この記事を通じてアジャイルやスクラムについて少しでも知見が増えれば幸いです。
構成
章 | タイトル | 備考 |
---|---|---|
始めに | ||
1 | アジャイル開発とは | アジャイルについての説明、ワークショップで学んだことについて |
2 | 開発手法の歴史・環境の変化 | 開発手法のざっくりな流れとVUCAについて |
3 | ウォーターフォールとアジャイル | 双方の開発手法の特徴、メリ・デメ、適材適所について |
4 | VUCA環境下における開発の進め方 | 不確実性コーンと開発手法について |
5 | アジャイルとその周辺の歴史 | アジャイル周辺の歴史やアジャイル・Lean・DevOpsについて |
6 | アジャイル開発フレームワーク | XPとスクラムについて |
7 | スクラムワークショップの内容 | スクラムワークショップでやったこと |
8 | スクラムワークショップを通じて | スクラムワークショップを通じての感想 |
9 | 最後に | |
参考文献 |
アジャイル開発とは
アジャイル開発とは、システムやソフトウェアの開発手法の一つで、開発工程を機能単位で小さいサイクルで繰り返し、不確実性な状況に対応しながら開発を進めていく手法。
ワークショップでアジャイルコーチの方の講義を受けた際に印象的であったのが、「希望の喪失がアジャイルのゴール」と述べられていたところです。
上記はClean Agileでの一文で、いち早く問題を明確化し、チームの力を最大限生かすようにするための考え方がアジャイルであるのだと感じました。
ただ繰り返し開発を進めていくことだけが本質ではなく、コミュニケーションや協調を重視し、問題をいち早く明確化するために何をするべきかを考え行動することがアジャイルの本質なのだと学びました。
アジャイル界隈で使用されている言葉で「Don’t just do agile, Be Agile」があるように、アジャイルソフトウェア開発宣言でも述べられているような考え方を、どうやって体現していくのかが重要で、「アジャイルをやってます」ではなく、「自分の組織はアジャイルです!」と言えるようになることが本質であると思いました。
アジャイルソフトウェア開発宣言
こちらの記事でアジャイルソフトウェア開発宣言者について述べられていました。
十七人のアジャれる男 - Qiita
開発手法の歴史・環境の変化
ざっくりな歴史の流れ
1960~1970年代:メインフレームが誕生し、大規模開発が採用され始めウォーターフォールが誕生していきシステム開発が普及し始める。
1980~1990年代:ウォーターフォールが普及していくが、効果に疑問を持つものが出始める。そこでアジャイルのベースになるフレームワーク(スクラムやエクストリームプログラミング)が誕生していく。
2000年代:効果が認められていき、アメリカのスキーリゾートのロッジで十七人のアジャれる男たちがアジャイルについてまとめ始め、”アジャイルソフトウェア開発宣言”が公開される。
2010年代:VUCAな時代と言われ始めビジネス的なところでもアジャイルという言葉が使われ始める。
VUCAとは?
VUCAとは、先行きが不透明で、将来の予測が困難な状況を指す言葉らしいです。
このような環境下で、注目を集めているのがSAQの一つでもあるアジリティ能力であり、アジャイル開発がアジリティを実現させるための手法だど思います。
VUCAとは?
ウォーターフォールとアジャイル
よくウォーターフォールとアジャイルが対立されるイメージがあるために、簡単に各開発手法の特徴・メリデメ・適材適所についてまとめてみました。
ウォーターフォール
特徴
- 要件定義フェーズがしっかりしていないと次に進めない
- 洗い出しが終わったら基本設計に取り掛かる
- 工程ごとに担当者が変更する
- うまくいくかは初期段階である要件定義にかかってくる
上記の特徴から、開発手順を確実に完了させて次に進めていく開発手法であることがイメージできる。
メリット
- 進捗管理がしやすい
- プロジェクト全体の計画が立てやすい
- 見積もりがやりやすい
デメリット
- バッファを取りがちになり実装、単体テスト、結合テスト、受け入れテストに皺寄せがくる。
- 不確実な環境下で、その工程が確実に正しいかどうかわからない状態で進める
アジャイル
特徴
- ビジネスは変化するものという前提で開発を進める
- 工程ごとに別のチームに引き継ぐことはない
- スプリントという開発単位で短期間で反復して繰り返し開発・リリースをする
- 機能やサービスでプロジェクトを分割し、小さい単位で開発を繰り返す
- 複数のプラクティスを組み合わせて使うのが一般的
上記の特徴から、不確実な環境下で開発をするという前提のもと、小さい単位で開発を短期間で反復することがイメージできる。
メリット
- 軌道修正しながら結果を見出せていく
- 不確実な環境下で柔軟に対応ができる
- 迅速なフィードバック・実験・デプロイ
デメリット
- 本当のアジャイル開発手法をしっかりと理解せず、なんちゃってアジャイルになってしまう
- 各チームメンバーの自立・責務がしっかりしていないと取り入れるのが難しい
どちらの開発手法が良いとか悪いとかではなく、その時の状況にあった適材適所で使い分ける必要がある。アジャイルはドキュメントを作り、計画性もあり、従来の価値があることを認め、アジャイルソフトウェア開発宣言の右記(よりもの右側)のことにより価値をおいているとも述べられている。
ウォーターフォールが適する状況は、頻繁と単純の状況下。
アジャイルが適する状況は、複雑、混沌の状況下。
この図からも分かるとおり、双方の開発手法は対立の関係というより合う領域が違うだけであることが分かる。
それぞれの状況を説明されている記事がありましたので、こちらを参考にさせていただきました。
クネビンフレームワーク Cynefin Framework
ウォーターフォールとアジャイルの違いを比較しながら解説!使い分け比較表
VUCA環境下における開発の進め方
先ほどVUCAについて述べさせていただきましたが、現代において経済が発展し顧客のニーズが変化する環境下で、どのような開発手法で進めていくか考える必要があると思います。
そこで、不確実性コーンを参考に見積もりについてまとめてみました。
縦軸がプロジェクトの規模(スコープ)、横軸がマイルストーンを表している。
図でも分かるとおり、初期段階では見積もりに対してのばらつきの幅が大きいのが特徴で、時間の経過とともに各フェーズで意思決定がされていき、ばらつきが小さくなることが分かる。
そのため、完了時期よりも時間的に離れている設計では抽象的設計、完了時期が近い設計では詳細設計を採用することが望ましいかもしれない。
つまり、見積もりは近い時期では具体的に、遠い時期ではより抽象的に行うのが良いことが分かる。
ウォーターフォール開発の特徴だと、将来を予測し綿密な計画を立て、開発を進めるため不確実性に柔軟に対応することが難しい。
アジャイルでは軌道修正を行いながら、結果に早く辿り着ける見方ができる。
アジャイルとその周辺の歴史
出典:Agile and Lean from altitude 12000 feets
Agileとその周辺の歴史から、スクラムはThe New New Product Development Game(新規開発の新しい考え方)から派生していることが分かる。
以下の記事を参考
Agile and Lean from altitude 12000 feets
ラグビーと駅伝に例えられているのがわかりやすい。アジャイルが日本企業のホンダやキャノンと関係性があることも分かる。
typeAでは工程が変わるごとに担当者を変更するウォーターフォール的考え方で、typeCは最初から最後まで担当者が関わっていくアジャイル的な考え。
The New New Product Development Game
Lean
参考記事でLeanについても記載されているため、簡単にLean開発の特徴を記載。
- トヨタ生産方式の考え方から派生している
- 無駄を削ぎ落すスクラップアンドビルド的考え方
- 仮説を立ててMVPをして壊し積み上げることはない
- 顧客開発をコンセプトにしている
アジャイルとLeanの関係性
どちらも不確実性を背景にした手法であるが、Leanは「顧客開発」を目的にした考え方で、アジャイルは製品開発の開発工程の開発・設計・要求を繰り返し、製品の「進化」を重視。
リーンスタートアップでは、サイクルを小さく早く回すことが挙げられ、目的の早期達成、リスク回避などの双方の共通点から、システム開発ではアジャイル手法を採用することが多い。
リーンスタートアップとアジャイルの違いは?分かりやすく解説! | ストックマーク株式会社
アジャイルとDevOpsの関係性
DevOpsとは、「開発」と「運用」を組み合わせた造語であり、開発チームと運営チームが別で担当していたことを連携し取り組むこと。開発者が運営目線で開発できるメリットなどがある。
アジャイル開発を実現する際に、DevOpsの考え方ややり方が必要になり関連性が強い。
上記の関係性から、ざっくりと
Lean(企画・仮説検証)→Agile(プロダクト開発)→Devops(リリース・運用)
という流れが分かる。
アジャイルとカンバン
カンバンは、アジャイルで使用されるフレームワーク。カンバンボードを使用することで作業の状況を視覚化でき、プロジェクトを管理できる。
ウォーターフォール、アジャイル、スクラム、かんばんの違いを解説 [2022] • Asana
カンバン - 概要 | Atlassian
アジャイル開発フレームワーク
アジャイルを体現するためにフレームワークが存在し、スクラムやXP(エクストリームプログラミング)がそれに当たる。
XP
開発者目線の開発手法。XPプラクティスの「サークルオブライフ」の構造からも開発者目線であることが読み取れる。
XPについて下記記事を参考にしました
すべてがXPになる ─ エクストリームプログラミングで見える開発風景(セミナーレポート) - Agile Journey
エクストリームプログラミング (XP) とは [2022]
スクラム
スクラムを支える考え方
スクラムを支える考え方は経験主義とLEAN思考が根底にある
スクラムの3本柱
「透明性」・「設計」・「適応」という3本柱を実現できるようにスクラムを設計
スクラムの5つの価値基準
「確約」「勇気」「尊敬」「公開」「集中」が5つの価値基準。
下記の資料がわかりやすかったので参考にしました。
スクラム | 用語解説 | 野村総合研究所(NRI)
スクラムの3Roles(3つの役割)
スクラムでは、以下3つの役割が存在する。
- Product Owner:ROIを最大化する役割を担う。どんな機能を入れれば投資対効果が高いかを考えるなど。プロダクトに対してどれだけ熱意を持って伝えられるかが重要。
- Developer:Sprint内における生産性の最大化の役割を担う。属人化を生み出さないために全員が幅広くカバーできるジェネラリストが活躍する。
- Scrum Master:組織の成功確率を最大化する役割を担う。チームを見守り、困っている時だけアドバイスをする。
上記のように各役割が分かれているが、プロダクトマネジメントは3 Roles全員がやる。3 Roles間で壁を作り、言われたものを作るだけではよくない。なぜそのサービスを作るのか作るサービスのことを考え改善案を少しづつ実行し、より良いサービスにすることが求められる。
スクラムの流れ
Product Backlog
プロダクトに必要とされている事柄を一覧化したもの。POがプロダクトバックログの並び順に最終的な責任を持つ。開発者がプロダクトバックログに触れるのは構わないが、POとのディスカッションを通じて優先順位を決めていく。
スクラムチーム外のメンバーが勝手にバックログを追加していくのはアンチパターンであることが多い。
Sprint Planning
スプリント開始時に実施し、目指すスプリントゴールはなにか、スプリントゴール達成に向けて何に取り組むか、どう実現するかの計画をチームで行い、その結果からSprint Backlog(Product Backlogの一部)が作成される。
Daily Scrum
各メンバーのスプリントゴールに対する状況共有を行う。必要に応じて作業や作業計画を調整。
Increment
具体的な成果物
Sprint Review
プロダクトのレビューを行う。成果物の評価やフィードバックを行う。ステイクホルダー向け。
Sprint RetroSpective
スプリントの振り返りを行い、改善を考える。プロセスについての振り返りがメイン。
これらのスクラムイベントを繰り返し行い開発していく手法がスクラム開発である。スプリントごとにリリース可能な状態にしておき、いつでもリリース可能な状態にすることが望ましい。
スクラムワークショップの内容
今回ワークショップで下記2点を行いました。
- 紙飛行機作成
- レゴを用いて都市開発
紙飛行機作成
3~4人で1チームを構成し事前にルールが設定され、制限時間内でどれだけ指定距離まで作成した紙飛行機を飛ばせるかを3スプリントほど回し、競い合いました。
作業時間が始まる前に、ルールも考慮してどのように作業を進めていくか、何機飛ばせるようにするかなどをチームで話し合い(スプリントプランニング)、作業を実行し、参加者に結果・うまくいった・いかなかったことを報告し(スプリントレビュー)、チーム内で結果の振り返りや改善点を洗い出し、次のスプリントに向けて話し合いました。(スプリントレトロスペクティブ)
例えば、役割分担を明確化したり、紙飛行機が飛ぶ最適な降り方を開発したり、その人に合う役割を見つけるなど行いました。
レゴを用いた都市開発
お題は、都市開発をスクラム開発で行うでした。
LESS(大規模で行うスクラムの手法)という開発手法を用いたスクラムワークショップ。
初めに以下の役割担当者を参加者から決めました。
- プロダクトオーナー
- アナリスト
- 開発者
プロダクトオーナー
プロダクトバックログに都市開発で必要な事柄をアナリストと相談し、決定できる権利や開発者がスプリントごとに作成した成果物に対してフィードバックや受け入れるかどうか判断できる権利を有する。
アナリスト
「都市開発」というワードに対して、唯一検索することができる。またプロダクトバックログの優先順位の意思決定や各施設のレイアウトに関して、プロダクトオーナーや開発者にアドバイスができる。開発者の質問に対する回答権を有する。
開発者
プロダクトバックログから自分たちのチームが作業するアイテムを選択し、選択したアイテムをスプリント内で終わらす責任を有する。
役割が決まれば2チームに分かれ、以下の手順で開発を進めていきました。
1.プロダクトバックログ作り、チームごとの担当エリア確認(初回のみ)
2.スプリントプランニング(全員で集まり話し合う)Part1
LESS手法を用いて、Partごとにスプリントプランニングを分ける。
Part1ではオーナーがやりたいことを伝えて、そこから各チームがアイテムを選択する。
3.スプリントプランニング(チームで話し合う)Part2
Part2ではPart1で出た結果から、各チームでどのように開発を進めていくのか話し合う。チームごとでどうすれば達成するか考え、スプリントバックログを作る。
4.実装(各チームで話し合う)
都市開発
5.スプリントレビュー(全員で話し合う)
各チームの成果物を全体に向けて発表する。
6.スプリントレトロスペクティブ(各チームで話し合う)
開発過程での反省点、良かったことなどをチームで話し合い改善していく。
7.オーバーオールレトロスペクティブ(全員で話し合う)
各チームがスプリントレトロスペクティブで話した内容を全体で共有し、全体の改善点を考え次のスプリントに活かしていく。
スクラムワークショップを通じて
ワークショップを通じて思ったことを4点ほど上げさせてもらいます。
- スプリントを回すことで改善されている
- コミュニケーションの大切さ
- 俯瞰し、自分の立ち位置を考える大切さ
- 自分の改善点などを振り返りできる
スプリントを回すごとに改善されている
スプリントを回すことで改善されていることを実感しました。初めのスプリントと最後のスプリントを比較するとタスクへの取り組みがスムーズに行えただけではなく、やり方を変えてよりスピーディに取り組めていることを実感しました。いかに問題を可視化し、課題点や要望をチーム間で共有し実行に移すことが大事なのかをスプリントの回数を増やすことで分かりました。
コミュニケーションの大切さ
とにかくコミュニケーションをしっかりとやりとりしないと置いてかれる感覚がありました。時間を意識して改善・アクションを行うため、密なコミュニケーションを行っていないとチームの状況であったり、何をしなくてはいけないのかが曖昧でチームに何かを提案をするといった貢献ができないと感じました。
俯瞰し、自分の立ち位置を考える大切さ
プロジェクトを進める中で、チームの現状やメンバーの行動を俯瞰し、自分がどうチームに貢献できるかを考えることが大切だと思いました。その意識を持つことで、新しいやり方をチームに提案し、進行の手助けになりました。
自分の改善点を振り返ることができる
ワークショップ終了後、振り返りの時間がありました。そこで自分自身の学びや課題点であったり、楽しかったこと、やり遂げたことを参加者と共有しました。周りの共有も勉強になるし、自分の課題感を発見し次に活かせるところもスクラムの魅力の1つだと実感しました。
最後に
今回のワークショップに参加して良かったと思います。
アジャイルという言葉をよく聞いていたものの、名前だけ知っているという状態からワークショップを通じてスクラムなどのアジャイルフレームワークを体感できたのは良い経験だと思いました。またこの機に記事を書くという形で振り返ることができアジャイル周辺の知識が深まり良かったと思います。
ワークショップを開催してくださったアジャイルコーチ、会場を貸していただいた方、参加者の皆様ありがとうございました。
最後まで読んでいただきありがとうございました。少しでも知見が増えれば幸いです。
参考文献
アジャイルを行うことが目的とならないために必要なこと|リコー みんなのデザイン思考とアジャイル
アジャイル開発とは何か?概要や主な開発手法を知りシステム開発を成功に導く! – プロエンジニア
アジャイルソフトウェア開発宣言
十七人のアジャれる男 - Qiita
VUCAとは?意味やVUCA時代を生き抜くためのスキルと事例 - 株式会社モンスターラボ
今の時代にこそ必要な「ビジネスアジリティ」とは
クネビンフレームワーク Cynefin Framework
ウォーターフォールとアジャイルの違いを比較しながら解説!使い分け比較表
リーンスタートアップとアジャイルの違いは?分かりやすく解説! | ストックマーク株式会社
DevOpsとは? アジャイル開発との違いやプロセス、導入方法などを解説!|東京のWEB制作会社・ホームページ制作会社|株式会社GIG
ウォーターフォール、アジャイル、スクラム、かんばんの違いを解説 [2022] • Asana
カンバン - 概要 | Atlassian
スクラム | 用語解説 | 野村総合研究所(NRI)
スクラムとは?意味・定義やアジャイルとの関係性、開発の流れを解説 - 株式会社モンスターラボ
【簡単解説】スクラム開発で実施する5つのイベントの概要と目的
スクラム開発ってシンプルだよね、と思っていたら5年間で8つのアンチパターンを踏み抜いていた話 - TOWN株式会社
デイリースクラムとは|その目的や具体的なやり方、実施のポイントをご紹介 - SHIFT ASIA -ソフトウェア品質保証のプロフェッショナル-
スクラム開発における、5つの「セレモニー」について理解しよう | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
スプリントバックログとは?作成方法と実例をご紹介 [2022] • Asana
スプリントプランニング | Agile Studio
This specialized to-do list keeps developers focused [2022]
スクラムフレームワークとは?規定や5つの価値について解説!
スクラムまとめ
アジャイル開発とは? 特徴とメリット・デメリット、スクラムまで徹底解説 - 株式会社モンスターラボ
エクストリームプログラミング(XP)をざっくり理解する
すべてがXPになる ─ エクストリームプログラミングで見える開発風景(セミナーレポート) - Agile Journey
リーンとは?【アジャイル開発との違いなど】|グローバル採用ナビ
プロジェクトの本質とはなにか
ウォーターフォールモデルとは?メリット、アジャイルとの違いを解説|ITトレンド
スプリントとは?アジャイル開発やスクラムとの関係性、メリットを解説
The New New Product Development Game
https://files.speakerdeck.com/presentations/bd4ba500ff27013018053221cf0d7891/AgileFrom12000ft.pdf
こちらの記事も参考にしました
すべてがXPになる ─ エクストリームプログラミングで見える開発風景(セミナーレポート) - Agile Journey
エクストリームプログラミング (XP) とは [2022]