『みんなの転職「体験談」。』

『みんなの転職「体験談」。』

『みんなの転職「体験談」。』は、20~50代社会人男女の、 「転職したいけれど、迷いや不安で行動を踏み出せない」を 解決し、
より良い将来を目指した一歩を踏み出していける為の、 生々しい体験談情報やナレッジを提供するWebサービスです。

MENU

アジャイル開発とは?アジャイル開発のメリット・デメリットを初心者向けに解説

[最終更新日]2020/09/28

アジャイル開発とは?

システム開発でよく耳にする用語の1つに、「アジャイル開発」があります。いったいどのような方法なのか、またどのような特徴があるか、知りたいと思った方も多いのではないでしょうか。

アジャイル開発は、よいシステムを効率的に開発するために考え出された開発手法の1つです。多くのプロジェクトで使われている手法ですから、チームで開発に携わるエンジニアはぜひ知っておきたい用語です。

開発手法によって仕事の進め方は大きく異なりますから、あなたの実力を発揮するためにはプログラミング言語のスキルだけでなく、開発手法の内容も知っておくことが必要です。

レビューを書く
1
2
3
4
5
送信
     
キャンセル

レビューを書く

レビューの平均:  
 0 レビュー

目次

現在、ITエンジニア職で転職活動中の方へ


現在、新型コロナウィルスの感染拡大防止に向けて、都市部の多くの企業また転職エージェントサービスにて電話面談、またはオンライン面談の利用を促しています。
在宅においても転職活動は可能ですので、「なるべく早く転職活動を進めたい」という方は、以下転職エージェントサービスへの電話相談をされることをおすすめします。

<電話相談が可能な、おすすめ転職エージェントサービス>

■エンジニアの実務経験がある方向け
マイナビエージェントIT
レバテックキャリア
doda ITエンジニア

■エンジニアの実務経験が浅い方向け
ワークポート
リクルートエージェント
doda


登録後、それぞれの転職サービスから連絡が来ますので、電話で状況を伝えアドバイスをもらいます。
また、登録の際はなるべく複数のサービスに登録をして、あなたにとって一番「相性が良さそう」と感じた転職サービスを見極めて利用されることをおすすめします。

1)そもそも「アジャイル開発」とはなにか ?

アジャイル開発のメリット・デメリットを知るためには、まずアジャイル開発とはなにか?という点を知る必要があります。

開発手法をしっかり理解することは、よいエンジニアの第一歩です。ここでは主な開発手法の「ウォーターフォール開発」と比較しつつ、どのような特徴があるか詳しくみていきます。



アジャイル開発は、開発の「スタイル」の1つ

アジャイル開発はシステム開発・ソフトウェア開発手法のうちの1つで、以下の特徴があります。開発手法は、開発の「スタイル」と考えるとわかりやすいでしょう。

開発するシステムを小さな機能の単位に分ける企画・開発・リリースまで一連の作業を行う業務の優先度が高い機能から開発を進める
  • 開発するシステムを、小さな機能の単位に分ける
  • 分けた機能ごとに企画から開発、リリースまで、一連の作業を行う
  • 業務の優先度が高い機能から開発を進める

機能ごとに開発の工程が繰り返されることから、開発は「イテレーション」と呼ばれる、1~4週間の単位で行われることが多いです。

開発を行う上で起きた課題を次の開発に生かせること、よく使う機能から開発できること、顧客の要望に対して柔軟な対応ができることが特徴です。

比較される「ウォーターフォール開発」との違い

代表的な開発手法には、ウォーターフォール開発もあります。アジャイル開発と比較した場合、以下にあげる違いがあります。

  • アジャイル開発はあらかじめ機能ごとに分割し、優先度をつけた上で企画から納品までの作業を行う。1つの機能を開発した後、次の機能に取り掛かる
  • ウォーターフォール型開発は、すべての機能を一括して進める。全機能の設計が終わった後、プログラムの実装を開始する

上記の内容を、以下の表で示しました。

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

このことから、ウォーターフォール開発は大規模開発に向くといわれています。一方でアジャイル開発は機能の優先度をつけられたり、仕様が途中で変わったりするシステムに向くといわれています。



2)アジャイル開発もいろいろある、代表的な手法

アジャイル開発には、大きく分けて以下に示す3つの手法があります。

