この記事では、アジャイル開発という手法が一体何なのか、その特性は何であるのか、具体的なやり方やメリット、デメリットについて、詳しく説明していくよ〜!
アジャイル開発とは
アジャイル(Agile)という言葉は、日本語に直訳すると「敏捷性」や「素早さ」を意味するの!
IT業界では特に「アジャイル開発」というフレーズでよく聞くよね!
これは、システムやソフトウェアを開発する際の一つの手法で、大きな単位で分割せずに、小さな部分ごとに作業を進めていく方法!
このような小さなステップごとに進める開発方法を取ることで、開発所要期間を大幅に短縮することが可能となるため、「アジャイル(敏捷性・素早さ)」と名付けられているの!
アジャイル開発は、各機能に対して要件定義から設計、開発、テスト、そしてリリースという一連のサイクルを繰り返すことで、全体のシステムやサービスを完成させていく手法。
アジャイル開発が登場する以前のソフトウェア開発の主流は、ウォーターフォールモデルに基づく開発だったの!
ウォーターフォール開発
ウォーターフォール開発とは、全体の計画や機能設計を最初に固定し、その後その計画に従って一方向に進めていく開発手法のこと!
この手法は、機械製造や造船業など、ソフトウェア開発だけでなく多くの分野で広く応用されている方法。
アジャイル開発の手法
アジャイル開発と一口に言っても、実際にはその中にはさまざまな手法が存在するの!
アジャイル開発の主要な手法として、次の6つがあるよ!
- .スクラム
- .エクストリーム・プログラミング(XP)
- .ユーザー機能駆動開発(FDD)
- .リーンソフトウェア開発(LSD)
- .カンバン
- .適応的ソフトウェア開発(ASD)
それぞれについて詳しく解説していくよ!
スクラム
スクラムはアジャイル開発の中でも特に有名な手法で、開発プロジェクトを進行させるためのフレームワークのこと。
スクラムという言葉はラグビーの戦術から取られており、チーム全体で一丸となって頑張るぞ〜!という意志を表しているよ!この手法では、チーム全体でのコミュニケーションが非常に重視されるの!
スクラムでは、各メンバーが自分たちで計画を立案し、開発の進行に問題がないか、作成した製品が正しく動作するかをチェックします。これにより、メンバー間のコミュニケーションが不足すると、進行中のイテレーション(繰り返しの一周期)で作成した製品のリリースができなかったり、リリースした機能が正しく機能しなかったりするといった問題が生じる可能性があるよ。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング、略してXPは、開始前の計画よりも開発途中での変更への対応力を重視する手法のこと!
XPでは、顧客の要望が変わる可能性を想定し、その変更に素早く対応します。そのため、開発初期段階では詳細な計画を立てず、顧客の要望を頻繁に確認しながら開発を進め、早期に動作するソフトウェアをリリースすることを目指します。
感情が急激に変わるメンヘラな女の子を相手にする男の子みたいな対応力!
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発、略してFDDは、実際に動作するソフトウェアを適切な感覚で繰り返す手法!
FDDでは、「フィーチャーリスト」と呼ばれる開発すべき機能のリストを作成し、それに基づいて各機能の計画、設計、構築を行います。
FDDでの開発は、顧客にとっての機能の価値(フィーチャー)を重視し、それに基づいて開発を進めます。そのため、開発を始める前にビジネスモデリングを行い、ユーザー側のビジネスを理解することが重要となります。
相手の価値を理解する心、まさにモテ男のことだ!どこにいるの〜
リーンソフトウェア開発(LSD)
リーンソフトウェア開発、略してLSDは、「リーン思考」をソフトウェア開発に適用した手法のこと!
リーン思考とは、製造工程から不必要なものを排除し、必要なものだけを残すという考え方で、「リーン」は「痩せた」「無駄のない」という意味を持ちます。
1980年代にトヨタ自動車が採用していた「生産する製品の数量を必要な分だけにし、発注する部品も必要な分だけにする」というリーン生産方式がソフトウェア開発にも取り入れられたの!
カンバン
カンバンは開発プロジェクトの進行状況を可視化することで管理を容易にする手法です。
カンバンは日本語で「看板」や「標識」を意味し、その名の通り視覚的な情報提供を通じて作業の流れを最適化します。この手法では、現在進行中の作業が完了したら、待機列から新たな作業を引き出して実行します。
わたしも彼氏募集のカンバン掲げた方がいいかしら。
適応的ソフトウェア開発(ASD)
適応的ソフトウェア開発、略してASDは、反復型と逐次型のアプローチを組み合わせた開発手法です。
反復型アプローチでは、各工程を繰り返し実行しながら製品を改善していきます。一方、逐次型アプローチでは、開発工程を機能や部品ごとに分割し、順序立てて作成していきます。これら二つのアプローチを組み合わせることで、より適応力のあるソフトウェア開発が可能になるの!
アジャイル開発の流れ
アジャイル開発は、以下のようなステップで進められます。
- リリース計画の策定
- 開発チームの結成
- 全体スケジュールのリストアップ
- いてレーションの実施
それぞれのステップについて、詳しくご説明します。
リリース計画
アジャイル開発では、ソフトウェアの計画段階において、詳細な仕様を固定するのではなく、ひとまず大まかな仕様と要求を決定します。これは、「開発途中で仕様や設計が変更することは普通のこと」という前提だからなんだよね!
このような計画法では、実装段階で問題が生じるリスクも存在しますが、一方で、仕様が固定されていないために、変更が生じたときでも柔軟に対応することができるの!
その結果、お客様の要望に最大限に応えることができるというのがメリットよ!
- プロジェクトで達成したい目標やゴール
- イテレーションの期間
- ベロシティ(作業能率)の算出
- ユーザーストーリー(要求事項)の優先順位や工数
開発チームの結成
リリース計画が決まったら、次に開発チームを組成します。ここで重要なのは、各メンバーの役割とその責任を明確に定めることです。
各メンバーが担当する役割や責任をはっきりさせておくことで、チーム内のコミュニケーションが活発になり、また、自分自身が何をすべきかが明確になります。
- プロダクトオーナー:開発する製品(アプリケーションやシステム)の全体的な方向性を決定します。
- スクラムマスター:開発作業がスムーズに進行するように、スケジュール管理やチーム内の調整を担当します。
- 開発者:具体的な開発作業を行います。
全体スケジュールのリスト化
次に、全体的なスケジュールをリスト化!
ここでは、短いイテレーションの期間で実施できる範囲に、プロジェクトを細かく分割してリスト化します。反復期間は通常、1週間から4週間程度に設定されます。
イテレーション
全体スケジュールのリスト化が完了したら、次に、イテレーションと呼ばれる繰り返しのサイクルを開始します!
イテレーションとは「反復」を意味し、小さな単位に分割された開発を「計画」→「設計」→「実装」→「テスト」の順番で進めていくよ!
これを一連のサイクルとして繰り返し、各機能を順次リリースしていきます。
アジャイル開発が適している事例と不向きな事例
近頃、ソフトウェア開発業界で注目を集めているアジャイル開発。しかし、その手法がすべてのプロジェクトで有効とは限りません。アジャイル開発が最適なケースと、そうでないケース、それぞれを具体例を交えてご紹介するよ〜!
アジャイル開発が最適なケース
アジャイル開発が特に力を発揮するケースは以下の3つが挙げられます。
- 仕様変更や追加が頻繁に起こる場合
- 要件の全体像が曖昧である場合
- クライアントが開発チームの一部として積極的に関与する場合
仕様変更や追加が頻繁に起こる場合
技術が急速に進化するモバイル業界などでは、開発途中で仕様の変更や追加がよく発生するの!
アジャイル開発はこうした状況に対応する柔軟性を持っており、リリース計画段階では厳密な仕様を決めず、途中での変更にも対応できます。そのため、このような業界やプロジェクトに対しては、アジャイル開発が最適なのよ!
要件の全体像が曖昧である場合
要件の全体像が曖昧なプロジェクトもアジャイル開発に適しています。ここで言う全体像が曖昧とは、要件定義が7割程度しか固まっておらず、残りはプロジェクトの進行状況に合わせて固めていくといったケースのこと!
プロジェクトの進行状況を確認しながら開発を進めるため、短期間での納品やレビューを繰り返すアジャイル開発が最適!
クライアントが開発チームの一部として積極的に関与する場合
従来のウォーターフォール開発では、クライアントの役割は主にシステムの最終チェックや経営層への連絡を担当するものだったの。しかし、アジャイル開発ではクライアントが開発チームの一員として、開発会社と共にプロジェクトを進める役割が求められるの。これによって、開発の現場がより透明性を持ち、開発のスピードも向上します。このようにクライアントが積極的に関与するプロジェクトは、アジャイル開発のメリットを最大限に活用できる!
アジャイル開発が適さないケース
一方で、アジャイル開発が適さないケースも存在します。以下に主な3つを挙げてみます。
- 開発メンバーが物理的に離れておりコミュニケーションが難しい場合
- 厳格なスケジュール管理が必要な場合
- 仕様変更の可能性がほとんどない場合
開発メンバーが物理的に離れておりコミュニケーションが難しい場合
アジャイル開発では、メンバー間のスムーズなコミュニケーションが必要不可欠です。そのため、開発メンバーが物理的に離れていてコミュニケーションが難しい場合、アジャイル開発は適していません。コミュニケーションが難しいと、ニーズの反映や開発の進捗が滞り、結果的に余計な時間やコストがかかるリスクが高まるの。
厳格なスケジュール管理が必要な場合
アジャイル開発は柔軟性が大きな特徴であり、それにより開発サイクルを繰り返しながら仕様変更を前提とすることができます。しかし、これは厳格なスケジュール管理が困難になるデメリットも生むため、スケジュール管理が重視されるプロジェクトには適してないよ。
仕様変更の可能性がほとんどない場合
アジャイル開発は、小単位で実装とテストを繰り返しながら開発を進める手法です。そのため、途中での仕様変更や追加が予想されるプロジェクトに適しています。しかし、仕様変更の可能性がほとんどないプロジェクトでは、アジャイル開発のメリットを活かすことが困難です。このようなケースでは、ウォーターフォール開発の方が適しているの。
アジャイル開発のメリットとデメリット
メリット
・後戻りの工数を抑えられる
・仕様変更に対応しやすい
・開発者の成長を促す
・サービス提供までの時間を短縮できる
デメリット
・開発の方向性がブレる
・スケジュールや進捗の把握が難しい
アジャイル開発に関するITパスポート試験の過去問!
Q:XP(エクストリームプログラミング)の説明として,最も適切なものはどれか。
ア:テストプログラムを先に作成し,そのテストに合格するようにコードを記述する開発手法のことである。
イ:一つのプログラムを2人のプログラマが,1台のコンピュータに向かって共同で開発する方法のことである。
ウ:プログラムの振る舞いを変えずに,プログラムの内部構造を改善することである。
エ:要求の変化に対応した高品質のソフトウェアを短いサイクルでリリースする,アジャイル開発のアプローチの一つである。正解:エ
正解は『要求の変化に対応した高品質のソフトウェアを短いサイクルでリリースする,アジャイル開発のアプローチの一つである』
「エクストリームプログラミング ( XP ) 」は、「プログラマーは人間である」という思想のもと、叩き台となるプログラムを早期に開発し、短いサイクルで頻繁にテストとリリースを繰り返すことで、対応力と生産性を高めてリスクを軽減する、アジャイル開発の先駆けよ!
XPでは、ソフトウェア開発に有益である要素を4つのカテゴリ、19のプラクティスとして定義している
「テストプログラムを先に作成し,そのテストに合格するようにコードを記述する開発手法のことである」テスト駆動開発にあたり、XPのプラクティスの1つなので誤り
「一つのプログラムを2人のプログラマが,1台のコンピュータに向かって共同で開発する方法のことである」ペアプログラミングにあたり、XPのプラクティスの1つなので誤り
「プログラムの振る舞いを変えずに,プログラムの内部構造を改善することである。」リファクタリングにあたり、XPのプラクティスの1つなので誤り
「要求の変化に対応した高品質のソフトウェアを短いサイクルでリリースする,アジャイル開発のアプローチの一つである」はXP(エクストリームプログラミング)にあたり、アジャイル開発の方法論の一つなので正解
ITパスポート試験をスマホで手軽に勉強!
「えろ勉」も戦略的に開発&運営しております。この記事が勉強になった!ためになったよ〜って思ったら、なんかアクションをお願い!!「えろの力で勉強するゲーム:えろ勉」
アジャイル開発で、スピーディーにアプリ開発をしていこう〜!