アジャイル開発とは?
まずは、アジャイル開発とはどのようなものか見ていきましょう。
開発期間を短縮できる開発手法
アジャイル開発とは、いくつかある開発手法の1つで、短期間で開発を行えることが特徴です。
一般的にシステム開発の開始時には、どのような計画でプロジェクトを進めるか緻密に計画を立てます。しかし、アジャイル開発の場合は大まかな仕様を元に開発を進め、手戻りが発生した場合は都度対応していきます。
通常のシステム開発では、計画通りに進むことは多くありません。必ずといっていいほど、途中で仕様変更や手戻りが発生してしまいます。この場合、緻密に計画を立てている分、修正の手間が大きくなります。
アジャイル開発の場合は重要な部分だけを決めておくため、仕様変更にも柔軟に対応し、開発期間を短縮できるのです。
開発コンセプトからブレないようコントロールが必要
アジャイル開発のデメリットは、何を開発したいか分からなくなることです。開発段階でユーザーとコミュニケーションを行い、意見を取り入れられることは大きなメリットでしょう。
しかし、計画を緻密に立てずにスタートするため、改善を重ねるごとに何が大切なのかが不明確になります。また、ユーザーの意見ばかりを取り入れていると、当初の計画から大きく外れてしまうケースも多いです。最悪の事態になると、納期に間に合わないこともあり得ます。
アジャイル開発を行うときは、「これだけは外せない」という重要なポイントやコンセプトを明確にしなければなりません。また、開発途中でもそのコンセプトがブレないように方向性をコントロールすることが求められます。
仕様変更に対応しやすいメリットの分、デメリットの存在にも十分注意が必要です。
アジャイル開発と他の開発手法との違い
アジャイル開発を有効活用するために、ほかの開発手法との違いを見ていきましょう。
ウォーターフォール開発:綿密な計画通りに進める
ウォーターフォール開発とは、アジャイル開発と違いしっかりと計画を立て、1つの工程を完了させてから次の工程に進む手法です。
一つひとつの工程の進め方や役割が明確で、失敗しにくい開発手法であるため、大規模な案件開発に向いています。ある程度仕様が固まってから実際の開発に取り組むケースが多いです。
しかし、緻密な計画を立てて遂行することが前提のため、急な仕様変更に対応するのは難しいです。また、エンドユーザーやクライアントと関わることが少ないため、完成品のイメージと実物が異なるケースも考えられるでしょう。
仕様変更が発生しそうな場合はアジャイル開発、盤石な体制が構築されている場合はウォーターフォール開発がおすすめです。
プロトタイプ開発:試作と評価を繰り返してから進める
プロトタイプ開発は、名前のとおり、試作品を作成しユーザー・クライアントに評価されてから本格的な開発を行う手法です。
一般的には試作と評価を繰り返すことで、よりユーザーのニーズに近づけていきます。ユーザー側の評価を元に開発内容を設計するため、失敗や開発終盤の手戻りが少なくなるでしょう。
アジャイル開発と同様にユーザーの意見を反映させやすいことが特徴です。しかし、試作から本番までの開発に時間がかかり、全体の開発スケジュールが膨張してしまいやすいです。
また、試作の結果である最終的な仕様を開発するためには、予定よりも大きなコストが必要になる場合もあります。プロトタイプ開発を行う際には、以上のようなスケジュールやコストの問題も念頭に置かなければなりません。
仕様が決まった時点でプロトタイプを使い捨てる「ラピッド・プロトタイピング」と、開発したプロトタイプを流用する「進化的プロトタイピング」の2種類に分けられます。
スパイラル開発:短時間で実装を繰り返して品質を高める
スパイラル開発はアジャイル開発と同様に、一定の工程を繰り返して開発を進める方法です。しかし、スパイラル開発の場合は、設計・実装・テストを繰り返すことで品質を高めることを目的にしています。アジャイル開発は開発期間を短縮するため、目的に違いがあります。
スパイラル開発は、製品の大枠を開発し、ユーザーの評価を得ながら進めていくのが最大の特徴です。そのためプロトタイプ開発とアジャイル開発を組み合わせたような手法ともいえるでしょう。
仕様変更に対応しやすく完成品の品質を高められることがメリットです。しかし、その反面、開発を繰り返し行うためプロジェクト全体のスケジュールを把握しづらいデメリットがあります。
アジャイル開発手法の種類
アジャイル開発の開発パターンは、いくつかに分かれています。主に「スクラム」「エクストリーム・プログラミング」「ユーザー機能駆動開発」の3種類があるため、どのような特徴があるのか見ていきましょう。
スクラム
スクラムは代表的なアジャイル開発の手法です。
開発技術が必要な手法ではなく、メンバー間のコミュニケーションやチームワークを重要視します。ラグビーのスクラムが名前の由来になっており、開発メンバー同士でよく話し合って確実にプロジェクトを進めていく方法です。
また、スプリントという短い開発期間を反復し、評価を得ることでプロジェクトを進めていきます。
具体的なスクラム開発の進め方は、まずスプリントの中で実装する機能を決め開発していきます。その後は、決まった日時に定例ミーティングを行って、プロジェクトの進捗状況や課題を共有してください。
開発結果の評価により、プロジェクトをそのまま進めるか、改善するためのスプリントを計画し開発を続行します。一連のスプリントが終了すれば振り返りを実施し、改善して次のスプリントへの対策を練ってください。
エクストリーム・プログラミング
エクストリーム・プログラミング(XP)は、開発やマネジメントの経験を重視してプロジェクトを進める手法です。
この開発手法では、途中で仕様変更が発生した場合に柔軟に対応することを重視しています。スクラムとは違い開発メンバーだけでなく、ユーザーもチームメンバーの一員として考え開発を進めるのが特徴です。
また、エクストリーム・プログラミングでは開発の計画にこだわらずに進めますが、その分経験や技術が求められます。そのため、能力が高い開発メンバーを揃えなければなりません。
機能の開発とテストを同時に実施することで、正常に作動する状態を維持します。ユーザーと常にコミュニケーションを取るため、要望に沿った開発が可能です。
ユーザー機能駆動開発
ユーザー機能駆動開発とは、ユーザー目線で価値ある機能を中心に開発を進める手法です。開発する機能によってチームを分けて計画・設計しコーディングを行います。そのため、アジャイル開発の中でも大規模な案件に対応しやすいのが特徴です。
この手法で開発を進めるためには、まずユーザーがプロジェクトに求めるものを明確にする必要があります。ユーザーの要望に応じて必要な機能の選定を行い、適切な計画で開発を進めていきます。
実際に動作するシステムを反復して開発を行い、ユーザーにとって適切な間隔で提供することが目的です。そのため、この手法でも開発の計画段階からユーザーとのコミュニケーションが重要となります。
しかし、機能に重点を置いている分、他の開発手法よりも価値が高い機能の実装を実現しやすいです。
アジャイル開発の手順
最後に、アジャイル開発を行う手順を見ていきましょう。基本的には「リリース計画」と「イテレーション」の2ステップです。
リリース計画:仕様の大枠を確定させる
アジャイル開発ではウォーターフォール開発のような緻密な計画を立てる必要はありません。しかし、どのような機能が必要になるか、どれくらいの期間で開発するかといった大枠は必要です。このように仕様の大枠を決めることをリリース計画と呼びます。
アジャイル開発は仕様変更に柔軟に対応できますが、スケジュールの全体像は把握しにくいです。そのため、リリース計画を立ててどの程度仕様変更を受け入れられるのか判断しなければなりません。このとき、仕様変更がある程度発生する前提で考えることが大切です。
また、リリース計画の考え方はさまざまで、1回だけ立てることもあれば、3ヶ月に1回行うこともあります。開発する案件に応じて適切なタイミングでリリース計画を見直してください。
イテレーション:仕様の優先順位に沿って機能を実装する
イテレーションとは「反復」という意味であり、アジャイル開発で機能を実装するための短いサイクルを指します。アジャイル開発では、計画・設計・実装・テストという工程を反復し、その反復の単位としてイテレーションが使われることが多いです。
このイテレーションでは、優先順位が高い機能を中心に開発を進めていきます。プロジェクトによって期間は異なりますが、イテレーションは1週間から2週間単位で実施されることが多いです。
短期間での開発にはアジャイル開発を採用しましょう!
アジャイル開発は重要な部分のみ決めて開発を進めるため、開発期間の短縮を図れます。もし、仕様変更が発生しても短期間で修正が可能なため、開発の負担を抑えられるでしょう。ユーザーの評価をスムーズにクリアしていけば、素早くプロジェクトを完遂できます。
開発の途中で仕様変更・機能の追加が予想される場合や、短期間で開発したい場合、技術の進歩が著しい分野の開発に活用しましょう。