Topics Agile delivery アジャイル開発のすべて〜歴史からメリット・デメリットまで

アジャイル開発のすべて〜歴史からメリット・デメリットまで


加速するビジネスに対応できる開発手法として近年注目を集めるアジャイル開発。そもそもどういったものなのか、強みや注目される理由、具体的な開発手法などについてわかりやすく解説します。

アジャイル開発とは?

アジャイル開発とは、システムやソフトウェアの開発アプローチです。ビジネスのスピードに対応する開発手法として、近年主流となっています。計画、実装、テストを小さな単位で繰り返し開発期間を短くできることから、「素早い」「迅速な」を意味する、“Agile(アジャイル)”と呼ばれています。

アジャイル開発の強みとは何か?

アジャイル開発の最大の強みは、開発期間が短縮できる点です。設計、開発、検証を短い単位に区切ったサイクルで繰り返すことで、変更箇所の影響範囲を小さくし、修正を比較的容易なものに留めます。遅延の原因となる大規模な修正を避けることができるため、結果的に開発期間の短縮が期待できます。また、開発プロセス全体を通してエンドユーザーである顧客からフィードバックを得ることで、最新のニーズに合った機能や仕様を実装できることも魅力です。

なぜアジャイル開発が注目されているのか

現在、多くの企業は、目まぐるしく変化する市場やニーズに柔軟に対応していく必要に迫られています。新しい機能を短期間で継続的にリリースしていく必要があるため、スピード感を持ったアジャイル開発に注目が集まっています。スピードの他にも、アジャイルによる仮説検証が新しい価値の創造に結びつくというメリットもあります。変化が激しく、物事の予測がたてにくい複雑・不確実な要素の多い課題に対して、最初から問題を分析し論理的に導き出せる解決策が通用しなくなっています。

当初アジャイル開発はソフトウェアエンジニア主体の開発手法でしたが、近年は不確実さに対応するビジネス戦略としても採用され始めています。ビジネス一般における価値創造にも、アジャイルの手法が求められています。

ウォーターフォールモデルの課題を解決するために生まれたアジャイル開発

アジャイルが誕生する以前、ソフトウェア開発では「ウォーターフォールモデル」が主流でした。ニーズの分析、要件定義に従って上流から下流へ流れるように開発が行われるため「ウォーターフォール(滝)」に例えられています。最初に全体的な解決策を準備しますが、開発が始まると一切フィードバックが反映できず、柔軟性に欠ける点が、不確実性の高い社会のニーズと噛み合わなくなってきました。1990年代以降、開発期間を短縮するべくフレキシブルな開発アプローチが現れ始め、最終的には「アジャイル」に集約されていきます。2001年に17人の開発者によって出された「アジャイルソフトウェア開発宣言」により、アジャイル開発は一気に広まっていきます。

「アジャイルソフトウェア開発宣言」

私たちは、ソフトウェア開発の実践 あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。

プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。

すなわち、左記のことがらに価値があることを 認めながらも、
私たちは右記のことがらにより価値をおく。

アジャイルをプロジェクトマネジメントで使う

アジャイルの概念をプロジェクトマネジメントに活用し、改革を推し進める企業も増えています。例えば、3000以上の小規模なチームが社内に存在するAmazonは、アジャイル型組織を実践する代表的な企業です。テック部門やビジネスにおけるアジャイルの基本的な活用法としては、以下のようなものがあります。

  • 小規模なチームを組織内に作る
    業務を横断する小さなチームを組織内に作り、アジャイル的なアプローチで改善を繰り返します。無駄な承認プロセスを省くことで、機動力のアップが期待できます。

  • 意思決定はチームや現場で行う
    市場ニーズを捉え、応えていくにはスムーズで迅速な意思決定が成功のカギです。アジャイルを取り入れ、チームや現場に一定の権限を譲渡することで、意思決定を加速化できます。従来のトップダウンでの命令的な指示系統から脱却でき、現場のモチベーションアップも期待できます。

  • 顧客を中心に据え、顧客満足度の向上を狙う
    アジャイル宣言では、顧客と協調することが宣言されています。事前の契約や予め決めた計画通りに進めることより、顧客の声を最優先することで、満足度を飛躍的に向上させ真の競争力をつけられます。

ソフトウェア開発におけるアジャイル開発

エンジニア業界にも注目されるアジャイル開発ですが、効率よく活用するには、アジャイルの特性を理解し、アジャイル開発に適したプロジェクトを見極めることが不可欠です。アジャイル開発が向いているとされるプロジェクトの3つの特徴を確認し、活用できるかどうか見極めましょう。

開発の途中での仕様変更や追加要件の発生があらかじめ想定されている

短いサイクルで実装、検証、改善を反復する「イテレーション」を行うアジャイル開発。プロジェクト内で度重なる変更を余儀なくされる場合でも、小規模な作業単位ごとに開発を進めるため、開発途中であっても影響範囲を最小限にとどめつつ変更や追加要件への迅速な対応が可能になります。変化に強いプロジェクトマネジメント手法としてもアジャイルは有用です。

改善、リリースが継続的に発生する

アジャイル開発は、細かい単位でフィードバックを反映できるため、サービスを1度リリースして終わりではなく、1-2ヶ月に1度のペースで継続的に新しい機能の実装や改善を繰り返すプロジェクトがアジャイル開発に向いています。

要件が不明瞭で漠然としている

要件の3割程度、プロジェクトの状況を見ながら固めたい、というようなケースにもアジャイル開発は向いています。実際に稼働するシステムやソフトウェアを使ってテストできるため、全体像を見ながらプロジェクトを進めることができます。また小規模なローンチごとにクライアントが完成した部分を確認し、生合成をとりながら残りの要件を決定して最終的な納品物の方向性を定めていくことができます。

アジャイル開発の手法

では、実際にアジャイル開発を進めるには、どんな手法があるのでしょうか。代表的な5つの手法を見ていきましょう。

スクラム

「スクラム」はラグビーのスクラムのように少人数のチームが連携をしながら進める開発手法です。1-4週間で新規機能の追加など一つ以上の成果物を仕上げることを目指します。このサイクルのことを「スプリント」と呼びます。プロセス全体を主導するスクラムマスターと呼ばれるメンバーを中心に、毎日15分程度、「デイリースクラム」と呼ばれるミーティングを開催し、直近のアップデートや、今後の開発プラン、抱えている課題などを共有します。スプリントの終盤にはレビュー、振り返りをして次のスプリントの計画へ反映できます。

カンバン

カンバン手法は、カンバンボードと呼ばれるバックログのようなタスク管理リストを使ってプロジェクトの状況を可視化するのが特徴です。担当者やタスク、優先度などプロジェクトの関連情報をボードで一元管理するため、優先すべきタスクの確認やタスクの偏りを避けられます。

レトロスペクティブ

「レトロスペクティブ(振り返り)」は、スプリントにおけるよかった点や問題点を振り返ることです。一定の間隔もしくは特定の作業段階が完了した時点で行い、よかった点、問題になった点、対応策、未解決の部分を話し合います。話し合った内容は、アクションに落とし込み、次のフェーズへ反映させます。レトロスペクティブは、チーム力を高め、生産性を向上させることを目的としています。

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

エクストリームプログラミング(XP、Extreme Programing)とは、他手法と同様、変更に臨機応変に対応するため短い開発サイクルを反復しながら進めます。大きな特長としては、プログラマーが2名で行うペアプログラミングが行われる点です。2人が補完的に共同作業することで、問題解決のスピードが高まり全体の作業スピードを短縮できます。

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

ユーザー機能駆動開発(FDD、Feature Driven Development)とは、全体モデルを作成した後、ユーザー目線で分類した機能ごとに開発を進める手法です。機能は、1-3日程度で実装可能な単位に区切られます。顧客にとっての機能価値を追求する手法で、エンドユーザーが本当に必要とする機能にフォーカスできるのも特長です。

アジャイル開発を成功に導く3つの秘訣

アジャイル開発を導入し、成功に導くには3つの秘訣があります。

1.アジャイルへの深い理解
2.共通のビジョンを持ち続ける
3.リーダーがしっかりと機能すること

1.アジャイルへの深い理解
アジャイル宣言にも書かれているように、アジャイル開発で価値がおかれるのは、「チーム内での対話」「実際に稼働しているソフトウェア」「メンバーと顧客との協調」「変化への対応」です。アジャイルの従来型の開発手法との違いやメリットを、チーム全体、企業全体がよく理解した上で導入を進めましょう。

2.共通のビジョンを持ち続ける
チームや個人ごとにスピーディな判断、意思決定が要求されるアジャイル開発。チームや企業が共通のビジョンを共有すれば、ビジョンに基づいたブレのない決定がより迅速に行われ、短期間で質の高い開発を実現できます。

3.リーダーがしっかりと機能すること
アジャイル開発には、「プロダクトオーナー」と「スクラムマスター」という2人のリーダーが存在し、この2つのリーダーが機能するかしないかはプロジェクトの成否に大きく関わります。
プロダクトの目標や方向性を決定するプロダクトオーナーと、開発がスムーズに進むようにスケジュール調整や問題解決を担うスクラムマスターが機能しない限り、チームは方向性を見失うことになります。

アジャイル開発とDevOpsの関係

アジャイルとDevOpsは、密接に関係しています。DevOpsとは、「Development(開発)」と「Operations(運用)」を組み合わせた言葉です。開発チームと運用チームが連携して開発を進めるという考え方で、対立が多かった二つのチームの協働によりプロジェクトの短期化と成果物の品質向上を可能にします。アジャイル手法を用い、分断されがちだった運用側と開発側のコラボレーションを促進させることで、実装、テスト、運用のプロセスを圧倒的にスピードアップできます。アジャイル開発は、DevOpsとの親和性が非常に高く、またDevOpsのすべての機能がアジャイル開発を補完する関係にあるのです。

アジャイル開発で時代を勝ち抜く開発を実現しよう

不確定要素の高い社会のニーズに対応するべく、スピード感と柔軟性を持つアジャイル開発の導入を検討されているチームも多いのではないでしょうか。アジャイル開発を成功へ導く近道は、適したツールを導入することです。GitLabなら、アジャイル開発環境を手軽に導入でき、セキュアな運用を実現します。

実際に体感してみませんか?

統合されたDevSecOpsプラットフォームによってチームで実現できることをご確認ください。