技術的負債の放置、リリース直前に炎上――アジャイル開発で陥りがちな問題とその原因とは:アジャイル開発における品質管理(1)(2/2 ページ)
少人数、短期間の開発を繰り返すアジャイル開発では、どのようにすれば品質を保つことができるのだろうか。本連載では、アジャイル開発における品質管理の手法を解説する。初回は、アジャイルテストの基本的な考え方と戦略について、2回に分けて解説する。前編となる今回はアジャイル開発において発生しがちな問題とその原因について。
リリースに必要なタスクをまとめた「リリーススプリント」に潜む危険
ここまでの内容は、スプリントの中で作成する機能について考慮してきました。しかし、システムを構築する上で必要なテストは、機能に関するものだけではありません。例えば、機能間の連携が必要な箇所は、複数の機能をまとめてテストし、インタフェースの整合性を検証する必要があります。また、機能をまたぐユーザー操作を想定した、シナリオに沿って実施するテストも必要となるでしょう。さらには、非機能テストと呼ばれる、性能やセキュリティ、ユーザビリティに関するテストも実施する必要があります。
その他、テストに限らず、「本番環境の整備」「リリース用のファイルの構築」「マニュアルの作成」といった、スプリント内には収まらないタスクが存在します。
そういった「スプリント内で実施しない」タスクはどうすればよいでしょうか。もちろん、やらないという選択肢はありません。よくある方法として、リリースのための作業をまとめて行う特別なスプリントを、リリースの直前に実施する、というものがあります。これを「リリーススプリント」などと呼ぶことがあります。
ただし、リリーススプリントを用意することがベストプラクティスとは言えません。リリーススプリントの問題点は大きく分けると2つあります。1つ目は、それらのタスクに対して正確な作業量の見積もりを行うことが難しいということ。そして2つ目は、その時点で大きな問題が判明した場合にコストや納期にも大きな影響を及ぼしてしまうということです。
なぜ作業量の見積もりが難しいかというと、技術的負債という考え方が関係してきます。開発を進める際には多かれ少なかれ、「やっておいた方がいいんだけど、時間がないから後回しにしちゃえ」という作業が発生します。このような、小手先でごまかして手を抜いてしまうことで発生する作業のことを「技術的負債」と呼んでいます。例えば、ソースコードが分かりにくかったり非効率だったりする場合に、動いているから取りあえずそれで完成としてしまうことがあります。あるいは、仕様書を修正せずにソースコードのみ修正したり、バグを改修する際に周辺部分の確認を行わずに修正完了としてしまったり、といったことなども技術的負債といえます。負債とはよく表現したもので、時間がたてばたつほど利子がつくようにそれを是正するコストが増えていきます。影響する範囲が広くなる、記憶している仕様が曖昧になるといったことがコスト増の原因です。そして、そのコストは技術的負債の量に応じて指数関数的に膨らんでいきます。
スプリント内で「完成」できなかった作業は時間がたつにつれ、その技術的負債の量に従って、リリーススプリント時に余計な工数が掛かってしまうということになります。そしてこれを正確に見積もるのは困難です。予想よりもスムーズに作業が進むかもしれませんし、予想外に時間がかかってしまうかもしれません。これが2つ目の問題点です。
順調に進む場合であればさほど問題はありません。ただ、そのようなことはめったにないでしょう。技術的負債が深刻化すると、リリース期限を延期するか、残業や人手を増やすなどしてリリース期限内に終わらせるかの2択となってしまいます。そしてどちらの場合にも開発チームへの負荷は非常に高くなります。つまり開発プロジェクトが炎上してしまうわけです。リリーススプリントのことを「バーンスプリント(Burn Sprint)」、つまり炎上スプリントと呼ぶこともあります。これはよい状況とは言えません。
この問題は、アジャイル開発のプロジェクトにおいていつでも発生し得るものです。つまり、事前に戦略を立てて対策を考えなければなりません。
前述のような問題を起こさないためには、アジャイル開発におけるテストの進め方をしっかりと押さえておく必要があります。後編では、品質に関してどのようにアプローチすればよいのかを解説します。
筆者紹介
江添 智之
クロス・ファンクショナル事業部 R&C部 マネージャー
Web系、エンタープライズ系、医療系などさまざまな開発業務にプログラマー、システムエンジニア、プロジェクトリーダーとして携わった後、バルテスにてテストエンジニア、コンサルタント業務に従事。現在は、主にテスト業務に関する研究開発および人材育成を担当。Scrum Alliance認定スクラムマスター、ディープラーニング検定(G資格)、ネットワークスペシャリスト、データベーススペシャリスト、JSTQB Advanced Level(テストマネージャ、テストアナリスト)など、ソフトウェアの開発およびテストに関する資格を多数取得。JaSST Kansai 実行委員。同社が運営するソフトウェア品質向上プラットフォーム「Qbook」の執筆を担当するなど、ソフトウェア開発に携わるエンジニアに対しての情報発信を積極的に行う。
畠田 健一朗
エンタープライズ品質サービス事業部 東日本ソリューション部 リーダー
前職では大手ERPベンダーの新規事業製品開発でアジャイル品質保証、テストの自動化業務などに数年間従事。2018年よりバルテスに参画。入社後は、エンタープライズシステムを中心に、アジャイル開発をはじめとする複数プロジェクトの品質マネジメント推進を担当。江添氏と同様、同社運営の「Qbook」で執筆を担当している。
Copyright © ITmedia, Inc. All Rights Reserved.