スクラムエクストリーム・プログラミング(XP)ユーザー機能駆動開発(FDD)
  • スクラム
  • エクストリーム・プログラミング(XP)
  • ユーザー機能駆動開発(FDD)

どの手法も、長所と短所があります。このため、使い分けが重要です。それぞれの手法にはどのような特徴があるか、順に確認していきます。



スクラム

スクラムとは、チームが一丸となって開発に携わることが特徴の開発手法です。ラグビーの「スクラム」を語源としているとおり、チームの団結力が身上です。スクラムはアジャイル開発の主流 となっており、以下の特徴があります。

  • チーム内や顧客とのコミュニケーションを重視する
  • プロジェクトメンバーどうしが知識をシェアするため、スキルアップが期待できる
  • プロジェクトメンバーの役割は固定されない。そのため開発の遂行に必要な、さまざまなスキルの習得が求められる
  • PMやPLからいちいち指示されなくても、自ら考えて動けるスキルが求められる

上記のとおりスクラムでは、コミュニケーションが重要なポイントです。そのため「限られた期間内で、いかに高品質な機能をリリースするか」という点を重視し、協力を惜しまない姿勢が求められます。

一方で参加メンバーはさまざまな業務を経験するため、スキルアップも期待できる手法です。

なお富士通ソフトウェアテクノロジーズによると、スクラムにおける開発チームの人数は5~9名が望ましいとしています。



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

エクストリーム・プログラミングは、極端(extreme)という単語を語源としています。何が極端かというと、ソフトウェアの開発現場における経験則を極端なまでに実践するところから来ています。
以下にあげる点が特徴的です。

  • コミュニケーションを重視する
  • 顧客も開発チームに加わり、協働してシステムを開発する。動作するシステムを現地で直接確認することで、迅速にフィードバックが得られ、すみやかに改善できる
  • 必要な機能だけを実装する。「将来必要かもしれない」といった機能は、開発に含めない
  • 仕様やルールは変更されることが前提。よりよい方法があれば、すみやかに改善される
  • ペアプログラミングやコードの共同所有など、担当者不在による作業の停滞を防ぐしくみがある。加えて、参加メンバー全体のスキルを底上げすることも可能

このように開発スピードと品質の確保に加え、チーム全体のスキルアップを行えることが特徴です。



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

ユーザー機能駆動開発とは、動作する機能を短い期間で繰り返し提供することで、システム全体の開発に結びつける手法です。その特徴には、以下の項目があげられます。

  • 開発期間は2週間程度
  • 一度に開発する機能は、単一の機能に絞られる(例:仕入金額を計算する、パスワードのチェックを行うなど)
  • 事前にユーザーが必要な機能を洗い出し、「見える化」しておく必要がある

開発が進むごとに機能が増えるため、顧客にとっては進捗がわかりやすいことが特徴です。
また開発単位が小さいためフィードバックも迅速に行え、手戻りを少なくできることも特徴の1つです。



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

アジャイル開発にも他の開発手法と同様、メリットとデメリットがあります。これらを把握しておくことは、後悔しない開発手法の選定には欠かせません。

ここではアジャイル開発のメリットとデメリットを3つずつ取り上げ、それぞれのポイントを解説します。適切な開発手法を選ぶポイントを知っておくと、将来役立ちます。



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

早めに使いたい機能は優先してリリースする顧客の要望やニーズを取り入れやすい設計変更や不具合が発生しても手戻りが少ない
  • 早めに使いたい機能は優先してリリースし、使い始めることが可能
  • 顧客の要望やニーズを取り入れやすい
  • 設計変更や不具合が発生しても、手戻りが少なくなる



早めに使いたい機能は優先してリリースし、使い始めることが可能

アジャイル開発では、機能の優先度をつけることができます。これにより、早く使いたい機能は優先度を上げ、開発段階の早期に入れてもらうことができます。

早めに開発してもらえればそのぶん利用開始も早められるため、新システムをいち早く実感できる点は大きなメリットの1つです。

ウォーターフォール開発では全機能の開発を一度に進めるため、アジャイル開発のようにはいきません。
システム開発ではリリースの遅れも珍しくないため、顧客が不満を抱える場合もあるでしょう。

「待っているのになかなか新しい機能が使えない」といった顧客のストレスを減らせることも、メリットにあげられます。


顧客の要望やニーズを取り入れやすい

