アジャイル開発とは?メリット・デメリットやウォーターフォール開発との違いを紹介

コラムCOLUMN

アジャイル開発とは?メリット・デメリットやウォーターフォール開発との違いを紹介

2021/07/29

システム開発の現場で働いていると、アジャイル開発という言葉を聞いたことがあるかもしれません。

アジャイル開発とは、システムの計画、設計から開発、テストまでを短い期間で区切って繰り返し行うシステム開発の手法です。 アジャイル開発はウォーターフォール開発とよく対比されます。

ここでは、アジャイル開発の概要やウォーターフォール開発との違いについて解説します。 アジャイル開発を行う際は、メリット・デメリットをよく理解して選ぶことが大切です。

アジャイル開発とは?

アジャイル(Agile)とは、日本語で「素早い」「活発な」という意味があります

アジャイル開発とはシステム開発における開発手法の一つで、機能単位の小さなサイクルで計画、設計から開発、テストまでの工程を繰り返し行う開発手法のことを指します。

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

アジャイル開発とよく比較される開発手法として、ウォーターフォール開発があります。

ウォーターフォール開発のウォーターフォールとは滝を意味します。要求定義、基本設計、詳細設計、製造、テスト、運用といった工程を1つずつ終わらせていく開発手法で、長期にわたりシステム開発手法の主流でした。

ウォーターフォール開発においては、前の工程を終わらせてから次の工程に進むという計画性を重要視します

基本的には要求定義の段階でシステムの仕様を決定しますが、開発の途中で仕様に変更が入ることも少なくありません。

後の工程で仕様の変更が入ると、前の工程に戻ってやり直す必要があります。例えば、製造工程で仕様に変更が必要だと判明した場合、設計工程へ戻って影響調査からやり直します。設計書を書き直した上で製造工程に戻らなければなりません。

アジャイル開発では、仕様には変更が発生することを前提条件としています。一つのサイクルごとに仕様を見直しながら開発を進めるため、仕様変更に柔軟に対応できます。 アジャイル開発では、設計から運用までを一つのチームで担当するのに対し、ウォーターフォール開発では、工程ごとに別の担当者を設けることもあります。

設計担当者と製造担当者が異なる場合があるということです。

アジャイル開発の流れ

アジャイル開発では以下の流れに沿って開発していきます。

リリース計画

まずはリリース計画を決めます。リリース計画は次の流れに沿って決めていきます。

まず、ユーザーストーリーを洗い出します。ユーザーストーリーとは、ウォーターフォール開発でいえば要求定義にあたります。システムがユーザーに対してもたらす価値を定義します。

次に、ベロシティを算出します。ベロシティとは、一つのチームが一回の開発期間(イテレーション)で完了できる機能を数値化したものです。ベロシティを算出することでリリース計画が立てやすくなります。

洗い出したユーザーストーリーに優先順位を決め、算出したベロシティをもとに機能単位でイテレーションを決定します。

さらにプロジェクト全体のゴールも決めます。 リリース計画の前提として、計画はあくまでも見込みであり、計画どおりにシステムが完成することを約束するものではありません。この点についてクライアントとも共有することは非常に重要です。

イテレーション

イテレーションとは、設計からテスト、リリースまでの一つのサイクルのことを指します。リリース計画にしたがってイテレーションを繰り返していきます。

イテレーションの期間は一般的に1〜2週間程度です。結成したばかりのチームの場合、早めに成果物のレベルを共有する方がよいため、1週間とすることが望ましいでしょう。開発項目の細分化が難しい場合は2週間とするなど、状況によってイテレーションの期間を検討します。

イテレーションごとに設計、開発、テスト、リリースを繰り返します。そうしてシステムを完成に近づけていきます。

アジャイル開発の三つの手法

アジャイル開発の代表的な手法として次にあげる三つのものがあります。それぞれについて解説します。

スクラム開発

スクラムは、ラグビーのスクラムにその語源を持ちます。チームで開発することを重要視する考え方です。

チームには製品の全責任者であるプロダクトオーナーと、スクラムが正しく機能しているかを保証するスクラムマスターが存在します。 スクラム開発ではイテレーションのことをスプリントと呼びます。スプリントは1週間から最長で4週間程度です。スプリントの中では次の各手順を踏みます。

  • スプリントプランニング:実現する機能を選択しタスク化を行います。
  • デイリースクラム:スプリント期間中、毎日開催される会議体です。問題の早期発見を目的とします。
  • プロダクトバックログリファインメント:タスクの見直しや整理を行います。
  • スプリントレビュー:スプリントで開発されたソフトウェアのレビューを行います。
  • スプリントプロスペクティブ(振り返り):スプリントの達成度や発生した問題などについて話し合います。

エクストリーム・プログラミング(XP)

アジャイル開発の先駆けとなった開発手法です。

2人1組で開発を行うペアプログラミング、テストコードを軸としてプログラミングを行うテスト駆動開発などのプラクティスがあります。

