なにこれ
面接を受けた際に、スクラム・アジャイル開発とは何ですか?と質問されて、
自分でも言語化できてないことに気づいたので、
整理する意味でそれぞれの単語の意味や役割についてまとめました。
アジャイル開発とは?
ウォーターフォール開発のように一度にまとめてではなく、
少しずつ確認をはさみながら開発を進めていくこと。
クライアントに「こんな感じだけどオッケー?」って聞きながら仕事する感じ。
利用者や関係者(クライアント)の反応やレビューを得ながら、計画を調整しつつ進めていく。
細かく作って細かく確認するので、後述するウォーターフォール開発と比較して仕様変更に鬼強い。まじやばい(語彙力)
アジャイル開発におけるキーワード
- スプリント
- 一つの開発周期のこと。
- 概ね1週間1スプリントにすることが多い。
- スプリント計画ミーティング
- 各スプリントが始まる日に実施する。
- そのスプリントでやることや、到達すべき点について共有する!
- スプリントレビュー
- 各スプリントの終了日に実施する。
- プロダクトオーナーにスプリントでの成果をレビューしてもらう場。
- スプリントレトロスペクティブ
- スプリントレビュー終了後に実施する。
- スプリントでの反省点や維持すべき施策・改善点などについてチームで共有する場。
ウォーターフォール開発とは?
最初に決めた要件を、ある期限までに完了すること。滝みたいに流れ落ちるように開発する。
契約➡️開発➡️納品というシンプルなフローで進めるよ。
厳密な要件定義と納期に合わせた進捗管理ができればオッケー牧場(古い)
でも、要件定義が上手くいってなかったり、仕様変更が起きると対応が鬼ムズい(語彙力)
アジャイル・ウォーターフォールのメリット・デメリット
アジャイル | ウォーターフォール | |
---|---|---|
メリット | 仕様変更に柔軟に対応できる。 | 開発計画が滝みたいにシンプルで進捗管理しやすい。 |
デメリット | 進捗が把握しずらい。今どこやってんの?みたいな | 仕様変更に対応しにくい。仕様変更やめてくれ〜って感じ。 |
スクラムとは?
アジャイル開発手法の中の1つ。いっちゃん有名らしい。
アジャイル開発のデメリットを回避するために、
チーム内で円滑なコミュニケーションを取るために使う。
リーダー・マネージャー主体じゃなくてメンバー全員が主体性を持って、
プロダクト完成に向けた責任を持つ(全員がリーダーや!みたいな)
スクラムの大まかな進め方
-
1.アプリケーションの要件定義
- ヒアリングして、どんなアプリを作るか決める。
- アジャイルでも要件定義はめちゃんこ大事。超大事!
-
2.開発の意図を、開発する人々が完全に把握する!
- 何を達成するためにそのプロダクトを作るか把握。
- 目的と矛盾する機能や優先順位付けは排除することが求められるから、
- 開発メンバー全員がこれを理解することが大事らしい。
-
3.実証すべき作業を洗い出し〜
- 完成までに行う作業を洗い出してリスト化。見える化しましょう。
-
4.作業量を見積もる
- タイトル通り。僕たちは全員でやりました。
-
5.スプリントごとに実装する!
- スプリントの期間を設定して、スプリント開始時にスプリント計画ミーティングする
-
6.スプリントの成果を発表(結果発表だドン)
- スプリント計画で決めた実装が計画通りに終えられたかを確認。
-
7.振り返りをする
- 次の期間でより早く進めるための対策を立てる。
スクラムにおける役割分担
- プロダクトオーナー:プロダクトバックログの管理責任者
- プロダクトの結果責任を負う。俺に任せとけ〜
- スクラムは個人の主体性を意識した手法だけど、最終決定を下すのはプロダクトオーナーです。
- スクラムマスター:スクラムの調整役
- スクラムが上手くいくようにサポートする。縁の下の力持ち。
- 人間関係が悪くなる要素は削除して推進役になる。
- 決してリーダーではなく(ここ大事)、スクラムを円滑に回すための世話役ポジション
- 開発チームメンバー:実際に開発に携わる
- 計画に沿ってプロダクトを作るマン。
- 日々開発計画について話し合って、必要なら計画の変更を提案する。
- 上下関係はなく、チーム内で仕事の進め方は、メンバー同士で決める。フラットな社風ですね。
スクラムを用いたアジャイル開発の実際のフロー
- 1.要件とゴールの確認
- 「何を作るのか」と「作ることで達成したいことは何か」を共有
- 2.作業を洗い出してToDoリストを作成
- プロダクトの完成に必要な工程(要件定義〜運用まで)を全て洗い出し、一つのリストにまとめる。
- これを
プロダクトバックログ
と言う。超大事。開発全体のToDoリスト - プロダクトバックログから作業を分担して、着手する。
- 3.スプリント計画ミーティングをする
- このスプリントで開発する内容を、プロダクトバックログの中から決める。
- タスクを決めたら具体的なタスクに落とし込んで(細分化)、スプリントバックログと言うリストにまとめる。そのスプリントのToDoリストってこと。
- 各タスクの担当者は予め決めない。実際に作業する時に開発メンバーがスプリントバックログの中から選択するように!
タスク細分化の例
#プロダクトバックログ
- Pictweetのツイート機能を作成する
↓
#スプリントバックログ
- ツイート保存用のテーブルを作成する
- 投稿の一覧画面の見た目を作成する
- ツイートが保存されるまでの処理を書く..など
- 4.デイリースクラムをする
- 毎日15分間のミーティング(かっこよく言うとMTG)する。
- 内容は、「昨日やったこと」「今日やること」「問題点」を全員で話し合う
- 5.スプリントレビューをする
- スプリント計画ミーティングで決めた、リリースできるプロダクトになってるかレビューを受ける。
- 6.スプリント振り返り(スプリントレトロスペクティブ)
- 「このスプリントで良かった点」「改善したい点」「次回のスプリントで挑戦すること」の3項目(KPI)について話し合う。