📖 読了目安 約8分
この記事の目次

アジャイル開発

アジャイル開発は、短いサイクルを繰り返しながら開発を進める手法です。Webサービスやスタートアップなど、変化の多い開発でよく使われています。

アジャイルとは

「アジャイル(Agile)」は「俊敏な」「素早い」という意味です。変化に素早く対応しながら開発を進めます。

┌─────────────────────────────────────┐
│  計画 → 開発 → テスト → レビュー    │← スプリント1(1〜4週間)
└─────────────────────────────────────┘
              ↓
┌─────────────────────────────────────┐
│  計画 → 開発 → テスト → レビュー    │← スプリント2
└─────────────────────────────────────┘
              ↓
          (繰り返し)

1〜4週間程度の「スプリント」を繰り返し、少しずつ機能を完成させていきます。


アジャイルでも要件定義・設計はある

よくある誤解:「アジャイルでは要件定義や設計をしない」

これは間違いです。アジャイルでも要件定義・設計はあります。やり方が違うだけです。

観点 ウォーターフォール アジャイル
要件定義 最初に全部決める 少しずつ決めていく
設計 詳細まで最初に決める 必要な分だけその都度決める
タイミング プロジェクト開始時にまとめて 各スプリントで繰り返し

アジャイルでの要件定義

アジャイルでは「プロダクトバックログ」という形で要件を管理します。

【プロダクトバックログ】
1. ユーザー登録機能 ← 優先度:高
2. 商品検索機能     ← 優先度:高
3. カート機能       ← 優先度:中
4. お気に入り機能   ← 優先度:低
5. レビュー機能     ← 優先度:低
...
  • 優先度の高いものから順に作る
  • 途中で優先度を変えたり、新しい要件を追加したりできる
  • 全部を最初に決める必要はない

アジャイルでの設計

アジャイルでは「今作るものに必要な設計」をその都度行います。

【スプリント1】
「ユーザー登録機能」を作る
  → ユーザー登録に必要な設計をする
  → 実装する
  → テストする

【スプリント2】
「商品検索機能」を作る
  → 商品検索に必要な設計をする
  → 必要なら前回の設計を見直す
  → 実装する
  → テストする
  • 大きな設計を最初にするのではなく、必要な分だけ設計する
  • 後から設計を見直す(リファクタリング)ことを前提としている

特徴

項目 内容
計画性 短期間の計画を繰り返し立てる
ドキュメント 最低限にして、動くソフトウェアを重視
変更への対応 変更を前提としている
品質管理 継続的にテスト・レビューを行う
進捗管理 動く機能の数で測る

代表的なアジャイル手法

スクラム(Scrum)

最も広く使われているアジャイル手法です。

役割

役割 責任
プロダクトオーナー 何を作るかを決める。優先順位を決める
スクラムマスター チームがうまく動けるようにサポートする
開発チーム 実際に作る人たち(3〜9人程度)

スプリントの流れ

【スプリント(1〜4週間)】

1. スプリントプランニング
   - 今回のスプリントで何を作るか決める

2. 開発作業
   - 毎日:デイリースクラム(15分の進捗確認)
   - 実装・テストを進める

3. スプリントレビュー
   - 作ったものをお客様やステークホルダーに見せる

4. レトロスペクティブ(振り返り)
   - チームの改善点を話し合う

イベント

イベント 内容 頻度
スプリントプランニング スプリントで何を作るか決める スプリント開始時
デイリースクラム 短い進捗確認(15分) 毎日
スプリントレビュー 成果物を確認してもらう スプリント終了時
レトロスペクティブ 振り返りと改善 スプリント終了時

カンバン(Kanban)

ボードを使ってタスクの流れを可視化する手法です。

| To Do    | In Progress | Review   | Done     |
|----------|-------------|----------|----------|
| タスクA   |             |          |          |
|          | タスクB     |          |          |
|          |             | タスクC   |          |
|          |             |          | タスクD   |
  • タスクを「カード」として管理
  • 左から右へ流れていく
  • 仕掛かり制限(WIP制限):同時に作業できる数を制限

