昨今「アジャイル型」を採用している開発チームが増えてきています。エンジニアの皆さんが「アジャイル開発」と聞いたら、気になるのはやはりメリットとデメリットなのではないでしょうか?今回はそんなアジャイル開発のメリット・デメリットについて、テスト会社ならではの視点から分かりやすく解説してきます。
アジャイル開発の特徴とは?
「アジャイル開発ってそもそもなんだろう?」そんな疑問を持つ人は少なくないでしょう。アジャイル開発とは細かな機能単位に対して開発サイクルを、1週間から1か月程度の短い期間でくり返していく開発手法を指して使われるものです。もっと深く掘り下げると「アジャイルソフトウェア開発宣言」という文書のなかで以下のような考え方をする開発手法を「アジャイルソフトウェア開発」と呼んでいます。
【アジャイルソフトウェア開発】
- プロセスやツールよりも個人と対話を
- 包括的なドキュメントよりも動くソフトウェアを
- 契約交渉よりも顧客との協調を
- 計画に従うことよりも変化への対応を
ここから分かるように、「大事なのはユーザーのニーズに合わせて柔軟に対応すること」という価値観が根っこにある開発手法がアジャイル開発です。みなさんがアジャイル開発の特徴ってなんですか?と聞かれると、こんなものがパッと思いつくはずです。
【アジャイル開発の特徴】
- 短い開発サイクルによるすばやい機能リリース
- チームの規模に合わせた適切なサイクル設定
- 要望や状況に合わせて柔軟に仕様変更を行う
こういった特徴は、先ほど紹介した価値観に則した開発をおこなうための具体的な手法の部分といえるでしょう。サービス開発において「ユーザーのニーズに応える。」という価値観は外せないものであることは間違いありません。開発に関わるエンジニアのみなさんは表面上の特徴だけでなく、根底にあるものも意識してみてください。同じ作業内容でも方針や出来上がるものに変化が見られるかもしれません。
バルテスのサービスがわかる
テストアウトソーシング基本ガイドブック
アジャイル開発時のメリットを「テストの視点」で考えてみよう
メリット・デメリットは特徴に付随するものといっていいでしょう。まずは先ほど挙げた特徴をもとに、メリットから考えていきたいと思います。
【アジャイル開発のメリット】
- 短い開発サイクルによるすばやい機能リリース
- チームの規模に合わせた適切なサイクル設定
アジャイル開発ではスプリントと呼ばれるリリースまでの一連のサイクルが1~2週間程度で進んでいきます。しかしどんなプロジェクトでも同じ期間というわけではありません。プロジェクトの規模や開発対象の特性は重要です。またエンドユーザーになる顧客との関係性に応じて、適切と思われる期間を各チームが独自に決定して開発を進めています。こういった短いサイクルから生まれるメリットは、発生した不具合やユーザーからの要望への対応が早い点です。ウォーターフォール型の開発では要件定義~リリースまでをかっちりと決まった期間で行うことが一般的です。
つまりユーザー側から上がってくる不具合や要望に対して、アップデート版のリリースという形で対応するまでになかなかのラグがあったわけです。アジャイル開発ではその点を解消できており、優先度の高い不具合は次回のスプリントにまぜこむことで、1~2週間程度でユーザーに対して不具合の解消が実現できます。また新規のシステム開発についてもミニマムでの初回リリース後に定期的なアップデートを行っていくことができます。つまり、すばやいビジネススタートができるという経営的な側面からのメリットもあります。
- 要望や状況に合わせて柔軟に仕様変更を行う
この特徴からは発生する手戻りが減るというメリットが考えられます。アジャイル開発では短いサイクルを回していく中で、ユーザーへより良いプロダクトを届けるため仕様の変更が発生する場合があります。ウォーターフォール型の開発であれば話が違います。こういった仕様の変更を行うには、各工程を少なくない工数をかけて再度仕様を検討する必要があります。しかしアジャイル開発では仕様の変更手順が変わらずとも、手戻りとして遡らなければならない箇所が少なくて済みます。
イテレーション内のフィーチャー検証や、リリース前のプロダクト品質テストをサポート
アジャイル開発テスト支援サービス
特徴はデメリットにもなる! 気をつけたいポイント
アジャイル開発にはメリットばかりではなく、デメリットも当然あります。デメリットにもき気をつけて取り組んでみましょう。
【アジャイル開発のデメリット】
- ドキュメントの作成が追い付かない
開発スピード・開発サイクルを意識するあまりドキュメントの作成が間に合っていないプロジェクトがしばしば存在します。またそのようなプロジェクトに限って一部のメンバーに頼り切った、いわゆる属人化が起きている場合が多いでしょう。アジャイル開発においてもドキュメント作成は重要です。「担当者が休みなので」といった理由で作業が止まってしまうといった案件は、健全な状態とはいえないですよね。ドキュメントの作成を行わないと属人化が加速し、ドキュメントの作成を行うタイミングもどんどん失われていきます。そしてまた属人化が、、、といった具合に、負の連鎖が発生しやすく危険度の高い状態が生まれやすいのがデメリットといえます。
対応策としては早い段階でチーム全体が問題意識をもち、ドキュメントの作成をオペレーションとして組み込むなどの地道な対応を行うことが大切です。また作業を適切に切り分けて外部ベンダーを利用するといった場面でも威力を発揮するでしょう。実際、弊社がご支援している案件において、自社完結の開発を行うよりも低コストで済んだといった実例もあります。
- スケジュール管理が難しい
アジャイル開発ではユーザーストーリーごとにスケジュールを行う場合が多いです。しかし仕様変更やユーザーからの追加要望など様々な要因が差し込まれると、スケジュールをコントロールするのが難しくなってしまうことがあります。特にスケジュールが厳しくなってくると、十分な検証期間が取れないままリリースを行ってしまいます。そして重大な不具合を取りこぼして、大きな損害を発生させてしまうことが想定されます。第三者検証の視点から見ると、アジャイル開発ではこういったコントロールの難易度が高いことから、テストまで手の回っていないプロジェクトが多くあるのも事実です。
開発メンバーがテストの作成まで行った場合、確認内容に偏りが生じたり、テストそのものに抜け漏れが発生してしまったりすることが多々あります。また開発メンバー自身の確認や、チームメンバー同士での確認は心理的な要因で対応そのものに甘さが生じてしまうものです。スケジュールが対策としてはスケジュール管理専門のメンバーを立てることや、アジャイル開発の経験があるプロジェクト管理者をアサインする方法があります。
まとめ
今回はアジャイル開発のメリット・デメリットをアジャイル開発の特徴を踏まえながら考えてみました。他の開発手法にはない「すばやさ」や「柔軟さ」といったメリットは、大きなアドバンテージを持つ一方で、「ドキュメントの作成不足に陥りやすい」「コントロールの難易度」などといったデメリットもありました。そんなアジャイル開発は、ユーザーに対してより良いプロダクトを提供することを目的に始まった開発手法です。デメリットの適切な対処法さえ理解して処理できれば、変化の激しい現代において一番妥当な開発方法ともいえるはずです。本記事が皆様のアジャイル開発の運用のヒントになれば幸いです。
当サイトでは、テスト技法を学びたい方、アジャイル開発やマイグレーションのテスト手法について知りたい方、テストアウトソーシングサービスに興味のある方へ、ダウンロード資料を多数ご用意しております。ぜひダウンロードいただき、資料をご活用ください。