昨今、多くの業務でDX化(Digital Transformation)を推進する声を耳にします。
そんな流れの中、ソフトウェア開発で『アジャイル開発』が主流になりつつあります。
|
これらの悩みを解決しながら、アジャイル開発とは何かを解説します。
記事を読み終えると、アジャイル開発の考え方や始め方を理解できます。
結論は、『短いサイクルで開発とリリースを繰り返す開発手法』の総称をアジャイル開発といいます。
また、筆者自身クラウドソーシングサイトであるランサーズにてコンスタントに毎月10万円を稼ぎ、プログラミング業務にて2021年6月に最高報酬額である30万円を突破しました。
年間報酬額も100万円突破するなど、実務的なプログラミングの活用方法や具体的な稼ぎ方について、一定の記事信頼を担保できると思います。
プログラミングは習得することで、本業/副業に十分活かせる武器になると先にお伝えしておきます。
目次
アジャイル開発とは?
アジャイル開発とは、『短い期間でリリースし、フィードバックを受け、改善を繰り返す』開発手法の総称です。
主なアジャイル開発手法は、以下の2つです。
|
テスト駆動開発(TDD)も開発手法として取り上げられる記事がありますが、TDDは「アジャイル開発において基本となるプログラミング手法」です。
アジャイル開発の特徴として、短いサイクルで反復的に開発します。
短い開発サイクルのことをイテレーション(XP)やスプリント(スクラム)と呼びます。
1つの開発サイクル(スプリント)で設計・実装・テストを行い、動くソフトウェアとして半完成品を作ります。
開発の中でしか気付けなかった問題や要件変更に対応できる開発手法です。
従来型のウォーターフォール開発とは?
ウォーターフォール開発とは、『滝の流れのように進める』開発手法です。
「開発する”モノ”を明確にする工程」と「前工程に対応したテスト」が存在します。
各工程は時系列で並べれており、基本的に前工程に後戻りが発生しません。
左側に開発工程、右側にテスト工程を設けて並べたものをV字モデルと呼びます。
ウォーターフォール開発は工程通りに進行するため、進捗が容易に確認できます。
工程も完全に分離されるため、明確な役割分担も可能です。
ウォーターフォール開発も利点が多いため、ほとんどのソフトウェア開発の現場で利用された実績ある手法です。
アジャイル開発とウォーターフォール開発の違い
『アジャイル開発』と『ウォーターフォール開発』は一長一短であり、どちらがよいか一概に決められません。
『アジャイル開発』はいち早く市場にリリースし、ユーザーやクライアント等の意見を踏まえて改善することで価値を最大化する手法です。
一方で、『ウォーターフォール開発』は開発/テスト工程をしっかり分け、プロセスを重視します。
一つのミスが危険を伴うシステムであれば、計画から十分に練り上げ時間をかけて開発・検証する『ウォーターフォール開発』が適しています。
つまり、置かれている状況をしっかりと把握・理解し、最適な開発手法を選択することが質の高いプロダクトになります。
アジャイル開発とウォーターフォール開発のサイクル比較
『アジャイル開発』と『ウォーターフォール開発』のサイクルは大きく異なります。
また、サイクルの違いから「初めて動くソフトウェア」が作られるタイミングも変化します。
『ウォーターフォール開発』は、実装工程にたどり着くまでがアジャイル開発に比べて時間がかかります。
一方で『アジャイル開発』は、1サイクル(スプリント)が短期間であるため、ウォーターフォール開発に比べて圧倒的に動くソフトウェアのリリースが早いです。
アジャイル開発のプロセス
アジャイル開発のプロセスを解説します。
アジャイル開発のプロセスを解説する上で、知っておくべきキーワードが以下のものです。
<イベント>
<成果物>
|
以下にプロセスの全体像を図示します。
スプリント(イテレーション)の起点は、プランニング(スプリント計画/スプリントバックログ)です。
計画したプロダクトバックログアイテムを開発し、朝会(デイリーミーティング)で計画チェックします。
通常スプリント(イテレーション)の最終日にスプリントレビューを行い、完成したプロダクトバックログアイテムの受け入れと動くソフトウェアの方向性を議論します。
スプリントの最後に振り返り(レトロスペクティブ)を行い、開発チームを改善します。
プロセスを構成する各イベントはタイムボックスであり、決めた曜日(期間で変化)の決めた時間帯で実施します。
スプリントによって、チームが継続的に価値ある動くソフトウェアを開発するためのリズムが生まれます。
スプリント(イテレーション)
スプリント(イテレーション)は、動くソフトウェア(インクリメント)を開発するための開発期間の単位です。
スプリントの長さは、通常1週間から4週間(1ヶ月)の期間で決め、1度目のスプリントが始まったら基本的に長さの変更は行いません。
もちろん、チームパフォーマンスによって変更が必要と判断された場合は長さの変更を行います。
プランニング(スプリント計画/スプリントバックログ)
プランニングは、スプリントの始めに実施され作業を計画するイベントです。
スプリントで実現する目的と着手するプロダクトバックログアイテムを決めます。
また、プロダクトバックログアイテムの実現に必要な作業タスクを洗い出します。
レビュー/受け入れ(スプリントレビュー)
レビューは、通常スプリントの最終日に設けます。
成果物である動くソフトウェアをチームや関係者にてレビューします。
また、プロダクトオーナーが存在しソフトウェアがプロダクトバックログアイテムの受け入れ条件を満たしてるか判断します。
受け入れは、要件に基づき開発チームが作成した成果物をプロダクトオーナーが受け入れ判断する条件です。
振り返り(レトロスペクティブ)
振り返り(レトロスペクティブ)は、通常スプリントの最後に実施するイベントです。
開発チーム全体でスプリントのプロセスを振り返り改善します。
プロダクトバックログ
プロダクトバックログは、動くソフトウェアの開発に必要なリストです。
リストを構成する各項目をプロダクトバックログアイテムと呼びます。
ソフトウェアの要件以外も項目となることや各項目の優先順位、優先順位の項目ごとに粒度と詳細内容が異なることなど、単純な機能一覧だけがアイテムになるわけではありません。
また、アイテムが完了したか判断する受け入れ条件を明確に示しておく必要があります。
動くソフトウェア(インクリメント)
スクラム開発では、動くソフトウェアあるいはインクリメントと呼びます。
開発サイクルのスプリントを回すたび動くソフトウェアがインクリメント(漸進的・増加的)といった『少しずつ積み上がる』イメージから名付けられています。
アジャイル開発において設計書やドキュメントよりも、実際に動くソフトウェアが重視されています。
まとめ
アジャイル開発とは、『スプリントを反復的に繰り返し、動くソフトウェアを開発する』手法です。
主なアジャイル開発手法は、以下の2つです。
|
アジャイル開発のプロセスと1スプリントを把握すると、開発手法の全体が理解できます。
アジャイル開発のプロセスを解説する上で、知っておくべきキーワードが以下のものです。
<イベント>
<成果物>
|
アジャイル開発で利用される言葉を正しく理解できれば、開発チームとしての成長につながります。
クライアントやユーザーの要求に素早く対応しなければ、開発およびビジネス競争に勝つことはできません。
そのため、アジャイル開発が生み出す価値は計り知れないと考えます。
アジャイル開発を通して動くソフトウェアを提供し、チームも成長することで価値駆動型のビジネスを展開しましょう。