スプリントのような固定サイクルはなく、継続的に流れていくのが特徴です。


メリット

  • 変化に強い:途中で「やっぱりこうしたい」に対応しやすい
  • 早く動くものが見える:スプリントごとに動くものができる
  • フィードバックが早い:こまめに確認できるので、認識ずれを早期発見
  • 優先度の高いものから作れる:重要な機能を先に完成させられる
  • リスクを早期に発見:問題があれば早い段階で分かる

デメリット

  • 全体像が見えにくい:最終的な完成形が曖昧になることも
  • 見積もりが難しい:「いつ完成するか」「いくらかかるか」が読みにくい
  • コミュニケーションコストが高い:頻繁な会議や調整が必要
  • メンバーのスキルに依存:自律的に動ける人が求められる
  • ドキュメントが残りにくい:後から参加した人が理解しにくい

よく使われる現場

種類 理由
Webサービス・アプリ 市場の反応を見ながら改善したい
スタートアップ 何が正解か分からない状態で、試行錯誤したい
自社サービス開発 自分たちでスピーディーに改善したい
新規事業 要件が不確定で、変化が多い
継続的に改善するプロダクト 終わりがなく、常に進化させる

1年目エンジニアの日常

アジャイルの現場では、以下のような仕事が多いです。

デイリースクラム(朝会)

毎日15分程度、チームで進捗確認をします。

  • 昨日やったこと
  • 今日やること
  • 困っていること

「困っていること」を正直に共有することが大切です。

スプリント内のタスク

プロダクトバックログから選ばれたタスクを担当します。

  • 機能の実装
  • バグの修正
  • テストコードの作成

1つのタスクを最後までやりきることが多いです。

レビューやふりかえり

  • スプリントレビュー:作ったものを見せる。フィードバックをもらう
  • レトロスペクティブ:「もっとこうしたい」を話し合う

1年目でも意見を求められることが多いです。


アジャイルで大切なこと

分からないことはすぐ聞く

アジャイルではコミュニケーションが命です。

  • 「たぶんこうだろう」で進めない
  • 詰まったら15分で相談
  • 聞くことは恥ずかしいことではない

自分から動く

ウォーターフォールより自律性が求められます。

  • タスクが終わったら次のタスクを取りに行く
  • 改善点があれば提案する
  • チームのために何ができるか考える

チームで助け合う

アジャイルではチーム全体で成果を出すことが重視されます。

  • 困っている人がいたら助ける
  • 自分だけ終わっていればOKではない
  • 知識を共有する

ウォーターフォールとの比較

観点 ウォーターフォール アジャイル
計画 最初に全体を決める 短期間ごとに決める
要件定義 最初にまとめて行う 少しずつ決めていく
設計 詳細まで最初に決める 必要な分だけその都度
変更 難しい(コストが大きい) 前提として受け入れる
ドキュメント 重視する 最小限にする
動くものができるまで プロジェクト終盤 各スプリント終了時
お客様との関わり 最初と最後が中心 継続的に関わる
チームの動き方 役割が明確に分かれる 全員で協力する
向いている案件 要件が明確、変化が少ない 要件が不確定、変化が多い

ハイブリッド型

実際の現場では、**両方の良いところを取り入れた「ハイブリッド型」**も多いです。

例1:全体はウォーターフォール、一部はアジャイル

要件定義 → 基本設計 → [アジャイル的に実装] → システムテスト → リリース

大枠の計画はウォーターフォールで決めつつ、実装フェーズは柔軟に進める。

例2:アジャイルだがドキュメントも作る

スプリントで開発しつつ、必要なドキュメント(設計書、テスト仕様書)も並行して作成。


まとめ

  • アジャイルは短いサイクルを繰り返しながら開発を進める手法
  • 要件定義・設計がなくなるわけではない(やり方が違うだけ)
  • 変化に強く、早くフィードバックを得られるのがメリット
  • スクラム、カンバンなどの手法がある
  • 1年目は「デイリースクラム参加」「タスク担当」「すぐ聞く」が大切
  • コミュニケーション自律性が求められる

ウォーターフォールについては ウォーターフォール開発 を参照してください。