アジャイル開発とは?メリットから進め方まで詳しく解説
新しいシステムやソフトウェアを作る時に、ニーズに合わせて柔軟に開発手法を変えて取り組める人材を育成したいけれど、それにはどんな開発手法について学んでもらえばよいか悩んでいる人はいませんか?
この記事では開発期間を短縮してほしいというニーズに応えることのできる開発手法、アジャイル開発について詳しく解説します。
アジャイル開発とは?
アジャイル開発(agile software development)とはシステムやソフトウェアにおける開発手法の1つで、英語のagileの素早い、機敏なという意味から名付けられ、速やかに開発を行うのに適した手法です。
アジャイル開発を最初に定義づけたものとして、アメリカユタ州に集合した17人の技術者とプログラマーによって生み出された「アジャイルソフトウェア開発宣言」、また「アジャイル宣言の背後にある原則」があります。
「アジャイルソフトウェア開発宣言」ではアジャイル開発をする上でどのようなものに価値を置くか、「アジャイル宣言の背後にある原則」ではアジャイル開発をする上で守る必要がある原則を示しています。
アジャイル開発のベースにあるマインドセットや原則について深く理解したい人は独立行政法人情報処理推進機構のホームページにある「アジャイルソフトウェア開発宣言の読みとき方」に目を通しておきましょう。
参考:独立行政法人情報処理推進機構「ITSS+(プラス)アジャイル領域」
アジャイル開発とウォーターフォール開発の違い
開発手法の1つであるウォーターフォール開発とアジャイル開発の違いは次の通りです。
アジャイル開発 | ウォーターフォール開発 | |
開発の工程 | ・機能ごとに「要件定義・企画」「設計」「実装」「テスト」「運用」を繰り返す | ・全ての機能について「要件定義・企画」「設計」「実装」「テスト」「運用」を1回ずつ行う |
仕様 | ・大枠だけを決めて開発する | ・厳密に決めてから開発する |
開発途中での変更 | ・想定している | ・想定していない |
顧客に提供できるタイミング | ・開発が終了した機能はすぐに提供できる | ・全ての工程が終了した後 |
開発者 | ・全ての開発を担当できる多能工 | ・工程別の専任担当者 |
開発者の教育や採用 | ・機能ごとに反復を繰り返すため実践教育がしやすい ・全ての開発を担当するので多能工化する | ・専任担当者のため教育や採用がしやすい |
プロセスの改善 | ・反復した時に改善を行う | ・次のプロジェクトにおいて経験を活かした改善を行う |
アジャイル開発は開発途中での変更や、機能別に早期に顧客に提供したい時に向いており、ウォーターフォール開発は納期がはっきりと決まっていて開発者を専任担当として教育したい時に向いているのがわかります。
アジャイル開発とプロトタイプ開発の違い
開発手法の1つであるプロトタイプ開発とアジャイル開発の違いは次の通りです。
アジャイル開発 | プロトタイプ開発 | |
開発の工程 | ・機能ごとに「要件定義・企画」「設計」「実装」「テスト」「運用」を繰り返す | ・全ての機能について「要件定義・企画」「設計」「プロトタイプ開発」「検証」「改善」「本開発」「リリース」を1回ずつ行う |
検証やテストをする際に使うもの | ・実際に開発したシステムやソフトウェア | ・プロトタイプ |
顧客に早い段階でシステムの全体像を捉えてもらえるように配慮している点でアジャイル開発とプロトタイプ開発は似ていますが、検証やテストをする際にプロトタイプを使うのか、それとも開発したシステムやソフトウェアそのものを使うのかという点で異なります。
同じように顧客との認識違いを避けて品質を高めたい場合でも、アジャイル開発は適宜顧客と連携できる場合に向いており、プロトタイプ開発は開発前に認識を合わせておきたい場合に向いています。
アジャイル開発とスパイラル開発の違い
開発手法の1つであるスパイラル開発とアジャイル開発の違いは次の通りです。
アジャイル開発 | スパイラル開発 | |
開発の工程 | ・機能ごとに「要件定義・企画」「設計」「実装」「テスト」「運用」を繰り返す | ・機能ごとに「要件定義・企画」「設計」「実装」「テスト」「運用」を繰り返す |
工程を繰り返す回数 | ・決まっている | ・各機能が完成するまで繰り返す |
顧客に提供できるタイミング | ・開発が終了した機能はすぐに提供できる | ・全ての工程が終了した後 |
機能ごとに開発の工程を繰り返すのはアジャイル開発とスパイラル開発で同じですが、アジャイル開発では繰り返す回数が決まっているのに対しスパイラル開発では決まっていません。
スパイラル開発は、時間をかけて高品質なシステムやソフトウェアを作りたい時に向いている開発手法だと言えるでしょう。
アジャイル開発の種類
アジャイル開発にはさまざまな種類がありますが、その中でも良く使われる開発手法についてご紹介します。
定義 | メリット | デメリット | |
スクラム | ・スプリントと呼ばれる反復期間を繰り返して機能を開発する手法 ・開発の工程 ①スプリントプランニング(実装する機能の決定) ②デイリースクラム(決まった時刻に行うミーティング) ③スプリントレビュー(開発した機能をデモンストレーションしてフィードバックを受ける) ④スプリントレトロスペクティブ(スプリントの振り返り) | ・汎用性が高い ・チームで開発するので効率がよい ・チーム内での課題が発見しやすい ・正確に工数を見積もれる | ・コミュニケーションがうまくいかないと開発が遅れたり品質が下がったりする |
エクストリームプログラミング | ・イテレーションと呼ばれる反復期間を繰り返して機能を増やす手法 ・開発の工程 ①計画ゲーム(イテレーション期間内に実装する機能の決定) ②イテレーション(顧客と開発技術者が協力して開発) ③リリース(受入テストが完了した機能をリリース) | ・開発期間を短くできる ・顧客満足度が上がる ・仕様変更に対応しやすい | ・1つのシステムやソフトウェアを2人で共同開発するためコミュニケーションがうまくいかないと開発がうまく進まない |
ユーザー機能駆動開発 | ・機能ごとにチームをわけて開発に取り組む手法 ・開発の工程 ①機能リストの作成 ②機能ごとの計画 ③機能ごとの設計 ④機能ごとの構築 | ・機能が重視されるためシステムやソフトウェアが高品質になる ・大規模な開発にも対応できる | ・ユーザーのほしい機能を優先するのでニーズをくみ取れないと開発が遅れる |
リーンソフトウェア開発 | ・トヨタなどで採用されるリーン生産方式を開発手法に応用したもの ・以下の7つの原則を守る ①不要な作業や機能をなくす ②欠陥を早期発見し高品質な開発を目指す ③多くのフィードバックから開発に必要な知識を学ぶ ④熟考して結論を出すため最終決定をできるだけ遅らせる ⑤早くフィードバックを得て改善するため速やかにリリースする ⑥メンバーの意見を尊重し現場に決定権を持たせる ⑦各工程ではなく全体を最適化する | ・開発を効率化できる ・フィードバックを重要視するので顧客のニーズに合った開発ができる | ・フィードバックを得て改善を繰り返すためコストが高くなる |
適応的ソフトウェア開発 | ・継続的な仕様変更 に対応するための開発手法 ・開発の工程 ①思索(スペキュレーション=顧客のニーズ確認やチームにおける計画作成) ②協調(コラボレーション=開発作業とチーム内のコミュニケーション) ③学習(ラーニング=品質の評価やレビューからどう改善するか学習する) | ・状況が変化しても臨機応変に対応できる ・チームが学習して成長するので高品質なものが開発できる | ・開発の方向性がずれやすい |
同じアジャイル開発の中でも、顧客のニーズに合わせてさまざまな開発手法を取れるのがわかるでしょう。
アジャイル開発の進め方
アジャイル開発の進め方を、スクラムを例として少し詳しく見ていきましょう。
アジャイル開発に関わる人
スクラムを行う場合、関わる人は次の3つにわけられます。
スクラムに関わる人 | 役割 |
プロダクトオーナー | ・開発全体の方向性を決める |
スクラムマスター | ・開発がスムーズに進むようスケジュール管理やチーム内の調整をする |
開発チーム | ・開発を行う |
関わる人たちがそれぞれの役割をしっかりと果たすことで、スクラムがうまく進むようになっています。
スプリント
スクラムでは前の項目でもご紹介した通り、スプリントと呼ばれる短期間の開発工程を複数回繰り返すことで開発が進んでいきます。
スプリントの中に含まれる4つの開発工程について詳しく見ていきましょう。
スプリントプランニング
プロダクトオーナーと開発チームが実装予定の機能の中からスプリントの期間内に実装する機能を決めることです。
この決めた機能をスプリントバックログと呼びます。
デイリースクラム
開発チームが毎日決まった時刻に短時間のミーティングを行い、開発の進捗、開発を進める上での課題を共有することです。
その日の目標や仕事の進め方もここで決められます。
スプリントレビュー
顧客に対し開発した機能をデモンストレーションしてフィードバックを受けることです。
顧客が大丈夫だと判断した機能はリリースされますが課題があると判断した場合、リリースは次回のスプリントに持ち越されます。
スプリントレトロスペクティブ(ふりかえり)
スプリントの最後に行われる会議で、全員で今回のスクラムのふりかえりを行うことです。
スクラムを評価し、次回へ向けた改善点を検討します。
参考:独立行政法人情報処理推進機構「ITSS+(プラス)アジャイル領域」
セイ・コンサルティング・グループではアジャイル開発に前向きに取り組める人材の育成をサポートしています
セイ・コンサルティング・グループではアジャイル開発に前向きに取り組める人材の育成をサポートしています。
具体的にはスクラム開発入門という講座で、1日という短い時間でアジャイル開発とは何かを学び、スクラムの流れを一通り体験することもできるのです。
講座は演習形式で、最後に理解度チェックテストや質疑応答もあるため、アジャイル開発が未経験の人でも受講後はスクラムの開発チームへの参加に前向きな気持ちを持てるようになるでしょう。
見どころのある人材があと一歩踏み出すのに研修でサポートしてほしいという方は、ぜひ次のページもごらんください。
2.5 スクラム開発入門~あのアジャイルの要所が1日で学べる~ - セイコンサルティンググループ (saycon.co.jp)
まとめ
アジャイル開発とはシステムやソフトウェアにおける開発手法の1つで、速やかに開発を行うのに適した手法です。
この記事も参考にして、ぜひアジャイル開発を用いてスピード感のある開発に取り組める人材を育成してみてください。