アジャイル開発では、最初の企画や要件定義の段階ですべての仕様を確定せずにすむ点が特徴です。このため、顧客は以下のような対応が可能です。

  • 画面をどれか1つ作ってもらい、使い勝手を確認した後に残りの画面を作ってもらう
  • 要件の確定や調整に時間のかかる機能は、後回しにできる
  • 開発がスタートした後でも、現場からの要望やニーズをシステムに反映できる

上記のとおり、顧客の要望やニーズを取り入れながら、柔軟に開発を進められる点もメリットの1つです。これにより顧客満足度のアップが期待でき、完成後のシステムも有効に活用されやすくなります。


設計変更や不具合が発生しても、手戻りが少なくなる

アジャイル開発では1つの開発単位が小さいため、開発期間も短くなります。開発されるプログラムの量や機能も少なくなるため、以下のメリットがあります。

  • テストの段階で不具合が発生した場合でも、修正範囲が小さくて済む
  • 開発中に急きょ設計変更が行われた場合でも、手戻りが少なくて済む

このためスケジュールに与える影響が少なくなるほか、システムの品質低下も抑えられます。

もしウォーターフォール開発の場合、テストの段階で設計変更や不具合が発見されると、大幅な修正が発生し開発メンバーの労働時間が大きく増えるおそれがあります。

このような事態を防ぎながらシステムを安定して使える環境を提供できることも、アジャイル開発のメリットといえるでしょう。



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

システム全体のスケジュールを把握しづらい機能や予算が膨らむ可能性も大規模開発では工夫が必要
  • システム全体のスケジュールを把握しにくく、プロジェクト全体の納期に間に合わないおそれも
  • 機能や予算が膨らむ可能性がある
  • 大規模開発では工夫が必要



システム全体のスケジュールを把握しにくく、プロジェクト全体の納期に間に合わないおそれも

アジャイル開発でも、プロジェクト全体の納期は存在します。一方で開発初期の段階では、個々の要件ごとにその都度スケジュールを決めるケースも多いです。
これはアジャイル開発が、柔軟に変更できる点を強みとしているためです。

このため開発するべき機能全体のうちどの程度まで進捗しているかといった、「開発期間全体に対する進捗状況」を把握しにくくなることはデメリットです。

顧客の要望に対して柔軟に対応していたら、納期に間に合わない事態になっていた・・・というおそれもありますから、注意が必要です。この事態を防ぐために、プロジェクト全体の納期に関する意識を持つことも求められます。


機能や予算が膨らむ可能性がある

開発初期に機能を確定しないアジャイル開発では、顧客の要望にこたえているうちに機能が膨らむおそれもあります。

これは優先すべき機能をリリースした後、顧客から「やっぱりこの機能も欲しい」といった仕様変更を許す開発方法であるためです。

もし際限なく機能の追加を認めた場合、以下の問題が発生します。

  • いつまでたってもプロジェクトが終わらない
  • プロジェクトの初期で開発した機能に影響を与える場合があり、修正をしなければならない可能性がある

これらはコストアップにもつながります。顧客が支出するならば予算のアップ、開発会社が支出する場合は利益率の低下や赤字プロジェクトとなるおそれもあります。


大規模開発では工夫が必要

大規模なシステム開発において、アジャイル開発は不向きといわれています。それは開発を成功させるためには、アジャイル開発ならではの工夫が必要となるためです。

アジャイル開発のチームは、10名以下が望ましいとされています。要件の変化に対応し充実したコミュニケーションをとるためには、少人数であることが求められるためです。

したがって大規模開発で用いる場合は各チームの人員が10名以下となるよう、開発する機能をあらかじめ細分化しておく必要があります。

この点はチームの人員が制限されないウォーターフォール開発と異なり、アジャイル開発の制約事項となるでしょう。プロジェクト初期の段階で、ある程度細かな機能を想定しておく必要があるためです。



4)アジャイル開発をする時に知っておきたいことや注意点

アジャイル開発をするときには、以下のとおり知っておきたいポイントもあります。

よく使われる用語を知っておこうドキュメントは必要か?開発の内容・環境に合わせ手法を考える
  • よくつかわれる用語を知っておこう
  • ドキュメント(資料や要件定義など)は必要か?
  • 開発の内容や環境にあわせて、開発手法を考えよう

いずれもアジャイル開発を行う上では、見逃せない内容です。以下の項目ではそれぞれのポイントについて、詳しく解説していきます。



