近年、ソフトウェア開発などで主流になりつつあるアジャイル開発をご存知でしょうか。アジャイル開発には、従来の主流であるウォーターフォール開発とは異なる特徴があります。今回はアジャイル開発の特徴やウォーターフォール開発との違い、具体的な開発手法などをご紹介します。
アジャイル開発とは
アジャイル開発とは、現在主流になってきているソフトウェア開発方法のひとつであり、開発工程を小さなサイクルで繰り返す開発手法のことです。小さなサイクルを繰り返すことで、仕様変更などにも柔軟に対応しやすく、プロダクトの価値を最大化することに重点を置いた開発といえます。
アジャイル開発では、優先度の高い箇所から着手するため、素早くリリースしてブラッシュアップできることが特徴です。サービスの提供まで期間を短くして、ビジネスのスタートを早めることが可能となります。
アジャイルの意味
アジャイル開発の「アジャイル」とは、英語表記で「Agile」であり「素早い」「頭の回転が速い」「機敏な」などの意味があります。大きな単位でシステムを区切ることなく、小さな単位で区切って開発することで、素早い開発につながるわけです。
アジャイル開発は、「アジャイルソフトウェア開発宣言」により、広く知れ渡りました。アジャイルソフトウェア開発宣言は、2001年に軽量ソフトウェア開発を提唱していた技術者やプログラマーの集団が、アメリカのユタ州に集まり議論したことに始まります。
アジャイルソフトウェア開発宣言は、ソフトウェア開発に関する12の原則をまとめており、現在も公式文書として知れ渡っています。
ウォーターフォールとの違い
アジャイル開発とウォーターフォール開発は、厳密な仕様設計を決定してから開発するかどうかで異なります。
近年、ソフトウェア開発で主流になりつつあるアジャイル開発では、はじめから厳密な仕様設計を行いません。大枠の仕様や要件をまとめて開発を進めていきます。
厳密な仕様設計を決めないことは、設計に余白を残すことであり、開発がスタートした後に仕様変更が起こっても柔軟に対応できるわけです。また、アジャイル開発では、機能ごとの小さな単位で開発を繰り返しますが、この点もウォーターフォール開発と異なる点です。
一方、ウォーターフォール開発では、最初の要件定義や設計が絶対的なものであり、開発が進んでから変更することを想定していません。ウォーターフォール開発は、従来よく採用されていた開発方法であり、全機能に関して要件定義や設計を綿密に練ってから開発に進みます。要件定義、設計、実装、テスト、運用という流れが「水が下に落ちていく」ような一方通行であることから「ウォーターフォール」と呼ばれています。
アジャイル開発のメリット
ここからは、アジャイル開発の特徴からメリットをみていきます。アジャイル開発の主なメリットは以下の3点です。
変更に柔軟に対応できる
すでにご説明したように、アジャイル開発はその特徴から仕様変更などに柔軟に対応ができます。
開発において仕様の変更はしばしば発生します。ウォーターフォール開発のように開発前の段階で綿密な設計を作ったとしても、途中で規模の大小を問わず仕様変更を余儀なくされることがあります。
その際に綿密な設計を行っていると、大幅な工程の見直しが必要となり、プロジェクトの進行が大きく遅れる可能性があります。
一方でアジャイル開発ならば、細かな設計をしないため、柔軟な対応が可能となります。特にソフトウェア開発では、顧客が実際に利用してから手戻りになるケースもあり、その声を反映させることで顧客の満足につながります。
開発期間を短縮できる
開発の内容にもよりますが、アジャイル開発は機能ごと、決められた期間ごとにリリースを目指すサイクルとなっており、開発期間を短縮することが可能です。アジャイル開発は、機能ごとの小規模な単位で開発を進める特徴があり、短期間で顧客に届けることができるわけです。
また、前項でご説明したように仕様変更にも柔軟に対応ができることから、全体的な開発期間を短縮できます。短期間で提供できることにより、自社における事業推進で得た新たな価値をスピーディーにユーザーへ届けられるでしょう。
ただし、長期的な計画が立てられない点はアジャイル開発の注意点にもなります。長期的な計画が必要な開発ならば、従来のウォーターフォール開発で行うほうがいいでしょう。
とはいえ、現代は不確実な世の中になっており、長期的な計画よりも連続的・反復的な短期計画が重要になることが多いです。
トラブル対応をスピーディーに行える
アジャイル開発は、設計に余白を持たせていることから、仕様変更だけではなくトラブルにも柔軟に対応できます。ソフトウェア開発ではトラブルが起こることは珍しくありません。
また、アジャイル開発は、機能ごとに小規模な単位で開発を進めることから、トラブルが起きても影響が及ぶ範囲が狭いです。影響範囲が少ないうちに対応できれば、トラブルの早期解決につながり、顧客への提供の遅れも長引かないでしょう。
また、経験したトラブルを社内やチームで蓄積しておけば、次に同様のトラブルが起きても迅速な対応ができます。顧客から出戻る工程も少なくなるため、生産性の向上につながるでしょう。
アジャイル開発の具体的な手法
ここでは、アジャイル開発の具体的な手法をご説明します。アジャイル開発には、スクラム、エクストリーム・プログラミング、ユーザー機能駆動開発という手法があります。以下でそれぞれの手法を詳しくみていきましょう。
スクラム
スクラム開発は、スクラムと呼ばれるチームを組んで各責任者とチームメンバーが開発を進める方法です。スクラムは、プロダクトオーナー、スクラムマスター、開発チームメンバーで構成されます。
プロダクトオーナーは、名称のとおりプロダクトの最終決定権や責任を持つ人物です。プロダクトバックログと呼ばれる、すべきことをリスト化したものを常に管理して最新の状態にする責任があります。
スクラムマスターは、スクラムチームのリーダーとして、開発メンバーのサポートを行います。ウォーターフォール開発におけるプロジェクトマネージャーの立場と混同しがちですが、スクラムマスターは、意思決定や作業の指示などを行わずプロダクトオーナーと開発メンバーのサポートと考えてください。
開発チームメンバーは、開発に関わるメンバーのことです。ウォーターフォール開発では、プログラマー、テスター設計者など役割がそれぞれで決まっていますが、スクラム開発では開発に関わる人を開発チームメンバーと呼んでいます。
エクストリーム・プログラミング
エクストリーム・プログラミングは、プロジェクトを途中で変更させることを前提として、プロジェクトの全体を細かくわけて開発を行う方法です。ひとつずつの要素を非常に細かくわけるため、開発サイクルが短くなります。
柔軟性とスピード感を重視する開発では、エクストリーム・プログラミングが適しています。開発手法の特徴から10人程度の小規模なチームで行うことにも向いているでしょう。
ユーザー機能駆動開発
ユーザー機能駆動開発は、ユーザー視点を重視して価値ある機能を中心に開発を進めることです。開発機能によってチーム分けをして、計画や設計、コーディングを行います。アジャイル開発のなかでは、大規模な開発をするときに適した手法です。
まずは顧客がプロジェクトに求めるものを明確にしてもらい、その内容をもとに自社で必要な機能を選びます。実際に動作するシステムの開発を反復して行って、適宜、顧客に提供していきます。
なお、ユーザー機能駆動開発は開発の計画段階から顧客とのコミュニケーションが重要です。機能に重点を置いていることから、ほかのアジャイル開発の手法より価値の高い機能実装を実現しやすくなります。
アジャイル開発の流れ
アジャイル開発は、リリース計画とイテレーションの2つのステップがあります。
リリース計画では、開発期間や必要な機能などを決めます。アジャイル開発は細かな計画を立てる必要はないものの、仕様変更などを加味してスケジュールを立てる必要があります。
リリース計画の考え方は1回だけのときもあれば数ヶ月に1回行うこともあり、ケースにより異なります。開発に応じて適したリリース計画を立ててみましょう。
また、イテレーションとは優先順位に沿って機能を実装することです。アジャイル開発では、短い期間で機能を実装して、テストを繰り返します。1週間や2週間をめどに実装とテストを繰り返して、次に移ります。
以上の流れを経て、顧客に提供します。
アジャイル開発が向いているプロジェクト
WebサービスやWebアプリ、スマホアプリなどがアジャイル開発に向いていると言われています。それらの開発は、途中で仕様の変更や追加が予想されるプロジェクトであり、アジャイル開発が向いているわけです。
一方で企業の基幹システムや医療システムなどは厳格なスケジュールをもとに慎重ににプロジェクトを進める必要があるため、従来のウォーターフォール開発が向いているでしょう。
アジャイル開発で役立つツール
アジャイル開発において、開発をスムーズに進めるために役立つツールがあります。以下で2つのツールをご紹介します。開発の際に役立ててみてください。
カンバンボード
カンバンボードとは、タスク管理ツールのひとつです。日本で誕生したツールであり、作業の可視化がしやすいことが特徴です。
「業務開始前」「業務中」「業務終了後」などのようにタスクのステージ分けをして、進行中のタスクをいずれかに配置していきます。
なお、オープンソースのものや月額契約で利用できるツールなど幅広く展開されています。自社の予算などに応じて検討してみてください。
バーンダウンチャート
バーンダウンチャートとは、納期までに作業が終わるのかグラフで確認できるツールです。縦軸に作業量、横軸に時間を割り当てて、残りの作業量がグラフで表示されます。時間が進むと作業量が減るため、通常は右下がりのグラフとなります。
プロジェクトが予定通りに進まないと、何かしらのマークが表示されて進捗の見直しに活かせます。カンバンボードと併用すれば、プロジェクト管理がより円滑になるでしょう。
まとめ
アジャイル開発について、ご理解いただけましたでしょうか。アジャイル開発は、機能ごとなど小規模にわけて開発する方法です。設計を細かく決めないため、急な仕様変更や追加にも対応することができます。
なお、弊社が過去に実施した「アジャイル開発のプロジェクト管理手法」セミナー(講師:弊社会長梅田)の講演資料を公開していますので、こちらもぜひご覧ください。
- カテゴリ:
- アジャイル開発
- キーワード:
- アジャイル開発