アジャイル開発

アジャイル開発とは

アジャイル開発とは、短い開発サイクルを繰り返すことで、要件の変更に素早く対応できるようにした開発手法である。

アジャイルソフトウェア開発宣言とは

アジャイルソフトウェア開発宣言では、ソフトウェア開発の実践において、4つの価値とその背後にある12の原則を重視することが明示されている。

4つの価値

左記のことに価値があることを認めつつ、右記のことに価値を置く。

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

  • 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供する
  • 要求の変更はたとえ開発の後期であっても歓迎する
  • 動くソフトウェアを、2~3週間というできるだけ短い間隔でリリースする
  • ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働く
  • 意欲に満ちた人々でプロジェクトを構成し、環境と支援を与えて最後まで信頼する
  • 情報を伝えるもっとも効果的な方法はフェイス・トゥ・フェイスで話をすること
  • 動くソフトウェアを進捗の尺度とする
  • 持続可能な開発を促進する
  • 技術的卓越性と優れた設計に対する不断の注意により機敏さを高める
  • 本質はシンプルさ(ムダなく作れる量を最大限にすること)
  • 自己組織的なチームを構成し、最良のアーキテクチャ・要求・設計を生み出す
  • 定期的に振り返り、プロセスを調整する
  • アジャイル開発のプロセス

    アジャイル開発には、スクラム、カンバン、XP、FDDなど、多くの種類があるが、現在最も広く採用されているスクラムを中心として、プロジェクトの進め方の概要を示す。


  • リリースプランニング プロダクトバックログという優先順位付けされた開発予定の機能一覧を作成する。機能一覧はユーザーストーリーの形で記載されていることがも望ましい。スプリント完了時に随時見直し、スプリントを繰り返すたびに更新していく。
  • スプリントプランニング スプリントバックログという次のイテレーション期間で実装する機能一覧を作成する。プロダクトバックログですでに優先順位付けされた開発予定の機能一覧を作成しているため、基本的にプロダクトバックログの中から、上から順にとってくることになる。ただし、実装に時間がかかってイテレーションをまたぎそうな場合は、優先順位の低いものを選ぶこともある。毎回のイテレーションでどのくらいの機能を実装できるかは、その都度計測することで精度を高めていく。
  • スプリント 実際の開発期間で、イテレーション期間は2~3週間程度。チームメンバーはスプリントプランニングの計画通りにプロダクトをリリースできるようコミットする。
  • デイリースクラム 毎日15分程度で、今日やることと障害になっていることをチームメンバー間で共有する。
  • リリース スプリントの完了時点で、ユーザーが実際に完成したプロダクトに触れることができるよう、リリースする必要がある。
  • スプリントレビュー ステークホルダーを集め、実際にプロダクトを動かしてデモを実施する。安定して動くことをアピールし、プロダクト開発の方向性に認識のずれがないか確認する。機能の追加や変更などの要求があれば、プロダクトバックログを更新する。
  • スプリントレトロスペクティブ スプリントの振り返り。KPTを用いて実施されることが多い。振り返りの結果をもとにプロセスを調整、改善していく。
  • プロセスの調整

    真のゴールは「プロセスどおりに実行すること」ではなく「ユーザーが求めるソフトウェアを提供すること」である。現在のコンテキストに対してアプローチ方法が合致しているか注意深く観察し、状況に応じて変化し続ける必要がある。

    参考資料


    著者画像

    ゆうき

    2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.