CI/CDやDevOpsとセットで語られることが多いアジャイル開発とは、どのようなものでしょうか。
アジャイル開発の意味
アジャイル(Agile)とは「素早い」というような意味の言葉です。アジャイル開発と言った場合、短期間の開発工程を(素早く)繰り返していく開発手法を指します。従来のウォーターフォール型の開発手法が、設計から開発、そして運用までのサイクルが長いことと対比して、仕様変更等の要求に柔軟に対応できることなどがメリットとして挙げられます。
より詳細については、アジャイルソフトウェア開発宣言や、アジャイルソフトウェアの12の原則なども是非読んでみてください。
アジャイルソフトウェア開発宣言
アジャイルソフトウェアの12の原則
スクラム開発
アジャイル開発には、具体的な開発手法がいくつかありますが、最も有名なのがスクラム開発でしょう。その名の通り、ラグビーのスクラムからその名前が取られています。特徴として、短期間の「スプリント」を繰り返して開発を進めていく手法が採られています。
スクラムの詳細については、様々な情報がありますが、スクラムガイドは読んでおくとよいでしょう。
スクラムガイド Webサイト
スクラムガイド 日本語版PDF
アジャイル開発のメリットとデメリット
システムの肥大化や、ビジネスのニーズの変化に素早くシステムが対応する必要性が高まることで、アジャイル開発を実践するケースが増えていますが、当然アジャイル開発も万能ではありません。メリットとデメリットをきちんと認識しておく必要があるでしょう。
アジャイル開発のメリット
あらためて言うまでもありませんが、システムに対するニーズに素早く対応しやすいのがアジャイル開発のメリットです。開発したプロダクトをリリースすることを重視するので、実際に動いているものを見ながら修正を加えていくことができるのがメリットでしょう。
ウォーターフォール型の開発では、いつまで経っても動くものがリリースされない、開発してみたら必要としていたものと違った、ということが起きるとやり直しなどの無駄が大きくなります。
アジャイル開発のデメリット
ウォーターフォール型の開発では、設計段階で開発工数などの見積もりもきちんと行うため、スケジュールやコストなどの見通しが立てやすくなります。特に企業は予算ありきで動くため、開発計画の立案や実行がしやすいメリットがあります。
一方でアジャイル開発では、そのような計画や実行に懐疑的な立場にたっているので、スケジュールやコストなどを最初から全体的に確定させることは難しくなります。システム開発を外注に頼ることが多い企業では、予算化の面でアジャイル開発に取り組めない、というケースもあるのではないでしょうか。