エンジニアの生き様をウォッチするメディア

会社はアジャイル開発で変わる?計画の進め方とメリットデメリット

会社での働き方をアジャイルで変える

今まで開発手法といえば、ウォーターフォール開発が主流でした。しかし、開発中に仕様変更があった場合に前の工程に逆戻りしてしまうという最大のデメリットがあります。

そこで登場したのが「アジャイル」です。アジャイルの魅力は、何と言っても開発スピードの速さにあります。しかし、アジャイルとはよく聞くものの、実際どういったものでどういった手順で進めていくのかわからない方も多いでしょう。

そこで今回は、これからアジャイルでの開発を検討している方に向けて、アジャイル開発の手法を徹底的に解説していきます。 

アジャイル開発の基礎知識

Web業界で使われる機会の多いアジャイル開発ですが、実際にどういった進め方で開発をしていくのでしょうか。ここでは、アジャイル開発をするにあたって知っておきたい基礎知識を解説していきます。

アジャイル開発とは2001年生まれの開発手法

そもそもアジャイル開発とは、2001年に生まれた開発手法です。アジャイルの意味に「素早い」「機敏な」といった意味がありこの名前が付けられました。

アジャイルが生まれるまでは、ウォーターフォール開発が主流でした。

ウォーターフォール開発では、大きく6工程に分けて開発を進めていきます。初めにクライアントと仕様を決めていく要件定義、その後システム化するために外部設計をします。外部設計後は、よりレイヤーを一段階さげたシステム設計をし、システム設計をもとにコーディング・テスト工程へと進みます。テストが完了したら、本番リリースをし運用をしていく流れです。

流れがわかりやすく、段階的に進めていけるため大規模システムに向いている開発手法です。しかし、設計に時間がかかってしまい、開発期間が短くなって残業続きになる、といったのはよく見られる光景です。

そこで生まれたのがアジャイル開発です。 ウォーターフォール開発と大きく違うのは、機能単位でサイクルを回していくことです。

ウォーターフォールの場合はシステム単位で設計をするため長い時間がかかります。対してアジャイルは機能単位でサイクルを回すため、早ければ着手から1ヵ月という短期間でリリースすることも可能です。

アジャイル開発の3つのフレームワーク

アジャイル開発には大きく3つのフレームワークがあります。それぞれの特徴を理解し、自分の課題解決にあった方法を導入してみましょう。

スクラムでの開発ステップ

開発ステップ(一例)
ソフトウェアに要求される機能と優先度をプロダクトバックログに定義プロダクトバックログからスプリント目標を選択スプリント目標を分解してスプリントバックログを作成タスクを割り当てるデイリースクラム:スプリントの間、毎日ミーティングを開催する1回のスプリントが終了したらスプリントレビューミーティングを開催し、作成されたソフトウェアを評価その後スプリントの振り返りを行い、次のスプリントでの改善策を考案次回のスプリントに備えてプロダクトバックログの見直し

スクラムは、ラグビーで使われているスクラムが名前の由来です。期間は1〜4週間のサイクルで上記の開発ステップを繰り返していきます。

まずはこれから作る機能の整理から始まります。ここでは、優先度の高いものから順に並べていき、この並び替えたものをプロダクトバックログと呼んでいます。

次にプロダクトバックログの中から、今回のスプリントで開発するものを決めます。このときチームの誰がどのタスクを担当するかも決めます。ここで決めたものをスプリントバックログと呼ばれています。

その後はタスクをこなしていきますが、デイリースクラムといって毎日定期的に進捗や課題を確認するミーティングの実施が必須です。ここでは、全体の状況を共有するのが目的で、早めのアラート検知にもつながります。

1回のスプリントが終了したら、スプリント全体のレビューをし作成されたプログラムを評価します。ここで次のスプリントに活かせるよう、さまざまな改善案を出すのが目標です。ここまで完了したら、次に優先度の高い機能を作っていくような形です。

FDDでの開発ステップ

開発ステップ
全体モデル開発feature リスト構築feature 毎の計画feature 毎の設計feature 毎の構築

FDDとは「Feature Driven Development」の略で、日本語だと「ユーザー機能駆動開発」と呼ばれています。FDDは実績のあるベストプラクティスを組み合わせたもので、実際に動作するソフトウェアを繰り返し適切な間隔で提供していきます。実際に使われる場合には、5つのステップに分かれています。

全体モデル開発では、初めに全体のモデルをウォークスルー形式で作成していきます。その後、各部門ごとにより詳細なウォークスルーをおこなっていきます。ここでは、一度全体のモデルを作った後に細かくつめていき、最終的に細かくつめたものを結合させて全体モデルにするのが目的です。

