2021.06.30 【責任編集】ラーニング・ツリーアジャイル開発とは
ソフトウェア開発において最近特に聞くようになった“アジャイル開発”について簡単に説明します。
アジャイル開発は2001年『アジャイルソフトウェア開発宣言』が提唱されたことから始まります。
この宣言は、アメリカのユタ州・スノーバードにて、当時のソフトウェア開発に不満を抱いていた17名の開発者が集い、議論し、これからの開発手法のあるべき姿を下記「4つの価値」と「12の原則」にまとめたものになります。
<アジャイル開発の4つの価値>
- 個人との対話
- 動くソフトウェア
- 顧客との協調
- 変化への対応
<アジャイル開発の12の原則>
- 顧客満足度を優先し、価値あるソフトウェアを早く継続的に提供する
- 開発途中であっても要求(仕様)の変更を歓迎し、変化を味方につける
- 動くソフトウェアをできる限り短い間隔でリリースする
- ビジネス側の人間と開発者は日々一緒に働かなければならない
- プロジェクトが無事完了するまで周囲のメンバーを信頼する
- 対面でのコミュニケーションを中心に情報交換の効率化を図る
- 「動くソフトウェア」を最も重要な指標とする
- 一定のペースで継続的に維持できるプロジェクトを推進する
- 目先の生産性にとらわれず、技術と設計に対する時間をいとわない
- 不必要な機能を排除してシンプルさを追求する
- 責任感のあるチームこそ最良のソフトウェア開発を生み出す
- 定期的な振り返りで教訓を得て、効率性を高める改善を怠らない
アジャイル開発の具体的なやり方
アジャイル開発はいわゆる「反復型の開発手法」です。従来主流だったウォーターフォール開発ではプロジェクト全体で「上流から下流へ」という決まった工程があったのに対し、アジャイル開発は要件ごとに開発工程を区切ります。
「定義→開発→リリース→評価」という短いサイクルをいくつも設けて、要件ごとの開発を進めていく手法です。
従って、ウォーターフォール開発が滝の流れをイメージしているのなら、アジャイル開発は「レゴブロックのような開発手法」と言えるでしょう。
アジャイル開発の手法
現代のアジャイル開発には主要な4つの手法があります。それぞれに違いがあり、開発環境に応じて使い分けるのがポイントです。
スクラム
最もポピュラーなアジャイル開発手法。「チーム力」を重視することから、ラグビーにおいて各チームの8人ずつが肩を組むスクラムが語源です。
要件・価値・リスク・必要性などの基準から開発するプロダクトに優先順位を付け、短い開発期間(タイムボックス)の中でレビューと改善を繰り返すというやり方。チームコミュニケーションが非常に重要なため、メンバーが固定されているプロジェクトでなければ効果を最大化できません。
XP(エクストリーム・プログラミング)
プログラマーに主眼を置いたアジャイル開発です。基本的にはスクラムと変わりませんが、「ペアプログラミング」といって二人一組でプログラミングを行うのが特徴です。また、ゼロからのソフトウェア開発よりも機能追加や仕様変更などによく用いられる手法になります。
プログラムの実装よりもテストコードを先に作成する「テスト駆動開発」が中心であり、シンプルな設計を目指すことができます。
FDD(フィーチャー・ドリブン・デベロップメント)
ユーザーにとっての価値(Feature)を重視したアジャイル開発です。ユーザーのビジネスモデルを理解した上で、データ入力機能やログイン機能などユーザー視点からの開発設計を行い、ソフトウェアの快適さを追求します。
適切な感覚での価値提供を繰り返すことで、ユーザーに継続的な価値を生み出す開発手法になります。
DevOps(デブオプス)
開発チームと運用チームが協力することを前提にしたアジャイル開発です。Flickr(フリッカー)の開発者が2009年に提唱した開発手法で、対立関係になりやすい開発・運用の両チームが協力することで、より高速な開発が可能になるとしています。
アジャイル開発のメリット
アジャイル開発最大のメリットは、「要求変更への対応がスムーズ」ということ。要求変更の発生を前提とした開発手法なので、変更への対応力を極限まで高めた開発手法になっています。
従来型のウォーターフォール開発では変更内容によって手戻りが大きくなり過ぎ、プロジェクト全体への影響が大きいのに対し、アジャイル開発では変更への対応力が高い開発手法と言えます。
また、先に紹介した「4つの価値(個人との対話・動くソフトウェア・顧客との協調・変化への対応)」を中心にしていることもあり、ユーザーの要求へ最大限応えられるというメリットもあります。
アジャイル開発のデメリット
一方、アジャイル開発のデメリットは「開発の方向性を見失いやすい」ことと、「プロジェクト全体のスケジュールが読みづらい」ことです。
積み上げ式の開発手法であり進捗を把握しづらいのが原因です。このデメリットをカバーするには、アジャイル開発において経験豊富なエンジニアの存在が不可欠になります。
このため、初めてアジャイル開発に取り組む場合は経験豊富な人材を確保すること、育成することが最初の課題になるでしょう。
まとめ
ウォーターフォール開発と共に、アジャイル開発の価値を理解し、使い分けて行くことが求めれています。
今回、アジャイル開発の説明はあくまで「概要」ということをご理解ください。アジャイル開発は奥が深く、価値を最大限高めるには十分な知識と技術が欠かせません。
しかしアジャイル開発の概要を知ったことで、皆さんはアジャイル開発の世界に一歩足歩を踏み入れたと言って良いでしょう。継続的な学習によって、アジャイル開発に対する知識を深め、同時に技術を身につけていただければと思います。
この記事を読んだ方へお勧めの講座
【公開講座・オンラインライブ研修】はじめてのスクラム│ラーニング・ツリー・インターナショナル (learningtree.co.jp)
【公開講座・オンラインライブ研修】IT部門ではない人のためのスクラム入門│ラーニング・ツリー・インターナショナル (learningtree.co.jp)