エクストリーム・プログラミングは、次の五つの価値に基づいて構成されています。

  • コミュニケーション:ユーザーの持つ見解について、全ての開発者が共通認識を持つことを重要視します。
  • シンプルさ:機能は後から追加できるため、まずはシンプルなプログラムから始めることを推奨しています。
  • フィードバック:システム、ユーザー、チームそれぞれからフィードバックを得ることを大切にします。
  • 勇気:より良いコードにするためにリファクタリングをする勇気を持ちます。
  • 尊重:チームのメンバーがお互いに尊敬を感じることでチームとプロジェクトに対する忠誠心につながります。

ユーザー機能駆動開発(FDD)

FDDとはFeature Driven Developmentの略です。ユーザーにとっての機能価値(feature)を重視した開発手法で、動作するソフトウェアを定期的に提供することが主な目的です。

ユーザー機能駆動開発では五つの基本活動をもとに開発を進めます。

  •  全体モデル開発:分野ごとにモデリングを行い、結合して全体モデルとします。
  •  featureリスト構築:機能のリストアップを行います。
  •  feature毎の計画:featureリストにもとづいて開発計画を立てます。
  •  feature毎の設計:featureごとのシーケンス図を作成し、全体モデルを更新します。
  •  feature毎の構築:コーディングを行います。

アジャイル開発

アジャイル開発のメリット・デメリット

アジャイル開発のメリットとデメリットを比較してみましょう。

アジャイル開発のメリット

トラブルが起きた際の対応工数が少ない

例えば、ウォーターフォール開発の場合、トラブルが発生した際には、前の工程にまで影響がおよびます。テスト工程で大きなバグが見つかった場合には、設計工程まで戻って考え直す必要があるでしょう。

アジャイル開発では、バグが見つかっても、イテレーションを一つ戻れば動くソフトウェアが再現されます。次のイテレーションでバグ改修を行うことができます。 アジャイル開発の方が、ウォーターフォールモデル開発に比べて、トラブル発生時の手戻りが少なく、結果的に対応工数も少なくなるといえます。

開発途中でも仕様変更や機能の追加に対応しやすい

仕様変更や機能の追加が入った場合も同様です。アジャイル開発は仕様変更があることを前提とした開発手法です。

ウォーターフォール開発の場合、最初に仕様を決めて、それに従って設計、製造、テストと順番に進めていきます。途中で仕様変更が入った場合には、変更による影響調査を行わなければいけません。 アジャイル開発では途中でユーザーからのフィードバックをもらいながら、イテレーションごとに微修正を繰り返すことでシステムを完成に近づけていきます

したがってユーザーのニーズにも最大限応えることができるでしょう。

アジャイル開発のデメリット

スケジュールのコントロールが難しい

アジャイル開発では、短い期間のイテレーションを繰り返しながら開発を行うため、全体のスケジュールを把握しにくくなります。

全体のスケジュールをきちんと把握するためには、リリース計画を綿密に立てることが重要です。また、プロジェクトマネージャーがリリース計画を厳密に管理する必要があります。

プロジェクト管理ツールやスケジュール管理ツールを上手に取り入れることも一つの方法でしょう。

開発の方向性が定まりにくい

アジャイル開発では、詳細な仕様を決めずにスタートします。顧客のニーズに応えながら開発を行なっていくため、開発当初の方向性が次第にずれていく可能性があります

そのため、アジャイル開発は大規模開発には向いていないといわれます。さまざまな人の意見が出てくるからです。大人数になればなるほどその特徴は顕著に表れます。

また、仕様の追加・変更が重なると改修の頻度が多くなっていき、コスト超過や納期超過が発生しやすくなる傾向にあります。

まとめ

従来の主流な開発手法であったウォーターフォール開発では、システムの計画、設計、製造、テストまで一貫して行なっていたのに対して、アジャイル開発は各工程を短いサイクルにして繰り返します

そうすることで高品質なシステムを開発することができます。

アジャイル開発が登場して20年近く経ちますが、アジャイル開発の経験者はまだ少ないのが現実です。アジャイル開発の経験がある人は重宝されるため、フリーランスとしても多くのプロジェクトに参画できるでしょう。

フリーランスとして案件に参画し、スキルアップや経験の幅を広げたい人は、エージェントを利用することをおすすめします。

フリーランスITエンジニア専門エージェント「i-common tech」では、希望する案件の獲得に向けてさまざまなサポートを行っています。

また、扱う案件も多岐に渡り、アジャイル開発を行う案件も豊富に扱っています

アジャイル開発を行う案件の中には月額報酬が80万円以上の高単価な案件や、自社サービスの開発を行う案件などがあります。

当サービスの利用は無料です。アジャイル開発の経験を積み、フリーランスエンジニアとして活躍の場を広げたいという人は、ぜひ登録してみてはいかがでしょうか。

記事監修
パーソルキャリア株式会社 i-common techサービス責任者
荒井 雅人

株式会社インテリジェンス(現:パーソルキャリア株式会社)入社後、 人材紹介事業部にてキャリアアドバイザーおよびリクルーティングアドバイザーを歴任。

その後、経営顧問人材による経営支援サービスのi-common立ち上げを行い、2020年よりフリーランスITエンジニア専門エージェント事業のi-common techサービス責任者に着任。