私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
アジャイル開発とは? メリットや成功の秘訣など、今さら聞けない基本を解説
従来のウォーターフォール開発と比較すると開発スピードの速さに定評があり、多くのプロジェクトで導入されている開発手法「アジャイル開発」。
一方でアジャイル開発ならではの難しさもあり、安易に取り入れてしまえばプロジェクトが失敗に終わることも珍しくありません。
そこで今回はアジャイル開発の特徴を理解し、アジャイル開発を成功させるための秘訣を幅広く紹介します。
アジャイル開発を検討している人や、実際にアジャイル開発に携わりながらもメリットを享受できていない人は必見の内容です。
アジャイル開発とは?
アジャイル(agile)には「素早い」「機敏な」という意味があり、システム開発における「計画」「設計」「実装」「テスト」「運用」の工程を機能単位の小さいサイクルで繰り返す開発手法のことを指します。
リリース後にブラッシュアップしていくことを前提とし、優先度の高い重要な機能から着手することができるため、サービスインまでの期間を短縮できるのが特徴です。
アジャイル開発の要件定義ではおおよその仕様しか決めないため仕様変更に強く、プロダクトの価値を最大化するのに適した開発手法です。
アジャイル開発の歴史
アジャイル開発の発端は2001年。アメリカ・ユタ州の17名の技術者・プログラマーが「アジャイルソフトウェア開発宣言」を提唱したのが始まりです。「アジャイル=素早い」という言葉通り、アジャイル開発はクライアントのニーズを優先させつつ、効率的に素早く開発することを目的に考えられた開発手法です。
その後アジャイル開発が日本で導入され始めたのは2000年代半ばごろ。2009年には公の交流イベントとしては初となる「アジャイルジャパン」が開催され、現在も年1回のペースで開催されています。
アジャイル開発の流れって?
アジャイル開発の流れは「計画」「設計」「実装」「テスト」「運用」を一つの流れとし、この工程を短い期間で繰り返し行います。
計画段階で決めるのは大まかな概要のみで、開発を進めていく中で生じた問題点やクライアントのニーズに適宜対応しながら進めていきます。
開発状況をクライアントとこまめにすり合わせられるため、納品時の方向性の違いやトラブルを防ぐことができます。
アジャイル開発とウォーターフォール開発の違いは?
アジャイル開発が登場する前、開発現場ではウォーターフォール開発が一般的でした。
ウォーターフォール(waterfall)には「滝」という意味があり、あらかじめシステムの全機能に関する要件定義や設計を綿密に行ってから開発工程に進む手法です。
水が上から下に落ちていくように、各工程を段階的に進めていくため、プロジェクト全体の計画が立てやすい点やメンバーの管理がしやすい点がメリットですが、開発途中の仕様変更や機能追加が難しい点や、要件定義の時点で抜け漏れがあった場合に大幅なコストがかかる点がデメリットでした。
関連記事
アジャイル開発の手法って何があるの?
一口に「アジャイル開発」と言っても、複数の開発手法があります。まずは代表的な三つの手法についてみていきましょう。
アジャイル開発の中でももっとも有名な手法がスクラム開発です。ラグビーの「スクラム」が語源となっており、チームを組んでそれぞれのチームが「何が必要か?」「いつまでに必要か?」「誰が何をやるか?」といった視点で役割やタスクを分散します。
チーム一体となってプロジェクトを進めていくため、さまざまな作業を同時進行で進めることができるのが利点ですが、チーム内のコミュニケーションが足りないと開発がスムーズに進まない、機能が正常に動作しないなどの不具合につながる可能性があります。
エクストリーム・プログラミングは柔軟性に優れた開発手法とされており、10人程度の少人数でのチームに適した開発手法です。
エクストリーム・プログラミングではチーム内で5つの価値(コミュニケーション・シンプル・フィードバック・勇気・尊重)を共有するのが特徴で、19のプラクティス(慣習となっている手法)が存在します。
ユーザー機能駆動開発は、ユーザー目線での機能価値を中心とした開発手法のこと。ユーザーに必要な機能を洗い出し、一定の間隔内でリリースを繰り返しプロダクトを完成させていきます。
ユーザーのビジネスモデルを理解することが求められる手法なので、計画段階からユーザーとのコミュニケーションが重要視されます。
アジャイル開発に向いているプロジェクトとは?
前述した通り、アジャイル開発の特長は開発途中の仕様変更に柔軟に対応できる点です。
そのため、Webサービスやスマートフォンアプリなど時代や状況によって仕様変更の可能性があるプロジェクトや、初期段階でプロジェクト全体が不明瞭な場合、クライアント参加型のプロジェクトの場合は一度決めた仕様を変えられないウォーターフォール開発よりもアジャイル開発の方が向いているといえるでしょう。
また同様の理由で試行錯誤が多く、開発にスピード感が求められるDX推進プロジェクトにおいてもアジャイル開発は重宝されています。
アジャイル開発に関する用語集
アジャイル開発の現場ではよく登場する用語があります。代表的なものを四つご紹介します。
アジャイル開発では「ユーザーが実現したいこと」「ユーザーにとって価値があること」をまとめたもの、つまり「要件」のことをユーザーストーリーと呼びます。
付箋のような小さな紙に書き出し、ユーザーストーリー・マッピングを作ることで開発における優先順位を決めるなど、サイクルを回す際の手がかりとして活用します。
イテレーションとは、アジャイル開発における計画~運用までの1サイクルのことです。スクラム開発では「スプリント」とも呼ばれます。イテレーションの期間は一般的に1~4週間で設定します。
1回のイテレーションで完了できたユーザーストーリーの量、つまりチームの開発速度のことを指します。初期段階ではベロシティの量は不透明なまま開発が進んでいくことが多く、イテレーションを回しながら実数値を計測し、正確な数値を導き出します。
プロジェクトのゴールやイテレーションの期間、ユーザーストーリーの優先順位などを決めたプロジェクトの全体的な計画のことです。アジャイル開発のリリース計画は流動的なので、リリース計画は都度更新されるのが基本です。
アジャイル開発のメリット・デメリット
アジャイル開発はシステム開発においてウォーターフォール開発と並んで代表的な開発手法の一つです。システム開発を検討している人の中には、「アジャイル開発とウォーターフォール開発のどちらを採用すれば良いのか……」と悩んでいる人も多いのではないでしょうか?
そこでウォーターフォール開発と比較したアジャイル開発のメリット・デメリットを解説します。ぜひ参考にしてみてください。
アジャイル開発のメリット
これまで述べている通り、アジャイル開発は開発過程を細分化し計画~運用を繰り返すため、細かな仕様変更や新機能の追加が可能です。万が一トラブルや不具合が発生した場合も修正にかかる工数が少ないため、素早く対応できるのが特徴です。
アジャイル開発ではシステムを機能ごとに分けてそれぞれのチームが同時並行で開発を進めることができます。優先順位に応じて部分リリースすることもできるため、ひとまずサービスをリリースしてその後ユーザーの反応を見ながら機能追加していく……ということも可能です。
アジャイル開発では開発途中もユーザーとコミュニケーションを取りながらフィードバックを行います。ユーザーの要望にも都度対応できるため、最終的にユーザーにとって満足度が高いシステムを納品することが可能です。
アジャイル開発のデメリット
アジャイル開発はウォーターフォール開発とは違い、プロジェクト中にリリース計画が更新されます。ある程度ベロシティの量を正確に出せるようになるまでは全体の見通しが立てられないのがデメリットの一つ。
またプロジェクト中にトラブルが多く発生した場合や変更点が発生した場合、工数が予想以上に膨らんでしまうことも。各チームの作業に無駄が生じないように開発を進めることが求められます。
ユーザーの要望に都度対応できることはアジャイル開発のメリットではありますが、開発段階での変更点が多くなりすぎるとプロジェクトの方向性が揺らいでしまうことも。
ユーザーとコミュニケーションを取る中で、定期的に方向性のすり合わせを行うことが大切です。
大規模な開発の場合、プロジェクトの長期化が想定されます。アジャイル開発はスケジュールの管理が難しい開発手法なので、長期化しやすい大規模開発には向かないとされています。1チームあたり3~10名程度の人数が最適でしょう。
アジャイル開発の成功例
アジャイル開発は小規模な開発に向いている開発手法ですが、大規模なシステム開発で導入された例もあります。どのようなものがあるかを見ていきましょう。
KDDIは日本でいち早くアジャイル開発を導入した企業の一つ。2019年7月より提供が開始された情報配信サービス『登録エリア災害・避難情報メール』にはスクラム開発が導入され、他社と連携してスムーズなプロジェクト進行とフレキシブルな開発を実現しました。
NTTデータでは2016年に「Agileプロフェッショナルセンタ(略称:APC)」を発足。
アジャイル開発の推進に力を入れています。NTTデータが長年提供している決済サービス『CAFIS』の周辺サービス『Digital CAFIS』ではアジャイル開発が導入され、安定運用を実現しています。
鹿児島銀行が提供するキャッシュレス決済サービス『Payどん』にもアジャイル開発が導入されています。
Payどんは完全キャッシュレス商業施設「よかど鹿児島」内で利用することを目指していたため、オープン日に合わせてリリースすることが絶対条件。一切の遅延が許されない中、最適な工程管理により素早いリリースを実現しました。
アジャイル開発を成功させるために必要なこと
アジャイル開発はユーザーの要望をかなえ、かつスピーディに開発を進められる開発手法ではありますが、プロジェクトによって向き不向きがあり、やみくもに取り入れればいいというものではありません。
またチームがアジャイル開発の進め方を理解していないと、アジャイル開発の利点を活かすのは難しいでしょう。アジャイル開発を成功させるために必要なことをまとめてみましたので、参考にしてみてください。
チームが協調する
アジャイル開発はウォーターフォール開発などと比較すると仕様変更が多い傾向があります。そのため変更点は常にメンバー間で共有している必要があります。
また、開発要件が複雑になりやすいため、適切なタイミングで振り返りを行ったりお互いの役割を理解したりすることが大切です。
スクラム開発では関係者を3種類に分け、それぞれの立場の人が役割を理解し、責任を持つこと、そして協調し合うことが求められます。
開発ツールを導入する
アジャイル開発に限った話ではありませんが、効率的に開発を進めるには開発を支援するITツールが必要不可欠です。
特に各チームが同時並行的に開発が進んだり、変更点が発生したりしやすいアジャイル開発においては、コミュニケーションツールやタスク管理ツールの活用がおすすめです。
アジャイル開発をする際の注意点
プロジェクトの進捗状況やユーザーの要望などによってフレキシブルに変更が生じるアジャイル開発においては、要件定義や設計書などのドキュメントの作成が無駄だと思えるかもしれません。
一方で、最近のシステム開発ではリリース後に機能を追加しながら運用していくことは珍しくありません。別チームに引き継ぎを行うことも考慮し、「要件定義書」「基本設計書」「テスト結果報告書」などの最低限のドキュメントは残しておきましょう。
アジャイル開発に関する書籍5選
「アジャイル開発の特徴や利点はなんとなく理解したので、アジャイル開発の進め方や雰囲気を理解したい」という方や、実践的なヒントを探している人には書籍もおすすめです。初心者〜上級者向けの書籍を五つご紹介します。
難易度:★☆☆☆☆
初心者がアジャイル開発の全体像をつかみたいときにおすすめの本です。前提知識がない人にも易しい内容となっているので、プロダクトオーナーなど、ビジネスサイドの人がアジャイル開発について学ぶ際にも役立ちます。最初に手に取る1冊として最適と言えるでしょう。
難易度:★☆☆☆☆
アジャイル開発の中でもスクラム開発についてマンガ形式で学べる書籍です。こちらも初心者向けの内容ですが、システム開発について理解していないクライアントが登場したり、デモで不具合が発生したりと「いちばんやさしいアジャイル開発の教本」よりも実践的でシビアなシーンが出てくる点が特徴です。
難易度:★★☆☆☆
アジャイル開発の考え方やワークフローについて解説されているほか、「仕事の進め方」や「コミュニケーションの取り方」についても言及されており、バランスのいい1冊です。著者が外国人ということもあり、文体が独特なので購入前に一度目を通してみるのがおすすめです。
難易度:★★★☆☆
アジャイル開発に取り組む主人公がトラブルやチーム内の軋轢、無理難題を押しつけるクライアントなど、さまざまな困難を乗り越えて開発現場の改革を進めるストーリーが紹介されており、エンジニアであれば涙なしには読めない内容となっています。
ストーリーとしても面白く、「さくさく読める」という声が目立ちました。
難易度:★★★★☆
「アジャイルが最高の解決策」という内容の書籍が多い中、「正しい(=良い)プロダクトをつくるためには何が最適か」という視点で語られており、アジャイル開発の利点はもちろん厳しさについても触れています。
正しくないものを作らないためにどうすればいいのか、教科書通りに進まない時の道しるべとなる1冊です。
アジャイル開発は環境変化に強い開発手法
アジャイル開発は急な要件変更に対応でき、なおかつスピーディな開発を実現するため常に変化しつづける業界やサービスで重宝される開発手法です。ただし、万能というわけではなくやはりメリット・デメリットは存在します。
またエンジニアはもちろんプロダクトオーナーやスクラムマスターなど、チーム内のメンバーがそれぞれの役割を理解し、まっとうしなければアジャイル開発はスムーズに進みません。
アジャイル開発を導入する時は「アジャイル開発が本当に適しているのか」「アジャイル開発を理解しているメンバーがいるか」といった視点を持つことで、アジャイル開発の利点を最大限活かすことができるでしょう。
文/赤池沙希
RELATED関連記事
RANKING人気記事ランキング
米国優位が揺らぐ?ひろゆき「CPUの進化でGPU神話って崩壊しません?」【AI研究者・今井翔太が回答】
NEW!
表面的なテクニックより「基礎基本の重要性」に気付かされた一冊【Node.js 日本ユーザーグループ代表・古川陽介】
AWS認定資格10種類を一覧で解説! 難易度や費用、おすすめの学習方法も
NEW!
正論モンスター化に要注意!ぎくしゃくしない「ミスの指摘」のコツ【澤円「コミュ力おばけ」への道】
社会で成功するゲーマーに、ひろゆきが聞く「現実世界を攻略できないゲーマーに足りないものって何すか?」
JOB BOARD編集部オススメ求人特集
タグ