アジャイル開発とは:アプリ製作にも適した開発方法のまとめ
アジャイル開発とは、イテレーション(短期間の工程)を重ねてプロジェクトを進めていくソフトウェアの開発方法です。
メリットは修正や仕様変更が容易なこと。反面、プロジェクトの全体像が見えにくいというデメリットもあります。管理ツールを活用し、計画的に運用する必要性がありますが、ウォーターフォール型開発と違ってスピード感のある開発が可能です。
本記事ではアジャイル開発とウォーターフォール開発との違いを解説し、主な開発方法についてまとめました。
アジャイル(Agile)には「機敏な」、「頭の回転が早い」といった意味があり、その命名の通りスピーディでフレキシブルな開発方法として知られています。
おおよそ、ソフトウェア開発計画というものは開発期間が決まっていますが、短い期間の開発工程を進めていく中で計画の変更も発生します。
顧客と打ち合わせを繰り返してコンパクトなテストと実装を何度もおこなうことにより、開発時間を短縮させているのが主な特徴です。
アジャイル開発はソフトウェア開発において柔軟性が高く、顧客を巻き込んで意見を聞きながらの開発となるため、要望のソフトに近づけやすいのです。
しかし、アジャイル開発についてよく知るためには、アジャイル開発以前に主流だったウォーターフォール開発について知っておく必要があります。
顧客へのヒアリングを何度もおこなうアジャイル開発とは異なり、ウォーターフォール開発は、一度プロジェクト完了日や仕様について決めると、計画変更されることはほぼありません。
「ウォーターフォール(water fall)」という名前は、プロジェクトの進む方向が一方通行である、つまり下流の水が上流へ戻らないことに由来しています。
途中で仕様変更をしてはならない事業や、長期のプロジェクトに関しては、アジャイル開発よりもこのウォーターフォール開発の方が適しているケースもあります。
コストや着手期間よりも品質を何より重視するため、厳格に定めるべきプロジェクトは、現在でもこのウォーターフォール開発によるものがあります。
ウォーターフォール型は、開発においてすべてソフト開発会社に一存したいという企業に向いています。
このイテレーションを繰り返すことでアジャイル開発は進められます。
大元の設計書がありそれに従って設計を進めていきますが、ソフトの使いやすさは顧客にしかわからないところです。
会社が異なれば行う業務や業務の進め方も異なるため、一様に似たようなソフトをどの会社にも適用しようとしても使いやすさという点では意見が分かれるでしょう。
そこで、アジャイル開発によって顧客と逐一相談しながら開発を進めていきます。この方法を用いることで、開発段階で発生する小さな使いづらさを解消することにつながり、ソフトが完成した後に発見される大きな失敗を避けることができます。
ソフト開発においては、各工程について書かれたドキュメントの作成が必要になります。どのような項目について記述するかは企業によって異なりますが、ソフト開発において顧客と作業工程や優先順位を共有するために用いられます。
またドキュメントを保管しておくことで過去にどのような作業を誰が行ったのかという記録として残すことができます。ドキュメントの作成ポイントやサンプル例などはこちらのページで詳しく解説されています。
従来のウォーターフォール開発では、当初に定めた計画を遵守する必要があるため、ある一点に不具合やミスが起こると、かなり前の作業工程まで戻って修正しなければならないケースもあります。
その点、アジャイル開発は短いスパンでテストと実装を重ねるため、発生したトラブルはその場その場で修正をしていくことが可能です。
完了までエンドユーザーが開発に関わらないのが一般的なウォーターフォール開発とは違い、実際に顧客が操作性を試しながら計画を練っていくこともしばしば。
実際に顧客が開発物を試し、出てきた変更や新たなニーズに対応することで、顧客満足度の高い成果物を開発することができます。
計画、タスクの割り振り、進捗状況のチェックを可視化するソフトウェア。デスクワークだけではない多様なワークスタイルにも活用可能なアプリ「Jira Mobile」もリリースされています。
無料で使えるオープンソースのプラットフォームです。日本語に対応しており、画面が美しくシンプルなのが特徴です。
シンプルで使いやすいアジャイルプロジェクト管理ツール。すべて英語ですが、操作性が高くWebブラウザで操作可能であること、httpsで接続可能なこと、非営利目的であれば利用料金フリーで使用できることなど様々な利点があります。こちらの記事ではPivotal Trackerについて使い方も含め詳しく説明されています。
これには、小さな作業を積み重ねていくゆえのデメリットがあります。それが「コンセプトのブレ」です。
ポイントごとの修正や仕様変更が容易な分、当初の計画からどんどん乖離してしまう恐れがあるのです。
無尽蔵な修正でプロジェクトが立ち行かなくなる事態とならないよう、変更すべきでないプロジェクトの根幹と、フレキシブルな部分をはっきりとさせておく必要があります。
細部の修正に気を取られていてプロジェクトの全容が崩れてしまったり、仕様変更をしすぎて予定していた納期までに完了できないということは少なくありません。
当初からしっかりと計画を立てて着手するのが成功の鍵です。
どのようにスクラムを進めるかについては、ソフトウェア開発者向けにオンラインのスクラム研修を提供している会社もあるので、適宜そのようなサービスを利用することもできます。
スクラム開発ではスプリントと呼ばれる短い作業計画をひとつの期間として繰り返していきます。スプリントとは、計画・開発作業・まとめ・レビュー・調整までの期間すべてを指します。
仕様変更への素早い対応、ソースコードの重視といった特徴があります。プログラミングとテスト結果を重視し、少人数でも開発がしやすく、次々に要求の変わるシチュエーションで特に力を発揮する手法です。
常に修正・再設計を行なっていく手法のため、非常にスピード感のある開発が可能になります。
アジャイル開発についての書籍は書店にたくさん並んでいるため、アジャイル開発について基本的な知識を一通り身につけたいのであれば、こちらの本がおすすめです。
柔軟でプロジェクト中途での仕様変更にも対応できるアジャイル開発は、アプリ開発においても威力を発揮することでしょう。
企業内でも、一部のサービスやプログラムは長期的視点でウォーターフォール開発、スピード感を重視するアプリはアジャイル開発など、使い分けが重要になってくる可能性があります。
そのため、互いのメリットとデメリットは、相反的な関係にあるととらえることもできます。
アジャイル開発の特性とメリットを知ることで、顧客のニーズに即したプロジェクトの展開が可能になります。
ウォーターフォール型のように開発元がほぼすべての開発作業を行うのと違い、顧客とコミュニケーションをとりながらフィードバックをもらい開発を進めていくため、顧客の満足度が高いソフトを作り上げることができます。
アジャイル開発は短い計画を繰り返していくため時には全体像がわからなくなりがちですが、常に仕上がりのソフトの完成図をイメージして顧客が何を求めているのかを意識することが肝心です。
メリットは修正や仕様変更が容易なこと。反面、プロジェクトの全体像が見えにくいというデメリットもあります。管理ツールを活用し、計画的に運用する必要性がありますが、ウォーターフォール型開発と違ってスピード感のある開発が可能です。
本記事ではアジャイル開発とウォーターフォール開発との違いを解説し、主な開発方法についてまとめました。
アジャイル開発の概要:ウォーターフォール開発との違い
アジャイル開発とは
アジャイル開発は、2001年に米国ユタ州でなされた「アジャイルソフトウェア開発宣言」からスタートし、現在にいたるまでおこなわれているシステムおよびソフトウェア開発の手法です。アジャイル(Agile)には「機敏な」、「頭の回転が早い」といった意味があり、その命名の通りスピーディでフレキシブルな開発方法として知られています。
おおよそ、ソフトウェア開発計画というものは開発期間が決まっていますが、短い期間の開発工程を進めていく中で計画の変更も発生します。
顧客と打ち合わせを繰り返してコンパクトなテストと実装を何度もおこなうことにより、開発時間を短縮させているのが主な特徴です。
アジャイル開発はソフトウェア開発において柔軟性が高く、顧客を巻き込んで意見を聞きながらの開発となるため、要望のソフトに近づけやすいのです。
しかし、アジャイル開発についてよく知るためには、アジャイル開発以前に主流だったウォーターフォール開発について知っておく必要があります。
ウォーターフォール開発とは
ウォーターフォール開発は、アジャイル開発が提唱される前にスタンダードだった開発方法です。顧客へのヒアリングを何度もおこなうアジャイル開発とは異なり、ウォーターフォール開発は、一度プロジェクト完了日や仕様について決めると、計画変更されることはほぼありません。
「ウォーターフォール(water fall)」という名前は、プロジェクトの進む方向が一方通行である、つまり下流の水が上流へ戻らないことに由来しています。
途中で仕様変更をしてはならない事業や、長期のプロジェクトに関しては、アジャイル開発よりもこのウォーターフォール開発の方が適しているケースもあります。
コストや着手期間よりも品質を何より重視するため、厳格に定めるべきプロジェクトは、現在でもこのウォーターフォール開発によるものがあります。
ウォーターフォール型は、開発においてすべてソフト開発会社に一存したいという企業に向いています。
アジャイル開発の開発方法
アジャイル開発は前述の通り、短期間の設計サイクルを回していく開発方法です。短期間での設計サイクル1回を、イテレーションと言います。このイテレーションを繰り返すことでアジャイル開発は進められます。
大元の設計書がありそれに従って設計を進めていきますが、ソフトの使いやすさは顧客にしかわからないところです。
会社が異なれば行う業務や業務の進め方も異なるため、一様に似たようなソフトをどの会社にも適用しようとしても使いやすさという点では意見が分かれるでしょう。
そこで、アジャイル開発によって顧客と逐一相談しながら開発を進めていきます。この方法を用いることで、開発段階で発生する小さな使いづらさを解消することにつながり、ソフトが完成した後に発見される大きな失敗を避けることができます。
ソフト開発においては、各工程について書かれたドキュメントの作成が必要になります。どのような項目について記述するかは企業によって異なりますが、ソフト開発において顧客と作業工程や優先順位を共有するために用いられます。
またドキュメントを保管しておくことで過去にどのような作業を誰が行ったのかという記録として残すことができます。ドキュメントの作成ポイントやサンプル例などはこちらのページで詳しく解説されています。
参考:ThinkIT 第4回:アジャイルにおけるドキュメント作成ポイント
https://thinkit.co.jp/article/22/4/
アジャイル開発のメリット
アジャイル開発のメリットその1:短期間で修正可能
アジャイル開発最大のメリットは、短期間の工程において細かい点をその都度修正できることです。従来のウォーターフォール開発では、当初に定めた計画を遵守する必要があるため、ある一点に不具合やミスが起こると、かなり前の作業工程まで戻って修正しなければならないケースもあります。
その点、アジャイル開発は短いスパンでテストと実装を重ねるため、発生したトラブルはその場その場で修正をしていくことが可能です。
アジャイル開発のメリットその2:コミュニケーションによるフィードバック
短期間の設計サイクルをイテレーションといいますが、このイテレーションごとに開発チームと顧客がフィードバックを重ねられるのが2つめのメリットです。完了までエンドユーザーが開発に関わらないのが一般的なウォーターフォール開発とは違い、実際に顧客が操作性を試しながら計画を練っていくこともしばしば。
実際に顧客が開発物を試し、出てきた変更や新たなニーズに対応することで、顧客満足度の高い成果物を開発することができます。
アジャイル開発のメリットその3:プロジェクト管理ツールで進捗状況を共有できる
全体を俯瞰しづらいのがアジャイル開発の難点ですが、プロジェクト管理ツールで視覚化すれば、チームの動きを共有できます。主なプロジェクト管理ツールには、次のようなものがあります。ソフトウェア開発ツール「Jira Software」
計画、タスクの割り振り、進捗状況のチェックを可視化するソフトウェア。デスクワークだけではない多様なワークスタイルにも活用可能なアプリ「Jira Mobile」もリリースされています。
TAIGA
無料で使えるオープンソースのプラットフォームです。日本語に対応しており、画面が美しくシンプルなのが特徴です。
Pivotal Tracker
シンプルで使いやすいアジャイルプロジェクト管理ツール。すべて英語ですが、操作性が高くWebブラウザで操作可能であること、httpsで接続可能なこと、非営利目的であれば利用料金フリーで使用できることなど様々な利点があります。こちらの記事ではPivotal Trackerについて使い方も含め詳しく説明されています。
参考:atmarkIT いまアツいアジャイルプロジェクト管理ツール9選+Pivotal Tracker入門この他にも様々なアジャイルプロジェクト開発ツールがあり、どれが使いやすいかは使ってみないとわからないため、比較しながら使ってみるのも良いかもしれません。
http://www.atmarkit.co.jp/ait/articles/1205/14/news150.html
参考:Pivotal Tracker
https://www.pivotaltracker.com
アジャイル開発のデメリット
アジャイル開発のデメリットその1:コンセプトのブレ
アジャイル開発が、イテレーションを繰り返しておこなうものというのは先に述べました。これには、小さな作業を積み重ねていくゆえのデメリットがあります。それが「コンセプトのブレ」です。
ポイントごとの修正や仕様変更が容易な分、当初の計画からどんどん乖離してしまう恐れがあるのです。
無尽蔵な修正でプロジェクトが立ち行かなくなる事態とならないよう、変更すべきでないプロジェクトの根幹と、フレキシブルな部分をはっきりとさせておく必要があります。
アジャイル開発のデメリットその2:全体像がとらえにくい
木を見て森を見ずという言葉は、アジャイル開発のもう一つのデメリットを的確に表現しています。細部の修正に気を取られていてプロジェクトの全容が崩れてしまったり、仕様変更をしすぎて予定していた納期までに完了できないということは少なくありません。
当初からしっかりと計画を立てて着手するのが成功の鍵です。
アジャイル開発の主な手法
手法1:スクラム(報告会)
アジャイル開発においてポピュラーな手法に「スクラム(報告会)」があります。メンバーに役割を与え、仕事を分担して計画を進めていきます。主な役割は次の通りです。- プロダクトオーナー:プロジェクトの方針を決める。責任者として情報共有や予算、計画の管理をおこなう。
- スクラムマスター:調整役。プロジェクトを円滑に進められるように各所の調整をおこなう。
- 開発メンバー:実際にソフト開発をおこなう要員。
スクラムを行う利点
スクラムを行う利点は計画通り作業が進められているか、進捗状況はどうかといった報告・確認の場が定期的に持てる点です。 また、改善点も出すことでより良いソフト開発をチーム全体で目指していくという目的があります。どのようにスクラムを進めるかについては、ソフトウェア開発者向けにオンラインのスクラム研修を提供している会社もあるので、適宜そのようなサービスを利用することもできます。
スクラム開発ではスプリントと呼ばれる短い作業計画をひとつの期間として繰り返していきます。スプリントとは、計画・開発作業・まとめ・レビュー・調整までの期間すべてを指します。
手法2:XP
チーム全体で取り組む「スクラム」よりも、スピード感を重視した開発手法が「XP(Extreme Programing)」です。仕様変更への素早い対応、ソースコードの重視といった特徴があります。プログラミングとテスト結果を重視し、少人数でも開発がしやすく、次々に要求の変わるシチュエーションで特に力を発揮する手法です。
常に修正・再設計を行なっていく手法のため、非常にスピード感のある開発が可能になります。
アジャイル開発についての書籍は書店にたくさん並んでいるため、アジャイル開発について基本的な知識を一通り身につけたいのであれば、こちらの本がおすすめです。
参考:Amazon
わかりやすいアジャイル開発の教科書、SBクリエイティブ、西河 誠・前川 直也・細谷 泰夫 著
https://www.amazon.co.jp/dp/B00GJGOPLO/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
アジャイル開発によるアプリ開発
アジャイル開発は、流行り廃りのスピーディなアプリの現場においても、そのメリットが歓迎される開発方法です。店舗や企業が独自サービスのためのアプリをリリースすることも当たり前になりつつある昨今。柔軟でプロジェクト中途での仕様変更にも対応できるアジャイル開発は、アプリ開発においても威力を発揮することでしょう。
企業内でも、一部のサービスやプログラムは長期的視点でウォーターフォール開発、スピード感を重視するアプリはアジャイル開発など、使い分けが重要になってくる可能性があります。
まとめ
アジャイル開発は、それまで主流だったウォーターフォール開発の正反対ともいえるコンセプトを持つ開発の手法です。短期間のスプリントを繰り返し、細かい問題点を都度解消していくソフトの開発方法を取ります。そのため、互いのメリットとデメリットは、相反的な関係にあるととらえることもできます。
アジャイル開発の特性とメリットを知ることで、顧客のニーズに即したプロジェクトの展開が可能になります。
ウォーターフォール型のように開発元がほぼすべての開発作業を行うのと違い、顧客とコミュニケーションをとりながらフィードバックをもらい開発を進めていくため、顧客の満足度が高いソフトを作り上げることができます。
アジャイル開発は短い計画を繰り返していくため時には全体像がわからなくなりがちですが、常に仕上がりのソフトの完成図をイメージして顧客が何を求めているのかを意識することが肝心です。