Forkwell Press

SHARE

topの画像
Career

アジャイル開発のメリットと成功事例3選

エンジニアに役立つ情報を定期的にお届けします。

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

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

今回はアジャイル開発のメリット・デメリットや成功事例に加え、プロジェクトチームに求められるスキル・役割まで徹底的に解説します。

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

1枚目の画像

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

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

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

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

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

3. 開発の納期を短縮できる

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

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

2枚目の画像

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

1. 株式会社デンソー

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

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

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

参考リンク:デンソーのアジャイル開発チームができるまで チームビルディングにおける工夫と実装の裏側 – 株式会社デンソー

2. 日本IBM株式会社

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

参考リンク:IBM流アジャイル開発 – 日本IBM

3. ペイパルジャパン株式会社

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

参考リンク:https://japan.zdnet.com/article/35073684/

アジャイルのデメリット3選

3枚目の画像

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

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

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

2. プレッシャーが大きい

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

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

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

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

4枚目の画像

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

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

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

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

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

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

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

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

2. FDDでの開発ステップ

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

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

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

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

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

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

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

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

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

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

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

 

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

1. プロダクトオーナー

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

2. スクラムマスター

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

3. 開発チーム

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

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

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

1. プロダクトオーナー

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

2. スクラムマスター

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

3. 開発チーム

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

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

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

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

5枚目の画像

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

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

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

ForlkwellPress ロゴ画像

編集部

Follow

エンジニアに役立つ情報を定期的にお届けします。

キーワード

エンジニアに役立つ情報を定期的にお届けします。

SHARE

目次

目次