【アジャイル開発とは】特徴と3つの開発手法、メリットとデメリットを解説
ソフトウェアの開発は、その種類や用途、プロジェクトの規模などによってそれぞれ最適な手法が異なります。ウォーターフォール開発、プロトタイプ開発、スパイラル開発、アジャイル開発などといった手法がよく聞かれますが、プロジェクトに沿った最適な手法を用いた開発がなされない場合、工数や開発費に大きな影響を及ぼしてしまうこともあります。
ここでは、ソフトウェア開発における代表的な手法の一つである「アジャイル開発」について、そのメリットやデメリット、開発時の注意点などを紹介します。
アジャイル開発とは
アジャイル開発とは、2000年以降に登場したソフトウェア開発手法の一つです。小さなサイクルを回しながら開発を行うアジャイル開発は、従来型のウォーターフォール開発と比較して開発期間を大幅に短縮できる可能性を持ちます。
アジャイルソフトウェア開発宣言
アジャイルソフトウェア開発宣言とは、アジャイル開発手法を支持する著名人らによって2001年に公開された、アジャイル開発の理念とも言うべき内容を示した宣言です。その全文を引用します。
「アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
©2001, 上記の著者たち
この宣言は、この注意書きも含めた形で全文を含めることを条件に
自由にコピーしてよい。」
アジャイル(Agile)は「すばやい」「俊敏な」といった意味を持つ言葉です。顧客満足度の高いソフトウェアを早く継続的に提供することが、アジャイル開発の一番の目的となります。
ここに名を連ねた17人は、従来型のソフトウェア開発とは異なる手法でのソフトウェア開発を当時実践していた開発者たち。彼らがソフトウェア開発を行ううえで重視するマインドセットが、このアジャイルソフトウェア開発宣言です。
ウォーターフォール開発との違い
アジャイル開発では、反復(イテレーション)とよばれる短い開発期間を繰り返します。小さく限られた機能のソフトウェアから開発を始め、定期的にゴールを設定しながら必要な機能をつぎ足し、改良していく開発手法です。反復の期間ごとにソフトウェアを改良していく開発手法であるため、継続して提供、改善をしていくようなサービスに向いています。反面、最終的なゴールを決めて大規模開発をする場合には向いていないと言われています。
一方、ウォーターフォール開発は従来型とも呼ばれるソフトウェア開発手法です。水が流れるように上流工程から下流工程へ進んでいくため、この名がつけられています。定められた機能を決まった納期で実現するのに向いているといわれる開発手法です。ただし、一度落ちた水は上に向かっては進まないのと同じで、後から出た仕様変更などには強くありません。
アジャイル開発の特徴と3つの開発手法
アジャイル開発は迅速かつ適応性の高いソフトウェア開発手法の総称で、数多くの開発手法が生み出されてきました。その中でも代表的なもの3つについて記載します。
スクラム
アジャイル開発では最も有名な手法です。集められたメンバーが協力し、チームとなって推進します。計画立案から進行管理、動作確認などをメンバー主導で行うため、チーム内のコミュニケーションがもっとも重視されます。コミュニケーションの不全が生じると、機能の不具合や納期遅延につながるリスクがあります。
スクラムではスプリントという短い期間を区切り、スプリントごとに開発を完成させながら、その繰り返しでプロジェクトを推進します。プロダクトバックログというプロジェクトで実現すべき価値とその優先順位の一覧を持ち、スプリントごとにどこまでを実現するかを定めて開発を行います。スプリントでは、スプリントバックログというタスクリストを定め開発範囲を規定します。
エクストリーム・プログラミング(略:XP)
計画の順守より変更に対応する柔軟性を重視する開発手法です。技術面を重視するため、プログラマー主導の開発手法とも言われます。「コミュニケーション」「シンプル」「フィードバック」「勇気」の4つの価値を共有することが推奨され、特に仕様や設計の変更に立ち向かう「勇気」が重視されます。
また、継続的なプロダクトの成長に主眼を置いた開発手法とも言われており、イテレーション(反復)と呼ばれる設計、実装、テストの開発工程を繰り返しながら開発を行います。開発においては、テスト駆動開発、ペアプログラミング、リファクタリング、YAGNI(必要なソースコードのみを記述する)といった手法を取り入れています。
ユーザー機能駆動開発(略:FDD)
適切な間隔でソフトウェア(機能)の提供を繰り返す開発手法です。顧客にとっての機能価値(feature)という観点で開発が進められます。そのため、最初にビジネスモデリングを実施し、ユーザーのビジネスの「見える化」を行います。モデルに対してマイルストーンを設定し、短期の開発を反復しながら、適切な間隔でユーザーに機能を提供していくことが特徴です。
アジャイル開発のメリット
ソフトウェア開発における重要課題の一つである納期短縮を実現できる点がアジャイル開発の魅力です。その詳細を記載します。
文書作成を最小限にできる
対面のコミュニケーションによる意思疎通と実際に動くソフトウェアを進行管理の尺度とすることで、作成される文書の量が減らせます。従来型の開発手法で大きな時間とコストをかけていたドキュメントを減らすことで、短納期、低コストにつなげます。
(※アジャイル開発においてドキュメントの作成を否定するものではありません。必要なドキュメントは作成し、不必要となるドキュメントの削減を行います。)
従来の開発手法と比較して、納期を短縮できる
詳細な仕様の策定や進行計画などの上流工程、文書作成の工数が削減されます。複数の反復を行っても、結果として従来型の開発手法より納期を短縮できる場合があります。
手戻りする工数が少ない
開発対象を最小化しているため、不具合が発生した際の手戻りが少なくなります。影響範囲が少ないうちに不具合に対処できるため、以降の開発における同様の機能作成の際に不具合対応の経験を活かすことが出来ます。
顧客のニーズを取り入れやすい
仕様変更や機能追加に柔軟に対応でき、開発途中でも顧客のニーズを取り入れやすくなります。ソフトウェア開発では実際にソフトウェアを使ってみてから要望や意見が出ることも多く、その声をソフトウェアに取り込めることが顧客満足につながります。
アジャイル開発のデメリット
アジャイル開発についてはメリットだけではなく、デメリットも存在しています。それらを確認し、適用時の検討事項としましょう。
プロジェクトの方向性がブレやすい
詳細な仕様を決めずに着手するため、顧客ニーズに応えて改善を繰り返し、仕様の追加・変更が重なって、プロジェクトが当初の開発計画から大幅に変わってしまうことが考えられます。終わらない改善のループが発生し、コストの超過が発生することもあります。
納期遅れが生じやすい
チーム単位で「開発~リリース」の工程を反復するため、全体像としてのスケジュールや進捗状況が把握できなくなり、全体的な納期に間に合わなくなるケースがあります。初期に厳密な進行スケジュールを設定しないことが進行管理の難しさにつながり発生するトラブルです。
何でもOKではない?アジャイル開発
アジャイル開発の魅力は納期を短縮できることと、仕様の変更や機能追加がしやすい点にあります。そのため、トレンドへの迅速な対応が求められるWebサービスやスマートフォンアプリの開発には適しています。変化に強い開発手法と言ってもよいでしょう。
逆にアジャイル開発が向かないプロジェクトとしては、基幹系システムなどがあげられます。段階的な機能追加で変化に対応するより、定められた仕様と納期を厳守してリリースすることが求められるからです。
開発する対象や顧客のニーズに合わせて、最適な開発手法を選択する検討する必要があります。そのため、プロジェクトの特質にあわせて、アジャイルとウォーターフォールモデルの手法を併用する企業もあるのです。
アジャイル開発が適しているプロジェクト
アジャイル開発は、リーンスタートアップとの相性が良い開発方法です。リーンスタートアップとは、コストをかけず最低限のサービスでスモールスタートし、顧客の要望、反応をサービスに反映していくマネジメント手法。小さい単位で開発を行い繰り返しで改善していくアジャイルの手法と非常にマッチしています。
アジャイル開発をする際の注意点
最後に、アジャイル開発をする際の注意点をご紹介します。
プロジェクトの目的を明確化にする
アジャイル開発の特徴として、全体的なゴールが定まっていないままでもプロジェクトを推進することができる点が挙げられます。これはメリットともなりますが、企業の業務としてはデメリットとなり得ることもあります。明確なゴールや目標を立てていなければ、コストを垂れ流しながらどちらに進んでいるともわからないプロジェクトを推進し続けることになる可能性があるからです。そこに利益が生まれるかどうかはわかりません。
また、アジャイルはチームで取り組む開発手法です。メンバー間の積極的な意思疎通があって初めてスムーズに開発が進行します。半面、プロジェクトの目的が明確になっていなければ、メンバー間での意識の共有はできません。
チームとしてプロジェクトを推進する
アジャイルでは、チームとして最終的なアウトプットを実現します。お互いが持つスキルを有効に活用し、チームとしてプロジェクトに取り組む必要があります。足りない部分を補い合いながら柔軟に課題に対応していく体制が必要なのです。
また、アジャイルでの開発をアウトソースする場合は、発注元の担当者もそのチームの一員としての自覚を持ち、当事者として顧客の意向を調整する役割を果たさなければなりません。
まとめ
開発手法の選択の基準は企業やプロジェクトによってさまざまです。案件の特性、企業の体制、実績の有無などが考慮されて選ばれます。したがって、アジャイル開発での仕事をしたい、経験を積みたいと考えて求人を探しても、希望に見合った求人は見つかりづらいかもしれません。
そんな場合には、転職エージェントを利用して企業の細かな情報まで提供を受け、アジャイル開発のできる転職先を探すのが近道となりそうです。マイナビエージェントは、IT・Web業界の転職市場に精通した「キャリアアドバイザー」と、企業への営業担当として各企業と太いパイプを持つ「リクルーティングアドバイザー」がチームとなり、あなたが本当に求める転職先のご紹介や、応募書類の作成、面接対策、給与交渉」など、あなたの転職活動をすべてにわたってサポートします。エンジニアのキャリアチェンジ、キャリアアップを目指す際には、ぜひご利用をご検討ください。
ライター
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから