記事をシェアする

巷で話題のアジャイル型開発って、なに?

記事をシェアする

この記事は、アジャイルを知ったかぶりしていた僕が、改めてアジャイルってなんなのかを再考するものです。

スポンサーリンク

はじめに

最近よく「アジャイル」や「デザインスプリント」というような開発手法を耳にします。勉強会や授業でもよく耳にするので、言葉はなんとなく分かったつもりです。しかし、「アジャイル(エグザイルではないです)」という言葉を何度も聞くうちに、これ絶対深くまで覚えておかないと損するよなと思いまとめることにしました。ちなみにウォーターフォールモデルやプロトタイプモデルなどは、昔ITパスポート試験でも高校の情報処理検定でも出てきたのでわかります。

アジャイル開発とは

アジャイル(agile)は英語で「俊敏な」という意味です。「イテレーション」と言われる期間ごとにクライアントにアプリケーションを提供しますが、この期間が一般的に2週間程度という短期間で行われるため、まさに俊敏な開発手法と言えます。

アジャイルの用語

  • イテレーション・・・プロジェクトの開発サイクルを表す
  • マスターストーリーリスト ・・・プロジェクトの全ストーリーの一覧
  • ユーザーストーリー・・・マスターストーリーリスト内の個別のストーリー
  • ベロシティ ・・・イテレーションで実施可能なユーザーストーリーの量

まずプロジェクトの「マスターストーリーリスト」を作成します。リスト内のストーリーは「ユーザーストーリー」と呼ばれます。「どの程度のユーザーストーリーがこなせるのか?」「優先すべきはどのユーザーストーリーなのか?」などを加味し、各イテレーションで開発対象となるストーリーを選定します。イテレーション終了時にはイテレーション開始前に判断した「ベロシティ」は正確だったか、などを振り返り、以降のイテレーションに組み込んでいきます。このように短い期間で開発を見直すことで、リスクを抑えていくことができるのもアジャイル開発における特徴の一つです。ちなみにアジャイルの前提条件として、「当初に想定した機能を全部作らない」というものがあります。少しずつ機能を追加していき、十分となった時点でそれ以上機能を追加しなくていいというようになります。

アジャイルがそもそもなぜ必要なのか

別に他のモデルでもいいじゃんってなる方もいらっしゃるかもしれません。そこで、他のモデルとの比較をしたいと思います。

ウォーターフォールモデル

ウォーターフォールモデルの画像

従来通りのウォーターフォール型開発の場合、あらかじめ全体の機能設計を済ませてから機能を実装するため、開発着手までにどうしても時間がかかってしまいます。さらに、テストで不具合が発覚すると、後半になればなるほど手戻り工数が大きくなってしまうため、開発途中での仕様変更・追加対応が困難となります。

アジャイル型開発

アジャイル型開発

従来のウォーターフォール型開発の場合は、テストで不具合が発覚すれば手戻り工数が大きい欠点がありますが、アジャイル型開発の場合、小単位で「実装→テスト実行」を繰り返し組み上げていくため、不具合が発覚しても手戻り工数を最小限に抑えることができます。また、仕様変更や追加にも柔軟に対応できます。

アジャイルのメリット・デメリット

アジャイルは俊敏にという意味があり、スピードを重視した開発ができます。「もう開発ならアジャイルでいいじゃん!最強じゃん!」と、僕は思いました。しかし世の中に光があれば闇もあるんです。ということでデメリットにも言及します。

全体のスケジュールや進捗が把握しづらくなる

従来のウォーターフォール型開発の場合は、全体の機能設計を済ませてから機能を実装していくため、スケジュールや進捗を把握しやすい上に、開発方法に慣れている人が多く、馴染みやすいメリットがあります。しかしアジャイル型開発の場合は、小単位で実装とテスト実行を繰り返すため、全体のスケジュールや進捗が把握しづらく、マネジメントのコントロールが難しいというデメリットを抱えています。

最初から綿密に要件定義を行うわけではないため、変更が頻発する

ウォーターフォールモデルのように最初から綿密に要件定義などを行うのではなく、 優先順位別に開発・リリース・フィードバックを繰り返します。そのため変更が頻発して要件が膨れすぎたり、 他機能との整合性が取れなくなったりするケースもあります。 また、システムの最終形が完成するのは 複数回のイテレーションを繰り返した後になることから、 総合テストなど、他機能と連携したテストを行いにくいという特徴もあります。 結果的に開発費がかさむなど、うまく調整する必要があります。このような理由により、アジャイルは小規模開発向きと言われているそうです。

結果的にアジャイルはどうなのか

調べる前は「アジャイル最高!」と考えていましたが、小単位で実装とテストを繰り返していくことで進捗が把握しづらいといったデメリットも抱えているようです。イテレーションごとに少しずつ開発するなら、一気に開発したほうが早く終わるような気もしてなりません。というわけで、アジャイルも万能な開発手法とはいえないです。じゃあどうすればいいんだろうということですが、実はアジャイルの弱点をうまく補った手法もありますので、またまとめていきたいと思います。

参考URL

現代のプロマネが知っておきたいアジャイル開発の基礎知識まとめ :http://www.atmarkit.co.jp/ait/articles/1412/05/news044.html

アジャイル開発 〜顧客を巻き込みチーム一丸となってプロジェクトを推進する〜:http://www.nec-nis.co.jp/ja/column/01_agile.html

アジャイルはなぜ失敗するのか?〜教科書には載っていない反復型開発の3つの掟:http://enterprisezine.jp/iti/detail/2467

アジャイル開発の本質 〜 アジャイルとウォーターフォールの違いとは:http://kuranuki.sonicgarden.jp/2013/07/アジャイル.html

アジャイル開発と反復開発の落とし穴:http://www.atmarkit.co.jp/ait/articles/0903/11/news114.html

スポンサーリンク

記事をシェアする

フォローする

トップへ戻る