開発から運用まで、IT部門のお役に立つ情報をお届けするサイトです

DevOpsに関する基礎知識や進め方がわかる!! DevOpsポータルサイト
  • 開発プロセス高度化

アジャイル開発って何?その意味や開発手法のメリット・デメリットを解説

  • #アジャイル開発
  • #CI/CD

2023.03.31

アジャイル開発って何?その意味や開発手法のメリット・デメリットを解説

別記事で 「DevOpsとアジャイルの違い」 についてまとめましたが、本記事ではアジャイルを始めたい人に向けて、改めてアジャイルとはどういう意味か、アジャイル開発手法のメリット・デメリットを解説します。


アジャイルとは何か

英和辞書

アジャイルの意味

アジャイル(agile)とは「頭の回転が速い」「機敏」「敏捷」などの意味を持つ英単語です。IT業界においてはシステムやソフトウェア開発技法の一つを指し、「アジャイル」「アジャイル開発」と呼ばれます。

アジャイル開発が登場する前の1990年代後半において、新しい開発技法「スクラム」「XP」などが登場しました。これらの開発技法は従来のやり方と異なり、事前に十分な計画をたてて開発を進めるよりも、顧客との対話を重視したやり方です。

やがてこれらの新しい開発手法を提唱した技術者が、2001年に「アジャイルソフトウェア開発宣言」を出しました。これがアジャイルの登場です。アジャイルソフトウェア開発宣言は、12の原則をもとにソフトウェア開発を行う上で重視するマインドセットが記載されています。

アジャイル開発の流れ

アジャイル開発は、最初から厳密な計画や仕様を決めることはせず、大まかな仕様と要件のみ決めます。これは、可能な限り顧客からの変更要求を受け入れ、満足度を高めるためです。

大まかな仕様と要件、および開発すべき機能が決まったら、短い期間で優先度の高い機能から開発を進めていきます。期間はイテレーションと呼ばれ、2,3週間~2,3か月の短い間隔で「計画」「設計」「開発」「テスト」の工程を行い、リリースを繰り返していきます。

例えば、昨今のWebサービスやスマートフォンアプリでは、正式リリースされたあとに更新とともに新機能が追加されるものがあります。正式リリース後に利用者からの意見や不具合などの連絡を受け、フィードバックして次回更新に対応します。アジャイル開発では、このように少しずつ機能を追加して意見を取り入れながら開発していく流れです。

アジャイルの三つの手法

「METHOD」と書かれたスタンプ

アジャイル開発を実現するためには多くの手法があります。ここでは、代表的な三つの手法について解説します。

スクラム

スクラムとは、チームワークを重視した手法であり、ラグビーの「スクラム」が語源となっています。顧客含め開発プロジェクトに関わる全てのメンバーで一丸となって開発を進める手法です。

スクラムでは「プロダクトバックログ」という優先順でならべた機能一覧で開発対象を管理し、最大4週間のスプリントの中で開発する機能を選択します。開発する機能が決まったら、スプリントバックログで進捗を管理しながら開発を進めていきます。

スクラムでは、チーム内のコミュニケーションが最も重要です。例えば、各自がスプリントで作業を進めていく過程で、不足しているものがあれば機能が正常に動作しない、といった問題につながります。そのようなことを防ぐためにも、日々ミーティングやレビューを行い、チームメンバー全員でコミュニケーションをとって開発を進めます。

XP(エクストリームプログラミング)

XPは、「共同」「開発」「管理者」「顧客」の四つのプラクティス(慣習)に従って開発を進める手法です。四つのプラクティスは、それぞれ異なる対象に向けた細かなプラクティスが定義されています。

共同プラクティスでは、開発プロジェクトメンバー全員が対象となるプラクティスです。イテレーションごとに開発を繰り返す「反復」、コミュニケーションの齟齬を防止するため用語集を作成する「共通の用語」、作業に集中できる環境づくり「開けた作業空間」などがあります。

開発プラクティスはおもに、プログラマーを主とした開発メンバーを対象にしたプラクティスです。2人1組でプログラミングする「ペアプログラミング」、必要なコードだけを記述する「YAGNI」(You Aren't Going to Need It)などがあります。

管理者プラクティスはプロジェクト管理者を対象にしたプラクティスです。開発チームに負荷をかけ過ぎないよう開発ペースを見直す「最適なペースの仕事」や、プロジェクト全体の責任をもつ「責任の受け入れ」があります。

顧客プラクティスは顧客を対象にしたプラクティスです。求める機能のコンセプトを短い文章にして作成する「ストーリーの作成」やリリース計画の立案、イテレーションごとに要求通り機能が実装されているか確認する「受け入れテスト」などがあります。

FDD(ユーザー機能駆動開発)

FDDは、大規模開発に向けて提案された手法です。顧客目線で最も価値ある機能(フィーチャー)を選定し、反復して開発を進めます。そのため、顧客とのコミュニケーションが非常に重要です。

可能な限り機能を小さく細分化し、短期間で開発することからコミュニケーションが簡単であり、大規模開発であっても機能しやすいという特長があります。また、顧客とのコミュニケーションは基本ドキュメントで行われます。

アジャイルのメリット三つ

メリット

アジャイルの三つの手法は、どれもアジャイルを実現するための方法です。アジャイルで開発すると、主に三つのメリットがあります。

仕様変更が発生しても柔軟に対応できる

アジャイルは短い期間、小さい機能ごとに何度も計画・設計・開発を繰り返します。そのため、仕様変更が途中で発生しても、仕様変更による影響は開発対象の機能および期間のみに抑えられます。

不具合が発覚した際の手戻り工数が少ない

万が一機能で不具合が発覚した場合、機能の規模が大きさに比例して影響範囲も大きくなり、手戻り工数が肥大化してしまう可能性もあります。アジャイルでは開発範囲が小さく細分化されているため、不具合による影響を局所化でき、手戻りの工数も抑えられます。

ユーザーから高い満足度が得られる

最初に厳密に仕様を決めなくとも開発をスタートでき、あとから仕様を決めながら開発を進めることも可能です。そのため顧客からの要求に柔軟に対応しやすく、満足度の高い機能の開発が実現できます。

アジャイルのデメリット二つ

デメリット

計画段階で厳密に仕様を決めないため、開発の方向性がぶれやすい

計画段階では大まかにしか仕様や要件を決めず、また顧客からの要求変更や機能追加を受け入れやすいという点から、逆に開発の方向性がぶれやすいというデメリットがあります。

例えば、顧客に言われるがまま仕様変更を繰り返していくと、本来の目的を見失ったものができあがる、というものです。

スケジュールをコントロールしにくい

短い期間で開発を繰り返していくため、全体のスケジュールが把握しにくいという点が挙げられます。具体的には、顧客からの要件の追加や変更を取り込んでいくうちに、期間内に収まらず、納期遅延も起こるというケースです。最初に大まかな計画しか決めずに進められるため、全体スケジュールが見えずコントロールしにくい状況に陥りやすくなります。

ウォーターフォールとの違い

流れる川

ウォーターフォールの特長

アジャイルが登場する前から、ソフトウェア開発技法はウォーターフォールが一般的でした。ウォーターフォールは機能ごとではなく全体で「計画」「設計」「開発」「テスト」という工程を進めて行く方法です。上流から下流へ水が流れるように開発を進めていくことから、ウォーターフォールと呼ばれます。

ウォーターフォールは、各工程で決められた作業を確実にこなし、後戻りをしないことが基本です。そのため、計画段階で開発対象やスケジュールなどが詳細に決められ、それに沿って設計、開発を進めていくため、全体スケジュールが管理しやすく、進捗も分かりやすいというメリットがあります。

逆に、前工程で確実に作業をして後戻りをしないという点から、途中で顧客から仕様変更や要件追加があっても、柔軟には対応できません。また、不具合が見つかった際に開発対象も全体であることから、場合によっては影響範囲が大きくなり、後戻りの工数が肥大化する可能性があります。

ウォーターフォールか?アジャイルか?

ウォーターフォールは、従来の業務システムの開発で用いられてきた実績があります。従来のシステムは、SoR(System of Records)「記録のためのシステム」といわれ、主にERPなどの基幹システムのことを指します。これらは品質や安定稼働を重視しているという特長があります。

しかし昨今では、顧客や一般消費者のニーズの変化・多様化に対応すべく、顧客視点を重視して設計されたシステム、SoE(System of Engagement)が求められるようになってきました。このようなシステムの開発には、アジャイルが向いています。SoEの代表的なシステムは、SNSがあげられます。

ただし、SoRとSoEは考え方は異なりますが、従来のシステムにおいても顧客視点の考え方は重要ですし、SoEでも品質や安定稼働が求められます。

SoR、SoEどちらが優れているというわけではなく、データの蓄積や構造化を重視したシステムはSoR、顧客にとって使いやすいシステムはSoRというように、相互に補完しあう概念です。

最近では、FDDのように大規模開発向けの手法もあることから、基幹システムの開発にもアジャイルを取り入れている企業が増えてきています。

アジャイル実践ソリューション

ソリューション

ここまでの解説で、アジャイルがどのようなものかお分かりいただけたと思います。しかし、実際にアジャイルを実践しても、なかなかうまくいかないケースも多いです。

アジャイルを始めようにも実践が進まない理由は、二つの課題があるためです。
・開発プロセスを変えようとすると、大きな労力がかかりうまくいかない
・アジャイルを実現するには開発プロセスの自動化・効率化が必要。それらを実現できる技術力がないと成果が得られない

アシストでは、アジャイルを効率良く実現するためのソリューションを提供しています。アジャイルを始めたばかりの人も、アジャイルを実践したもののうまくいかなかった人も、ぜひご確認ください。


アジャイルスタートアップソリューション

アシストでは、アジャイルへのアプローチとして二つのソリューションを提供します。
・開発プロセスを変えずに、ツールを利用して開発を自動化・効率化する
・段階的かつ確実にアジャイルを実現する

このアプローチを行う前に最初に実施することとして、現状の開発プロセスを可視化し、ボトルネックを洗い出す「バリューストリームマップ(VSM)ワークショップ」を実施します。

現状の開発プロセスを把握しないまま一度に開発プロセスを変えようとすると、負荷が高くうまくいきません。そのため、現状の開発プロセスから問題点を改善していきます。アシストでは、VSMの基本的な知識に関する教育、およびワークショップ開催時のファシリテートをご支援いたします。

CI/CDツール

現状の開発プロセスのボトルネックが判明したら、それを解決するための最適なツールをご紹介します。ご提案するツールはCI/CDツールと呼ばれるもので、ソフトウェア開発の高速化、ビルドやテストなどの自動化および本番環境へのリリースを可能な状態にするものです。

これらのツールは一つではありません。オープンソースから商用ソフトウェアまで様々です。具体的には、自動化ツールのJenkinsや、バージョン管理ツールのGitLab、構成管理ツールのAnsibleなどがあります。全てを一度に利用するとツールを使いこなすだけでも膨大な時間と負荷がかかるため、計画的に進めることが重要です。

アシストでは、開発プロセスのボトルネックおよびニーズに応じて、段階的に改善を進めるためのツールをご提案いたします。

アジャイル開発を始めてみよう

本記事ではアジャイルを始めたい人に向けて、アジャイル開発について解説しました。アジャイル開発では「短期間で素早く開発する」「顧客からの仕様変更に柔軟に対応可能」というメリットにより、顧客満足度の高いソフトウェア開発が可能です。

しかし一方で、全体スケジュールが把握しにくいというデメリットや、いざ実践するとなると開発プロセスの自動化・効率化が必要など、うまくいかないケースも存在します。

アシストでは、成功事例を基にした、アジャイル開発をスムーズに始めるためのソリューションをご用意しております。アジャイル実現に向けてのアプローチ方法やソリューションの詳細な資料をご用意しておりますので、アジャイル導入を検討されている方は、ぜひご覧ください。



関連ソリューション

  • 開発プロセス高度化

    定期的にお客様の開発状況をヒアリング、チェックさせていただきお客様が「圧倒的なスピードで高品質なアプリケーションをリリースし続ける」状態を支援します。

ご不明な点はお気軽にお問い合わせください
お求めの情報は見つかりましたでしょうか?
お客様の状況に合わせて詳しい情報をお届けします。
お気軽にご相談ください。