発注ラウンジは、システム開発の発注に必要な様々なノウハウや発注ナビで実際に開発された発注者様のインタビューなど、発注担当者様のための情報発信サイトです。

アジャイル開発とは?今さら聞けない開発手法のメリット・デメリット

システムやソフトウェアの開発手法は、従来ウォーターフォールモデルによる開発が主流でしたが、2000年代以降、新たな手法としてアジャイル開発が登場しました。
アジャイル開発の特徴は、これまでの開発手法と比較して、開発期間が大幅に短縮されることです。
なぜ、アジャイル開発を活用すれば開発期間が短縮されるのでしょうか。
今回は、アジャイル開発の概要から特徴、具体的な手法やメリット・デメリットまでご紹介します。

アジャイル1-min

 

目次

 

アジャイル開発とは?

アジャイル(Agile)とは、直訳すると「素早い」「機敏な」「頭の回転が速い」という意味です。アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法のひとつで、大きな単位でシステムを区切ることなく、小単位で実装とテストを繰り返して開発を進めていきます。従来の開発手法に比べて開発期間が短縮されるため、アジャイル(素早い)と呼ばれています。

2001年に、当時軽量のソフトウェア開発を提唱していた17名の技術者やプログラマーが米国ユタ州に集まり、開発手法の重要な部分について統合することを議論しました。それをまとめたものが「アジャイルソフトウェア開発宣言」です。
アジャイルソフトウェア開発宣言は、ソフトウェア開発とそれに基づく12の原則を定義しており、2017年現在もアジャイル開発の公式文書として広く知られています。

従来のソフトウェア開発は、ウォーターフォールモデルによる開発が主流でした。ウォーターフォール開発は、最初に全体の機能設計・計画を決定し、この計画に従って開発・実装していく手法です。機械製造や造船業、ソフトウェア開発などさまざまな開発に応用できる手法として、広く活用されています。

 

アジャイル開発の流れと特徴

従来よりも開発期間の短縮が可能なアジャイル開発の流れについて、具体的にご紹介します。

●アジャイル開発の流れ

<リリース計画>

アジャイル開発では、ソフトウェアの計画段階で厳密な仕様を決めずに、だいたいの仕様と要求だけを決めます。これは「開発途中に仕様や設計の変更があることは当たり前」という前提があるからです。おおまかな計画のみでは、その後の実装フェーズで問題が起こりそうですが、仕様が決まっていないと途中で変更があっても臨機応変に対応できるため、顧客のニーズに最大限応えることが可能です。

<イテレーション>

だいたいの仕様と要求を決めたら、イテレーション(iteration)と呼ばれるサイクルを繰り返して開発を進めます。イテレーションとは「反復」という意味で、小さな単位に分けられた開発を「計画」→「設計」→「実装」→「テスト」と行いながら、機能のリリースを繰り返します。
イテレーションは1週間~2週間ごとが一般的で、イテレーションごとに毎回機能をリリースします。「イテレーション1」「イテレーション2」「イテレーション3」…と繰り返しながら、細かく開発を進めていきます。

●アジャイル開発に向いているプロジェクト

アジャイル開発は、開発の途中で仕様の変更や追加が予想されるプロジェクトに向いている手法です。例えば、モバイル分野などの日進月歩で技術や仕組みが進化している産業では、開発の途中で仕様の変更や追加が容易に予想できます。アジャイル開発では、リリース計画段階で厳密な仕様を決定しないため、途中変更の多いプロジェクトと相性が良いです。

一方、数十年手作業で実行していた工程をシステム化する、20年稼働していたシステムをリプレースするといった場合は、すでに作るべき機能が明確に決まっています。そのため、このようなシステムの場合にはアジャイル開発よりも、ウォーターフォール開発が向いているといえます。

 

アジャイル開発の手法

アジャイル開発と一言でいっても、その中には多くの手法が存在します。ここでは、アジャイル開発における代表的な3つの手法を解説します。

●スクラム

