アジャイル開発は、現在主流になっているシステムやソフトウェアの開発手法の1つです。
アジャイルとは
アジャイルはシステム開発の方法のひとつです。
アジャイル型の反対のシステム開発の型はウォーターフォール型で、アジャイル型はウォーターフォール型の不具合を解消できることがあります。
ウォーターフォール型開発との違い
ウォーターフォール(英語:Waterfall)とは、日本語で直訳すると「滝」を表します。
ウォーターフォール型開発は、『区切られた全ての工程が正しい』という前提で流れる滝のように一方通行で進めます。
これは仕様が変更になり手戻りが発生すると全体的な予定が狂ってしまう可能性があります。
そうすれば、開発の工程はやり直しになるため、かえって必要な工数が増えてしまいます。
アジャイル型では、プロジェクトは変化するものと決め、小さなサイクルを何度も回します。
仕様が変更になることも加味し、開発予定を組んでいます。
アジャイル型開発の手法
アジャイル型開発の手法をフェイズごとに見てみましょう。
スクラムを用いる方法を説明します。
デイリースクラム(朝会)
毎朝チームメンバーで集まり、15分など短い時間を区切り、昨日やったこと、今日やること、障害となっていることを一人一人報告・共有します。
このミーティングにより、チーム全員の状況、障害や問題の共有、今日どこまで完了するかの宣言を行い、プロジェクト全体の見える化を行います。
リリースプランニング(プロダクトバックログ)
プロジェクト立ち上げ時に、どのようなプロダクトをどのような機能優先順で、どのくらいの期間で実施するかをチーム全員でプランニングします。
万が一実態とのずれが大きくなってきた場合には、随時見直しを行います。
プランニングを実施した結果は、『プロダクトバックログ』という名前の、機能優先順で並べた機能一覧により管理します。
スプリントプランニング(スプリントバックログ)
ひとつのイテレーション期間(1~4週間程度)で、全体のプロダクトバックログの中からどの範囲の機能を実現するかをチーム全員でプランニングします。
プランニングした結果は、『スプリントバックログ』という名前の、機能優先順で並べた機能一覧により管理します。
チームが毎スプリント内でどのくらいのタスクを消化できるかは、毎回計測し、精度を高めて行きます。
スプリント(イテレーション開発)
スプリントは実際のひとつのイテレーション開発のフェーズです。
チームメンバーは、宣言通りにスプリント内で安定したプロダクトがリリースできるよう、最善を尽くします。
基本的に、スプリント内の変更(機能の追加や変更、削除)は認められません。
スプリントレビュー(デモ)
ひとつのイテレーション期間で完成したプロダクトを、ステークホルダを集めデモを行います。
チームメンバー達の作ったプロダクトが安定して動くことをアピールすると共に、要求の伝達ミスや漏れがないことを必ずチェックし、チームメンバー全員が正しい方向を向いてイテレーション開発を進めているかを確認します。
ふりかえり
基本的に毎スプリント終了時に行います。
KPT法などが用いられます。
今回のスプリントの良かったこと、問題点、挑戦したいことをメンバー全員で出し合い、次のスプリントでさらにチームメンバーが高い価値を生み出せるように、メンバー同士話し合いを行い、確認し合います。
アジャイル型開発のメリットとデメリット
アジャイル型開発にはメリットとデメリットがあります。
自社の開発にどちらが影響が大きいか、考えておきましょう。
アジャイル型開発のメリット
強いチームを形成できる
個人と対話を重視するので強いチームを形成できます。
スクラムでは、最適なチームは3~10人で組むと言われています。
イテレーション単位で3~10人の小規模なチームで臨むため、当事者意識が生まれモチベーションが上がり、コミュニケーションが活発化します。
変化に対応しやすい
アジャイル型開発では、変化に臨機応変に柔軟な対応ができます。
機能単位で設計→開発→実装→テストを繰り返しており、そのたびに不具合を発見できます。
アジャイル型開発のデメリット
全体スケジュールのコントロールが難しい
アジャイル開発では仕様・要件ごとにスケジュールを設定して開発に臨むため、全体スケジュールのコントロールしにくくなります。
また、顧客とのコミュニケーションを重視するために、開発がスケジュール通りになかなか進まないことも多くなります。
方向性がブレやすい
クライアントの要望を取り入れ、仕様の変更を行う時、正しい要求が導き出せなかったり、その場しのぎの対応をしてしまうと、方向性がブレてしまう可能性があります。
方向性がブレるとクライアントからの改善要求をされ、反復増加型プロセスが長期間に渡って繰り返される可能性があります。