システム開発において注目されている開発手法として「アジャイル開発」があります。従来のウォーターフォール開発に比べて、開発期間を大幅に短縮でき、開発途中の仕様や要件変更にも柔軟に対応できるという特徴があります。
そこで今回は、アジャイル開発の歴史や特徴を解説しながら、従来のウォーターフォール開発との違い、メリット・デメリットなどをご紹介します。
目次 |
アジャイル開発とは
アジャイル(agile)とは「すばやい」「機敏な」という意味を持ちます。
アジャイル開発は、システム開発における計画・設計・実装・テストといった開発工程を機能単位の小規模なサイクルで繰り返し開発を進めていく手法のことをいいます。
アジャイル開発の歴史
アジャイル開発と言う言葉が登場する以前、1990年代終盤に「Scrum(スクラム)」や「XP」などの新たな開発手法が生まれました。これらは従来の手法よりも、ユーザーと開発側との意思疎通を綿密に行いながら開発を進めようという趣旨から生み出されたものです。
それらの新しい開発手法を提唱した技術者たちが、2001年に「アジャイルソフトウェア開発宣言」を出したことが、アジャイル開発登場の発端となりました。
日本でアジャイル開発が取り入れられ始めたのは、2000年代半ばころからです。2009年にはアジャイルの手法をさまざまなビジネスで行う人たちの交流イベント「アジャイルジャパン」が初めて開催され、現在に至るまで年1回のサイクルで継続開催されています。
アジャイル開発の特徴
アジャイル開発の特徴を説明するとき、「走り出してから考える方式」という言い回しで語られることがあります。
ここからはアジャイル開発の流れを説明しながら、具体的な特徴をご紹介します。
アジャイル開発の流れ
アジャイル開発は短い期間でイテレーション(反復)を繰り返し行う開発手法です。
- 計画
- 設計
- 実装
- テスト
- 運用
1~5の流れを1つの機能を設計・実装するごとに行います。設計から実装まで素早く行うため、少数精鋭のチーム編成が前提です。
計画段階ではプラン内容を綿密にしすぎず、おおまかな概要だけを設計し開発に取り掛かります。あえて仕様をあらかじめ決定しないことで、開発を進めていく段階で生じた問題点などに柔軟に対応できます。問題点を洗い出す段階では、ユーザー(発注元/クライアント)と意見のすり合わせを都度行い、めざす方向性の行き違いが生じないよう常に先回りをします。
ここまでの工程で、システムの目的やユーザーの要望、大体の仕様が確定できたらその先はイテレーションという方式で開発を進めていきます。イテレーションとは「反復」を意味し、開発単位を小さく分割しながら計画・設計・実装・テストを行い、都度見直しをしながら段階的に完成させていくという手順で開発を行います。
近年ではこのアジャイル開発の考え方が、システム開発以外のビジネスでも「アジャイル型」として取り入れられています。たとえば、Web開発のオウンドメディア運用などでもこの手法が応用されています。Webの方向性をおおまかに決めたらすぐ開発を行い、少しずつ公開しPVなどの効果を測定し適宜見直すことで、メディアを徐々に成熟させていく方式です。
ウォーターフォール開発との違い
アジャイル型に対する、従来型の開発手法は「ウォーターフォール型」と呼ばれます。アジャイル開発は「まずは手を動かし(開発に取り掛かり)、その途中で課題が生まれたら都度対処する」という方式です。その一方で、ウォーターフォール開発は「じっくり計画を立て、計画段階ですべての仕様を詳細に決定してからその設計に沿って開発を実施する」という方式です。
アジャイル開発とのもっとも大きな違いは、ウォーターフォール開発は計画時にすべてを決めるため、完全に開発が終わって運用を開始するまでに細かな仕様変更ができない点です。ウォーターフォール型では開発途中や運用段階でトラブルが起こった際に、手戻りが多くなる傾向があります。
ただしウォーターフォール開発には、予算を組みやすくスケジューリングが容易になるなどのメリットがあります。すべての開発をアジャイル型にするのではなく、開発するシステムの特性に合わせてウォーターフォール型を適宜採用することで利点が生じる可能性もあります。
アジャイル開発のメリット・デメリット
開発途中で問題点が発生しても柔軟に対応できるアジャイル開発には、大きなメリットがあると考える方も多いでしょう。しかし、デメリットもあるため、アジャイル開発を取り入れる際には意識しておく必要があります。
ここでは、アジャイル開発が持つメリットとデメリットについてご紹介します。
アジャイル開発のメリット
仕様変更や機能の追加など柔軟に行える
開発過程を短期的に分割し、その中で実装と見直しを繰り返すため、細かな仕様を改訂したり新機能を必要に応じて追加したりすることが容易です。都度生じるユーザーの要望にも柔軟に対応でき、最終的にシステムの製品としての満足度を高めることにつなげられます。
早期開発の実現につながる
システムの機能ごとに分けてそれぞれ短期的な開発を行えるため、機能によっては部分リリースが可能で、すばやい開発を実現できます。
トラブル発生時の対応を素早く行える
開発作業を分割して行うため、万一不具合や問題点が発生した際も戻りが速く、対応を素早く行えます。
アジャイル開発のデメリット
プロジェクトの趣旨が変化してしまいやすい
細かな要件にも、その都度柔軟に対応できることがアジャイル開発の長所です。しかし、開発段階での変更点が多くなりすぎるとプロジェクトの根幹そのものが揺らぐ事態を招くこともあります。
プロジェクトの方向性が完全にずれてしまうことは、ユーザー側の最終的な満足度に影響を及ぼす可能性もあります。プロジェクト内部で定期的に方向性の認識確認とすり合わせを行い、ユーザーにも適宜確認をしながら方向性がずれてしまうことを防ぐ必要があります。
中規模以上のプロジェクトへの適応が難しい
アジャイル開発は10人以下の小規模なチームに適応しやすく、20人以上の中規模チームで行う開発案件には適応が難しいと言われています。また、複数チームで開発する場合のマネジメントの難しさが指摘されています。
中規模以上のプロジェクトの場合、将来的にプロジェクトのスケーラビリティを制限を制限してしまう可能性があり、小さなプロジェクトであれば修正が可能な場面もプロジェクトの規模が大きくなるほど開発を根底から覆すことにつながりかねません。
スケジュール管理が難しい
アジャイル開発は、開発当初に綿密な計画を立てるということを行いません。おおまかな仕様が決まった時点ですぐに開発をスタートさせ、その進行途中に問題点を解決していきます。つまり、その「問題発生→解決」というステップが想定外に多くなってしまうことも考えられます。
手戻りと見直しの数や分量が多くなれば、当初に設定した納期から大幅に遅れが発生することもあり得ます。常にスケジュールを頭に入れつつ、作業に無駄が生じないよう気を配りながら開発を進めることが大切です。
JBアジャイル開発とは
JBCCでは、アジャイル開発の特徴である柔軟性が高く都度適応しながら変更を繰り返す手法を基本に、計画性を重視するウォーターフォール型のメリットも得られる新しいアジャイル開発「JBアジャイル開発」(※別ウィンドウで開きます)をご提供しています。
アジャイル開発特有の問題点である「スケジュール管理の難しさ」「チーム編成面の制約」などをカバーし、反復開発を固定化することでの期日順守や、従来型のチーム編成による人員体制を実現しています。これにより中・大規模な開発への対応も可能にしています。また、要求分析、要件定義など上流工程を従来どおり実施することで開発者とユーザー(発注元/クライアント)がプロジェクトのゴールを共有し、開発時の方向性のズレ防止と迅速な開発ペース維持を可能にしています。
JBアジャイル開発は、これらの改善により基幹システムなど大規模プロジェクトへの適用も可能にしました。幅広い業種・規模のシステムに適用しています。
まとめ
アジャイル開発は、要望の変更・追加や状況変化へ柔軟に対応できる開発手法として支持されています。その一方で、要望発散のリスクやスケジュール管理の難しさ、開発・改修を素早く実施するために要求されるスキルレベルの高さとチーム編成の難しさがあります。また納期や予算が確定しているシステム開発にはむしろ不向きです。さまざまなシステム開発案件に適宜対応するには、アジャイル開発の利点を生かしつつウォーターフォール型開発の優位性も取り入れた仕組みが求められているといえます。
JBアジャイルは、「これから求められる開発のスタイル」に合わせた開発手法として生み出されました。計画性と柔軟性をバランス良く実現した開発体制を実現したいとお悩みであれば、ぜひ活用をご検討ください。
![]() |
JBCC株式会社JBCC株式会社は、企業のデジタル・トランスフォーメーション(DX)を支援する総合ITサービス企業です。クラウドサービスを中心にシステムの設計から構築、運用までを一貫して手掛けており、クラウド 1,740社、超高速開発による基幹システム構築 400社、セキュリティ 1,100社の実績があります。 |