次に重要になるのがfeatureリストです。ここでは、顧客にとっての価値を生む小規模な機能単位をリスト化したものになります。featureリストに選ぶ1つ1つは2週間程度で開発可能なものにしましょう。その後は開発計画の策定、システム設計、システム開発と進んでいきます。

エクストリームプログラミングでの開発ステップ

開発ステップ
計画ゲームイテレーションリリース

エクストリームプログラミングは、ケント・ベックらによって定式化され、提唱されているソフトウェア開発手法のひとつです。事前計画よりも柔軟性を重視する開発方法で、仕様が頻繁に変わる開発に向いています。

この手法で最も重要なのが、顧客もプロジェクトのメンバーの一員として作業していくことです。最初の計画ゲームでは、イテレーションで実施する機能の選定をおこないます。このとき開発メンバーは機能の工数を見積もり、顧客側は機能の優先順位を提示していきます。ここでどういったものを開発するのか決定するのです。

開発機能の選定が完了したところで、イテレーションによって開発をおこなっていきます。このステップでは、顧客側はテストに参加し密なコミュニケーションを取って進めていくことで、認識の齟齬がなく進めていけます。イテレーションが完了し、顧客の受入テストが完了した機能をリリースします。イテレーションは通常1〜2週間程度の実施です。

プロジェクトチーム内での役割

必要な役割
プロダクトオーナースクラムマスター開発チーム

役割内容
プロダクトオーナープロジェクトを管理する立場
スクラムマスター所属チームのリーダークラス
開発チーム開発に専念

スクラムを例に説明すると、プロジェクト内のメンバーは大きく3つの役割に分かれます。プロダクトオーナーは、プロジェクトマネージャーの立場です。主にチームの管理をする役割で、顧客との調整もおこないます。基本的に開発などで手を動かすことはなく、管理や調整に専念していきます。

次にスクラムマスターは、それぞれのチームのリーダー的ポジションです。プロジェクトが大きい場合、チームごとに開発をおこなっていきます。チーム全員の管理はプロダクトオーナー1人ではできないので、スクラムマスターがチーム内の進捗管理やタスクの管理をしていきます。チームの状況をプロダクトオーナーに伝えるのもスクラムマスターの仕事です。

最後に開発チームは実際に手を動かしていくメンバーです。基本的に開発に専念し、何かあればスクラムマスターに伝えていきます。開発工程の中には、設計からテストまで全てを含んでおり、幅広い業務をこなしていきます。

プロジェクトチームに求められるスキル

役割必要なスキル
プロダクトオーナーコミュニケーションスキル、判断力、コミット力、IT全般の知識
スクラムマスターリーダーシップ、管理能力、開発経験
開発チーム設計知識、開発知識、テスト知識

プロダクトオーナーはチームを管理する立場のため、多くのスキルが必要です。技術的な知識が必要なのはもちろん、ヒューマンスキルが非常に重要です。プロジェクトがうまくいくかどうかは、プロダクトオーナーの腕次第といっても過言ではありません。

スクラムマスターは、チームをまとめる立場のためシステムに関してはそのチームで最も詳しい人間でなければなりません。どういった機能を作るのか、といったことを常日頃頭に入れ開発チームからの問いにすぐに回答できるようにしておく必要があります。

最後に開発チームは開発するにあたっての知識が必要です。技術力をつけるためにも、日頃から業務後に勉強したり、勉強会に積極的に参加するなど自己投資をしてスキルを身に付けると良いでしょう。

開発チームはメンバーの能力を把握して組む

プロジェクトメンバーに必要なスキルを解説しましたが、必ずしも全てを満たしている必要はありません。開発はチームでおこなっているので、自分に足りないところはチーム全体でカバーすれば問題ないのです。個人としてクリアするのが目的ではなく、チームでサイクルを回せるようにするのがゴールです。そのため、チームを組むときはそれぞれの長所と短所を理解した上で組みましょう。

アジャイル開発のメリット

アジャイル開発には多くのメリットがあります。下記、主に3つの特徴をみていきましょう。

開発段階での問題点を修正しやすい

アジャイル開発は分割したサイクルで開発をおこなっていくため、何か問題が発生したとしてもすぐに手戻りができます。長くても1ヶ月でサイクルを回すため、手戻りしたとしてもすぐに遅れを取り戻せます。手戻りが少ないと修正までの工数も少ないため、結果的に全体の工数削減にもつながるのです。

顧客ニーズを最大限に引き出せる

