アジャイルとは
アジャイルおよびアジャイル開発とは、小さな単位で動くソフトウエアを作っていく考え方、あるいは、その方法論まで含めて表現する場合もあります。2020年ごろから、ソフトウエア開発だけではなく、経営にもアジャイルを取り入れる動きが見られます。
アジャイルの定義
2001年、著名なソフトウエア開発手法の提唱者17名がユタ州の山小屋に集まり、各手法に共通する信念をマニフェストとして記しました。これが、アジャイルの定義である「アジャイルソフトウエア開発宣言(アジャイルマニフェスト)」 ※ です。 マニフェストの中には、アジャイルソフトウエア開発の4つの価値と12の原則が書かれています。
- ※
アジャイルが登場した背景
従来のソフトウエア開発では、事前検討を重視した、重厚長大なアプローチをとっていました。しかしソフトウエア開発は予測が難しいため、うまくいかないプロジェクトが多くありました。予測困難になる要因として、2つの不確実性があります。
マネジメントの不確実性
1つ目はマネジメントの不確実性。どんな見積もり手法を用いたとしても、ソフトウエア開発にかかる時間を正確に算出することはできません。プロジェクトの初期段階では、実際の工数に比べ、4倍もの差が出ることもあります。そのため、従来型開発では予想外の工数の膨らみにより、品質の低下や納期の遅れが起こります。
一方、アジャイルではスケジュールを継続的に評価します。品質、コスト、納期を固定し、スコープ調整を行うことによってマネジメントの不確実性に立ち向かいます。
ビジネスの不確実性
2つ目はビジネスの不確実性。いくら自分たちが考える最高のプロダクトを作ったとしても、ユーザーに使ってもらえなければ価値はありません。そして、ユーザーに使ってもらえるかどうか判断するには、実際に使える状態にするしかありません。従来型開発のように、企画から市場リリースまでが半年~数年のスパンだと、ユーザーへの提供は年に1回がやっとでしょう。それだと、複雑かつ高速化しているビジネスのスピードについていけません。
アジャイル開発では、短い期間、小さな単位で開発していきます。まずユーザーに使用してもらい、フィードバックを得ることにより、ビジネスの不確実性を少なくしていくのです。
アジャイルへの誤解
アジャイルを始める時に一番大切なことは、関係者全員の理解度を合わせることです。アジャイルに対して理解不足のまま開発を進めると、失敗に陥るケースがあります。よくあるアジャイルへの誤解を紹介します。
早く、安く、良いものができる
アジャイル開発でリリースまでの期間が短くなるのは、ユーザーが本当に必要なものだけにスコープを絞っているためです。もし同じスコープの開発を従来型開発とアジャイル開発で競った場合は、従来型開発の方が早く、安くできるでしょう。
アジャイル開発ではチームや関係者が頻繁にコミュニケーションをとる必要があります。なぜなら、不確実性に対抗するためには、小さく開発し、フィードバックを得て、計画を軌道修正していくからです。コミュニケーションコストが従来型開発よりもかかる分だけ、開発に使える時間は短くなります。
また、良いものができるかどうかはビジネス側の人の関わり方が影響します。従来型開発のように仕様書を開発者に渡して終わりではなく、常に開発者と関わりながら一緒にプロダクトを作っていく。その時間と覚悟が必要です。
計画しない、資料を作らない
アジャイルソフトウエア開発宣言で示された4つの価値のうち、次の2つは誤解をまねきやすいです。「包括的なドキュメントよりも動くソフトウエアを」「計画に従うことよりも変化への対応を」。字面だけ見て、アジャイルは資料を作らないし、計画もしないと勘違いしている人が多いのです。アジャイル開発を取り入れている現場では、少なくとも日に一度は計画を見直します。作った方がチームとして効率が良いのであれば、資料も作ります。4つの価値は、既存の価値を捨て去るのではなく、補完するものなのです。
品質を担保できない
開発期間が短いということは、品質保証のための時間も短く、高品質にはならない。そう考える人もいます。アジャイル開発では、既存型開発と同様に品質を重視していきます。しかし、従来と同じような、隅々まで確認するテストは行いません。短い間隔でリリースするためにどうすればいいかを関係者と対話し、計画していきます。いかにムダな品質保証活動をそぎ落とすのか、テストを自動化するのかが、アジャイル開発で品質を担保するポイントです。
アジャイル開発の手法について
アジャイルの定義であるアジャイルソフトウエア開発宣言には、どう開発を進めれば良いかは書かれていません。そのため、具体的な手法がいくつかあります。中でも、スクラムとエクストリーム・プログラミングの2つで7割程度の採用率を占めています。まずはこの2つをおさえると良いでしょう。
スクラム
スクラムとは、世界で最も採用されているアジャイル開発プラクティスの1つです。3つの役割を擁するスクラムチームと、5つのイベント、3つの成果物から構成されています。詳しくは、スクラムの用語解説をご参照ください。
用語解説「スクラム」
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(XP)とは、5つの価値(コミュニケーション・シンプリシティ・フィードバック・勇気・リスペクト)をベースに、アジャイルなソフトウエア開発に必要な、具体的な活動内容(プラクティス)を定義しています。プラクティスには、テスト駆動開発、リファクタリング、継続的インテグレーションといった、モダンな開発に取り入れられているものが多いです。