📖

アジャイル開発の特徴や手法をまとめてみた

Kazuya Ishibashi2022/12/22に公開

Aidemy Advent Calendar 2022の22日目の参加記事です。

はじめに

最近「アジャイル」という言葉を耳にする一方で、「アジャイルって何?」という声もよく耳にしています。そこで、今回はアジャイル開発とは何か、からウォータフォール開発との違い、アジャイル開発の手法についてまとめてみました。

対象の読者

本記事は以下のような方を対象としています。

  • アジャイル開発の理解を0→1にしたい方
  • アジャイル開発のイメージを知りたい方
  • アジャイル開発のいろんな手法を知りたい方
  • ウォーターフォール開発との違いを知りたい方

そもそもアジャイル開発ってなに?

アジャイル開発とはどのような開発手法なのか、定義やアジャイル開発の流れ、どのようなプロジェクトでアジャイル開発を用いると良いのか。という観点をまとめてみました。

アジャイル開発とは

アジャイルとは、アジャイルソフトウェア開発宣言で提唱されたもので、顧客への迅速な価値提供を重視したソフトウェア開発の手法の1つです。
「計画」→「設計」→「実装」→「検証」の開発工程を短く反復することで、短期間でのリリースが実現可能になりました。その結果、顧客の要望を取り入れやすくなり、機能の追加や改修をしやすい開発手法といえます。

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

アジャイル開発を視覚的に理解してみる

アジャイル開発は下図のようなイメージになります。
「計画」→「設計」→「実装」→「検証」の工程を完了するとリリースを行い、
次の機能開発に向けて「計画」→「設計」→「実装」→「検証」を繰り返し行います。

アジャイル開発の流れ
アジャイル開発の流れのイメージ図

アジャイル開発が向いているプロジェクトの特徴

アジャイル開発が向いているプロジェクトの特徴を列挙してみました。

  • プロジェクトの期間中に要求事項が変更する可能性が高いプロジェクト
  • 開発するプロダクトが市場に需要があるのか価値を検証したいプロジェクト
  • プロダクトのリリースが継続的かつ短い期間でリリースを繰り返すプロジェクト
  • 発注側と受注側がフラットな関係かつプロダクトを開発する1つのチームとして動けるプロジェクト(発注側が丸投げにしないことが条件)

ウォーターフォール開発とアジャイル開発の違い

ウォーターフォール開発とアジャイル開発の違いを見ていく前にウォーターフォール開発とは何か、を改めて確認した上で、それぞれの開発手法の違いを記載していきます。

ウォーターフォール開発とは

ウォーターフォール開発とは、「要件定義」→「基本 / 詳細設計」→「実装」→「単体 / 結合 / 総合テスト」→「リリース」といったシステム開発の各工程を、上流工程から下流工程の順番でプロジェクトを進めていく開発手法です。リリースまでの各開発工程を完了次第、次の工程に進むため計画的にプロジェクトを管理しやすい開発手法といえます。

ウォーターフォールを視覚的に理解してみる

ウォーターフォール開発は下図のようなイメージになります。
プロジェクト内で定義された工程(下図では、要件定義〜リリース)を1工程ずつ確実に進めていきます。発注側もしくは、プロジェクトマネージャーなどの承認を得ることで次の工程に進むことができます。
※承認フローはプロジェクトによるため、初期段階で決めておく必要があります。

ウォーターフォール開発の流れ
ウォーターフォール開発の流れ

ウォーターフォール開発が向いているプロジェクトの特徴

ウォーターフォール開発が向いているプロジェクトの特徴を列挙してみました。

  • 初期段階でシステムの要件が確定済みで、変更が発生しない(する可能性が低い)プロジェクト
  • 計画通りに進めなければならないプロジェクト
  • 医療や銀行など高品質が求められるシステム開発のプロジェクト

アジャイル開発とウォーターフォール開発の相違点

それでは、アジャイル開発とウォーターフォール開発の違いをメリット・デメリットの観点で見ていきます。


アジャイル開発とウォーターフォール開発のメリット・デメリット表

アジャイル開発の手法について

アジャイルは顧客への迅速な価値提供を重視したソフトウェア開発手法の総称で、様々な種類が存在します。今回は、代表的な手法の「スクラム」、「エクストリーム・プログラミング」、「ユーザー機能駆動開発」の3つを紹介していきます。

  1. スクラム
    スクラムとは、ソフトウェア開発のマネジメント面に焦点を当て、チームが効率的かつ自律的に開発を進めるためのフレームワークのことです。スクラムの理論の基になっているのは、「経験主義」と「リーン思考」の2つです。
    経験主義とは、知識は経験から生まれ、意思決定は観察に基づくこと、リーン思考とは、無駄を省くことで本質の問題に集中することを指します。
    これらの2つの考え方を支えるものとして、「スクラムの3本柱」と「スクラムの5つの価値基準」が定義されています。


スクラムの3本柱とその内容


スクラムの5つの価値基準


  1. エクストリーム・プログラミング
    エクストリーム・プログラミング(Extreme Programming:XP)とは、ソフトウェアの品質を向上させ、変化する顧客の要求への対応力を高めることを目標としたフレームワークのことです。XPでは、仕様やスケジュールの変更が発生することを前提とした開発手法であり、「5つの価値基準」と「19のプラクティス」の2つを基準として変更対応を行います。


XPの5つの価値基準


XPの19のプラクティス


  1. ユーザー機能駆動開発
    ユーザー機能駆動開発(Feature Driven Development:FDD)とは、ユーザー目線で価値のある機能を中心に開発を進める、アジャイル開発手法の1つです。顧客にとって価値のある小さな単位の機能(feature)から開発を行い、稼働するシステムを短い期間で実装し、顧客に提供します。FDDでは、5つの基本活動とベストプラクティスを基に活動します。


FDDの5つの基本活動


FDDのベストプラクティス

おわりに

以上、いかがだったでしょうか。
アジャイルについて少しでも理解できましたでしょうか。

世の中には ”なんちゃってアジャイル”という表現もありますが、個人的には「顧客に迅速な価値提供ができている開発」を満たしているのであれば、アジャイル開発を活用していると言っても良いのではないかと思っています。
ぜひ、失敗を恐れず”まずやってみる!の精神”で顧客と一緒に迅速な価値提供のサイクルを回してみてください。

アジャイルの開発手法をまとめたものの、実際にどのような開発サイクルになるのか。という点については、また別の記事で執筆したいと思います。

この記事を読んでいただいて、少しでもアジャイル開発の理解が進んだのであれば大変嬉しいです。

Aidemy Tech Blog

株式会社アイデミーの技術ブログです。

Discussion

ログインするとコメントできます