開発中は顧客とのコミュニケーションを密にとっていくので、顧客のニーズを最大限に引き出せます。アジャイル開発は、顧客もチームメンバーの一員として一緒に開発していきます。そのため、すぐにフィードバックをもらえるため認識の齟齬がなく開発を進められます。

開発の納期を短縮できる

アジャイル開発は長くても1ヶ月でサイクルを回すため、スピーディーな開発ができ納期の短縮につながります。特に最近のトレンドへの対応が求められるWebサービスやスマホアプリの開発に向いています。その反面、大規模システムのようなしっかりとした仕様や納期を求められるものには向きません。

アジャイルで開発する会社の成功例

ここまでアジャイル開発についての解説をしてきましたが、実際にどういった企業で活用されているのかも気になるところです。ここでは、アジャイル開発の導入が奏功した各企業のケースをご紹介します。

デンソーの新サービス開発

デンソーは「フリートオペレーションサービス mobi-Crews」をアジャイル開発によって開発しました。サービスは2019年にリリースされ、開発自体は2018年の事例です。

フリートオペレーションサービス mobi-Crewsは、ライブレコーダーをベースとした車載端末を用いて、車両位置や運転状況を管理者に送信して安全性を高める仕組みです。たとえば急ブレーキを押してしまうような危険な場面が発生すると、リアルタイムで管理者に動画が送られ、今後の安全改善に役立ちます。

デンソーではスクラム開発を取り入れ、顧客も巻き込んで開発を進めていきました。特に注意したのは、開発を複雑化させないことです。通常バックエンドとフロントエンドで分けて開発するところを、デンソーでは分けずに開発を進めました。そうすることでより開発期間の削減へとつながったのです。

IBMでの大規模な開発プラットフォーム構築

IBMでは、2008年に大規模開発をアジャイル開発で成功させました。開発したのは、買収した複数社の開発プラットフォームを1つにまとめるという案件です。本来、仕様や期間をしっかりと決めなければならない大規模システムはアジャイルには向きません。しかし、IBMでは少人数を複数作り、全チーム同じ期間で繰り返しテストをおこなうことで成功へ導きました。

PayPalの生産性向上

PayPalではアジャイル開発を導入したことで、生産性が約29%向上し、開発チームの規模も8%縮小されました。また、導入前までは企業の成長スピードに開発のプロセスが追いついておらず、スピーディーな開発が求められていました。アジャイル開発の導入により、生産性の向上につながったのです。

アジャイルで開発を進める難しさ

アジャイル開発をこれから試したいと思った方もいらっしゃるでしょう。しかし、アジャイル開発を進めていく上で難しい部分も多くあります。ここでは各見出しで、難しい部分とそれを乗り越えるために必要なことを解説します。

当初のコンセプトからブレやすい

アジャイル開発の魅力はすぐに仕様変更ができることですが、すぐにできるからこそコンセプトがずれやすいです。実際にサイクルを回している時は気付きませんが、テストが終わってリリースしたらコンセプトが変わってしまう、ということも多々あります。そうならないためにも、最初に軸となるコンセプトを作っておくことが重要です。

全体のスケジュールに対する進捗把握が難しい

基本的にサイクル単位で進めており、変更が随時発生するため全体のスケジュールに対する進捗把握が難しいです。臨機応変さが長所のアジャイル開発ですが、その反面、スケジュール全体の把握が疎かになるとともに、各自の進捗が見えなくなってしまうケースがあります。そのため、スケジュールと進捗についてはチーム内で常に共有していくことが重要です。

プレッシャーが大きい

サイクルの期間は大抵1〜2週間が設定され、非常に短い期間で繰り返していきます。そのため、開発の遅れがあってはならないというプレッシャーがメンバーそれぞれにかかってしまいます。そこで重要なのが、プロダクトオーナーやスクラムマスターのサポートです。こまめにメンバーの状態を確認し、モチベーションを維持しておくと開発も円滑に進みます。

プロジェクト目的・ゴールを理解することが不可欠

アジャイル開発は、各メンバーがやるべきことを自主的に行っていかなければなりません。そのため、プロジェクトの目的とゴールを常に確認して進めるのが必要不可欠です。各自の理解にズレが生じている場合、チーム全体で改めて確認の時間を取るべきと言えます。

会社にアジャイル開発を導入しよう

今回は、これからアジャイルでの開発を検討している方に向けて、アジャイル開発の手法を徹底的に解説しました。

アジャイル開発を導入することで、スピーディーな開発ができ顧客とのコミュニケーションも密にとれるため、認識のズレが少なく進められます。

今回の記事を参考に、まずは小さいプロジェクトからアジャイル開発を導入してみましょう。