スクラム開発は、アジャイル開発の中でも有名な手法で、開発を進めるためのフレームワークを指します。スクラムとはラグビーで肩を組んでチーム一丸となってぶつかり合うフォーメーションのことで、その名の通り、チーム間のコミュニケーションを重視している点が特徴です。
メンバーが自分たちで計画を立案し、イテレーションごとに開発の進行に問題がないか、制作物は正しい動きをしているのかを精査します。そのため、メンバー間でのコニュニケーションが重要で、コミュニケーションが不十分になると、イテレーションの制作物としてリリースができなかったり、リリースした機能が正常な動きをしなかったりするといった問題が生じる可能性があります。スクラムを組むように、チーム全員が協力して開発を進めることが大切です。

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

エクストリーム・プログラミング(Extreme Programming)はXPとも略され、事前に立てた計画よりも途中変更などの柔軟性を重視する手法です。
開発チームでは「コミュニケーション」「シンプル」「フィードバック」「勇気」の4つの価値を共有することを推進しており、中でも「勇気」は、開発途中の仕様変更や設計の変更に立ち向かう勇気を指しています。初期の計画よりも技術面を重視しているため、プログラマー中心の開発手法といえます。

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

ユーザー機能駆動開発(Feature Driven Development)は、実際に動作するソフトウェアを適切な間隔で繰り返す手法で、顧客にとっての機能価値(feature)という観点で開発が進められているのが特徴です。
実際に動作する機能を開発するには、ユーザー側のビジネスの見える化を行います。そのため、事前にビジネスモデリングを実施する必要があります。

 

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

システムやソフトウェアに合った開発手法を選ぶためには、それぞれの特性を理解することが大切です。メリットが多く見えるアジャイル開発ですが、デメリットも理解した上で適切な開発手法を選択することが必要です。

●メリット

アジャイル開発のメリットは、不具合が発覚した際に戻る工数が少ないことです。従来のウォーターフォール開発の場合には、最初に決定した設計・計画を重視するため、トラブルの発生箇所によっては戻る工数が大きく、時間やコストが膨大に膨らむ可能性がありました。しかし、アジャイル開発の場合は、小さな単位で計画から設計、実装、テストを繰り返しているため、テストで問題が発生してもひとつイテレーション内を戻る分の工数で済みます。

また、計画段階で綿密な仕様を決めないため、開発途中でユーザーとコミュニケーションを取りながらフィードバックを行い、確認をしながら進められます。仕様変更や追加に対応可能なので、ユーザーのニーズに最大限応えることができ、高い満足度が得られる点もメリットでしょう。

●デメリット

計画段階で厳密な仕様を決めていないため、開発の方向性がブレやすいというデメリットがあります。さらに良くしようと改善を繰り返し、テストやフィードバックで変更・追加を加えていくことで、当初の計画からズレてしまうことが理由です。

また、ウォーターフォール開発の場合は、最初に指標となる機能設計と併せて、開発スケジュールを決めます。あらかじめスケジュールを設定しておくことで現状の進捗度を把握することが可能になります。
しかし、アジャイル開発では計画を詳細に立案しないため、スケジュールや進捗具合が把握しにくくコントロールが難しくなります。チームごとに小単位で開発を繰り返すため、全体を把握しきれずに、気付いたら納期に間に合わないということも起こりえます。

 

アプリ開発にも適したアジャイル開発のメリット

アジャイル2-min

一般的に、システムやソフトウェアの開発には長い時間がかかり、1年以上を費やす場合も珍しくありません。
しかし、アジャイル開発なら、これまでの長い開発期間を短縮させるだけでなく、開発途中でも仕様の変更や追加が可能です。
仕様の変更が発生しやすいWebサービスや、近年増加しているWebアプリ、スマートフォンアプリの開発に適しているため、現代に合った開発手法といえるでしょう。
アジャイル開発とウォーターフォール開発、両方のメリットを活かして、組み合わせるというのもひとつの方法です。
プロジェクトに合わせて、最適な開発手法を検討してみましょう。

 img02

 

発注先選びにお困りの方はこちら

具体的に『システム開発』が得意な会社を探す

システム開発の発注先を「専門スタッフ」に相談する

関連する記事

PAGETOP