システム開発の手法には様々ありますが、いくつ種類を知っていますか?昔から有名な手法としてウォーターフォール開発が主流でしたが、2001年頃に「アジャイルマニフェスト」が公開されたことでアジャイル開発手法が取り入れられるようになりました。
今回は、そんなアジャイル開発について解説しています。アジャイル開発とは、小さな単位で開発、リリースを繰り返し行う開発手法のことで、アジャイル開発の中にもいくつか種類があります。
この記事では、アジャイル開発の定義から種類、メリットデメリットについてご紹介していきます。
アジャイル開発とは?
まず、アジャイル開発とは何かという疑問の方は多いと思います。そこで、初めにアジャイル開発の定義から説明し、アジャイル開発の種類に関して詳細に説明していきます。
アジャイル開発の定義
アジャイル開発は、システム開発手法の一つです。アジャイル開発では、最低限の要件を決めたうえで、小サイクルで開発・リリースを行いユーザーに成果物を納品、成果物に対してレビューをいただきます。ウォータフォール開発のように最初の段階で完成系を定めていないため、レビュー結果や顧客の話を聴きながら軌道修正を行います。そういった流れで、ユーザーが求める最終的なゴールに向けて開発を進めていくという仕組みを取ります。
従来のソフトウェア開発は、ウォーターフォール開発が一般的でしたが、ウォーターフォール開発はユーザーからの仕様変更に弱いという弱点を持っており、アジャイル開発はその弱点を解消した開発手法といえます。
アジャイル開発の種類
次に、アジャイル開発の種類に関してご紹介します。アジャイル開発でよく用いられる代表的な3つの手法である下記に関して今回の記事ではご紹介します。
- スクラム
- エクストリームプログラミング
- ユーザー機能駆動型開発
順番にどのような手法なのかを解説していきます。
スクラム
スクラムとは少人数のチームで密接に連携しながら開発する手法であり、アジャイル開発で最も利用される手法です。
チーム内には役割として、ゴールを設定するプロダクトオーナー、チームメンバーにスクラムの動きや開発方針をコーチングするスクラムマスター、各タスクを開発していく開発者という役割があります。それぞれが自身の役割に専念しながら効率よく開発を進めていきます。
スクラムは、デイリースクラムという日毎の打ち合わせでチームの状況を共有し、その日の開発方針の決定などを行います。そのため、チーム間でのコミュニケーションを密に取る必要があります。
エクストリームプログラミング
エクストリームプログラミングはXPと略されることもあります。エクストリームプログラミングは、顧客の要望が変化することを前提として、その変化に柔軟に対応するために使用される手法です。
開発初期段階では、細部の計画を立てず、顧客からヒアリングを行い、開発の方針を開発しながら決定していきます。動く成果物のリリースを繰り返し行うのがエクストリームプログラミングの特徴です。
エクストリームプログラミングでよく使われるのが、ペアプログラムとテスト駆動型開発です。ペアプログラミングでは複数人でプログラム開発を行い、レビューをお互いに行うことで、気づきを共有します。また、個人の力量が劣っている場合でもペアのプログラマーからの学びによる成長も期待できます。テスト駆動型はテストケースを先に考えてから、プログラミングを行う手法です。
ユーザー機能駆動型開発
ユーザー機能駆動開発は、ユーザーの必要な機能を洗い出し、その機能を網羅するための開発を行っていくという手法です。
その機能はフューチャーと呼ばれます。このフューチャーをさらに細かな、2週間以内で開発できる単位に分割したものをフューチャーリストと言います。このリストを作成したあとは、そのリストの項目ごとに開発計画を立てて、設計・開発を行います。この手法は先ほど述べた、スクラムやエクストリームプログラミングよりも大きな規模のシステム開発でも使用できるという特徴があります。
アジャイル開発手法のポイント
アジャイル開発の重視するポイントとして、下記が定められています。
- プロセスやツールよりも個人と対話を重視
- 包括的なドキュメントよりも動くソフトウェアを重視
- 契約交渉よりも顧客との協調を重視
- 計画に従うことよりも変化への対応を重視
このポイントからも、やはりアジャイル開発では、決まりきったものを開発するというよりは、変化しながら開発するというポイントが読み取れます。では、アジャイル開発を行うメリットとデメリットに関してもご紹介しておきます。
アジャイル開発のメリット
アジャイル開発のメリットは、柔軟性と開発スピードです。
システム開発の初期の段階で全てを決定することはないので、ユーザーから変更要望が入っても、柔軟に開発機能を修正することが可能となります。また、開発スピードに関しても、リリースを重視するという点から、全機能でのリリースは最終的なプロジェクトの完遂を待つ必要はありますが、優先度の高い機能に関しては、最優先でリリースを行うなどでリリースまでの時間を短縮することができます。そのため、ウォーターフォール開発よりも早く、スピードを求められる開発時に有利となります。
アジャイル開発のデメリット
アジャイル開発のデメリットは、ある程度顧客側の体制が必要であること、正確さやスケジュール管理が難しいなどです。
アジャイル開発を行う上では、顧客側でリリースした成果物を確認し、レビューをもらう必要があります。このレビューに時間がかかると次の開発サイクルに進むことができません。そのため、顧客側でレビューを行う体制を確保しておく必要があります。
アジャイル開発はリリースを重視するという観点から見ると、正確さを確実に問われる金融関係の業務には不向きと言えます。また、スケジュール管理に関しては、アジャイル開発の特徴として、先ほど説明したように期間の短い開発サイクルを回すという点から、最終的なプロジェクトの完遂までの道のりが見えづらいという点があります。そのため、期日を正確に定める必要のある開発には適用しづらい可能性があります。
アジャイル開発の進め方
それでは、アジャイル開発の進め方に関して具体的にご紹介していきます。今回はスクラムを例にアジャイル開発を進める流れをご紹介します。
アジャイル開発を行う流れ
スクラムでは、先ほどの章でも説明したように、①プロダクトオーナー②スクラムマスター③開発者の役割を決め、チームを作ります。
次にスクラムの中での1サイクルとなるスプリントを実施していきます。実施の流れは下記です。
- スプリントプランニング
スプリントの開始時にミーティングを行い、開発内容や進め方を決めます。 - デイリースクラム
スプリント期間中に随時行う短時間のミーティングです。今日の作業目標や開発課題などをチームに共有します。 - スプリントレビュー
スプリントの最後に行う会議です。スプリントの成果や今後の流れを共有します。 - 振返り
スプリントの最後に行う会議です。今回のスプリントの評価や反省点を確認し次回に向けた改善点をチームで検討します。
このスプリント終了後の成果物を、お客様に納品しレビューをいただきます。このレビュー時に認識齟齬がある場合や指摘事項がある場合は、次回のスプリントでそれを反映しながらスプリントを繰り返していきます。
開発手法の選び方
今回の例ではスクラムを例にしましたが、アジャイル開発を行うかどうかの判断基準や、今回紹介した3手法のうちどの手法を選択するかはどのように考えるのでしょうか。まず、アジャイル開発を行う判断基準としては下記3点があります。
- リリースを高頻度で行う開発
- 可能な限り早くサービスをリリースする必要がある
- 顧客からの変更要望が多い
次に、開発手法に関しては開発の規模感で選ぶのが良いとされています。
- 小規模開発→スクラム
- 中規模→エクストリームプログラミング
- 大規模→ユーザー機能駆動型開発
ただ、アジャイル開発は柔軟性という考え方から複数の手法を合わせて使用するなども推奨しており、開発手法に関してはこれが正解と断言はできないものとなっております。
まとめ
今回はアジャイル開発について解説しました。
- アジャイル開発とは、システム開発手法の一つで、最低限の要件を決めたうえで小さな単位で開発・リリースを行い、ユーザーに成果物を納品し、成果物に対してレビューをもらう
- アジャイル開発の種類には、スクラム、エクストリームプログラミング、ユーザー機能駆動型開発がある
- アジャイル開発のメリットは、柔軟性と開発スピード
- アジャイル開発のデメリットは、ある程度顧客側の体制が必要であること、正確さやスケジュール管理が難しい
当社では、アジャイル開発やウォーターフォール開発など、ご希望に応じた手法でシステム開発が可能です。システム開発をお考えの企業様は、是非お気軽にご相談ください。