よくつかわれる用語を知っておこう

アジャイル開発では、独特の用語がよく使われます。用語のなかには、アジャイル開発の特徴をよく示すものもあります。
開発メンバーとして参加する場合はスムーズに業務を進めるためにも、用語を押さえておくことが必要です。

アジャイル開発でよく使われる用語やキーワードを、以下の表で示しました。このほかにもわからない用語があれば積極的に調べ、身につける姿勢が必要です。

アジャイル開発において、良く使われる用語・キーワード

用語・キーワード 概要
ユーザーストーリー ユーザーがシステムで実現したいことや期待している事項を、簡潔に記したもの。ユーザー側から見た、ひとまとまりの機能として記載されることが特徴。プロジェクトで実現したい一覧表(プロダクトバックログ)にまとめ、優先順位の高いものから開発される。
イテレーション(スプリント) 企画からリリースまでの一連の開発工程を、機能ごとに繰り返すことを指す。イテレーションは開発作業を行う単位として扱われ、その期間は1週間から4週間程度とするプロジェクトが多い。スクラム開発では、「スプリント」と呼ばれる場合もある。
ベロシティ チームにおける開発速度の指標を示す。1回のイテレーションで、どれだけのユーザーストーリーを実現できるかにより計算する。開発初期はブレが大きくなる一方、開発終盤に近づくにつれて正確な数値を求められることが特徴。
デイリースクラム/デイリースタンドアップ 開発チーム内で日々行うミーティングのことで、立ったまま短時間(5分~15分)で行われる。開催される時間帯はプロジェクトごとに異なる。また、朝会や夕会とも呼ばれる。メンバー各自は昨日行ったこと、本日行うこと、重要な情報、困っていることなどを共有する。議論が必要な場合は別の場を設けて行う。




ドキュメント(資料や要件定義など)は必要か?

エンジニアのなかには、「アジャイル開発にドキュメントは不要」と考える方もいるようです。しかしこれは、極端な考え方です。

そもそもドキュメントは、作業を行ったことを示す証拠書類となります。
もし顧客から打ち合わせの席で出ていなかった要求をされた場合、ドキュメントがないと合意済みの要求かどうか区別できません。その結果、顧客の言いなりになるおそれがあります。

またドキュメントは、将来システムの修正を行う際にも重要です。
ドキュメントがあれば現状のシステムの仕様を確認できますが、ない場合は仕様を確認するために試行錯誤しなければなりません。これらの理由により、ドキュメントの作成は欠かせません。



開発の内容や環境にあわせて、開発手法を考えよう

アジャイル開発は有効な開発手法ですが、万能ではありません。そのためシステムの内容や環境にあわせて、どの開発手法を選ぶか決めることが重要です。たとえば以下のようなケースでは、アジャイル開発が向いているといえるでしょう。

途中で仕様変更や機能追加がされる可能性新しい技術をできるだけ取り入れたいよく使う機能は早めに使い始めたい
  • 途中で仕様変更や機能追加がされる可能性が高い
  • 新しい技術をできるだけ取り入れたい
  • よく使う機能は早めに使い始めたい。重要でない機能はリリースが遅くなってもよい

一方で長年使っているシステムで大きな仕様変更もない場合は、アジャイル開発にこだわる必要はありません。大規模システムの場合は、ウォーターフォール開発が適するケースも多いでしょう。このように開発手法は、使い分けが重要です。



まとめ)アジャイル開発手法を知ることは、チームで能力を発揮する第一歩となる

アジャイル開発には、独特の手法が数多くあります。このためチームで活躍するためには開発手法を正しく理解し、アジャイル開発の趣旨に沿った行動をとることが重要です。

特にアジャイル開発ではチームのメンバーが少数であるため、1人のスキルが開発スピードや品質に大きな影響を与えます。

このためチームに貢献できるよう、日々のスキルアップが欠かせません。加えてアジャイル開発では、コミュニケーションやスキルの共有も必要です。どのように作業を進めたら効率的な開発ができるか、仕組みづくりの改善にも関われると、あなたの評価も上がるでしょう。

システム開発に携わる方は将来のためにも、ぜひアジャイル開発の内容を知っておくことをおすすめします。





レビューを書く
1
2
3
4
5
送信
     
キャンセル

レビューを書く

レビューの平均:  
 0 レビュー