銀の弾丸ではない アジャイル開発を正しく理解をしよう
今回はアジャイル開発というものがどういったものなのかざっくりご紹介をしていきます。主にWebアプリケーションやモバイルアプリケーションの開発を担当しているkureyです。こんにちは。
アジャイル開発は今やソフトウェア開発を行っている業界でよく耳にする開発手法です。
「スピーディな開発」
「仕様の変化に柔軟な開発」
これだけ聞くと「すごい魅力的な開発手法じゃん。」「アジャイルで開発すればコストも抑えていいものが作れるね。」って思うじゃないですか?
しかしアジャイル開発を正しく理解していないとスピーディな開発も仕様の変化に柔軟な開発もうまくいかず「こんなはずでは・・・」となってしまいます。
そこで今回は
- アジャイル開発とは具体的にどういったものなのか。
- どういう開発に向いているのか。
という切り口で第1回目をお送りしたいと思います。
*1.必要なものを必要な分だけ作る
アジャイル開発でもっとも大切なことは必要なものを必要な分だけ作るということです。
これはウォーターフォール(以降WF)開発とは相反している部分でもあります。
WFでは開発するソフトウェアに必要な機能をすべて洗い出し、その洗い出された項目から仕様を決め、
その仕様に沿って開発・テストを行い、リリースすることとなります。
これは、「今はいらないかもしれないけど、今後必要かもしれない」という機能も含むことが多々ありますので、
本当は必要ない機能も開発してしまう可能性もあるということです。
対してアジャイル開発ではイテレーション(またはスプリント)という決められた短い期間(1~4週間)を1つの単位として
その瞬間で最も必要なもの(価値)を提供することに注力して開発を行います。
このように短い開発サイクルを回すことで、その時に必要なものを素早く開発・リリースし、ユーザ動向の変化に追従していく
強い開発が行う事が可能となります。
もう少し細かいアジャイル開発の進め方については次回以降で別の切り口としてご紹介したいと思います。
*2.アジャイル開発の向き不向き
では、アジャイルはどんな開発に対しても万能なのか?
答えは「否」です。
みなさんは「SoR」と「SoE」という言葉を聞いたことはありますか?
SoR : System of Record
情報を正しく「記録」するためのシステムという意味をもち、
管理システムと呼ばれるものがこれにあたります。
SoE : System of Engagement
約束や婚約などの意味をもつエンゲージメントはユーザとの「絆」を作るためのシステムという意味をもち、
サービスにおけるUXやUIのユーザ体験が直接関係するものがこれにあたります。
上記のように、「SoE」は常にユーザ動向の変化に追従し、より良いユーザ体験を提供するなど、要件の変化に柔軟に対応可能なアジャイル開発が向いており、
逆に「SoR」は情報の正しく記録するために正確性や安全性が求められるため、きっちりとした要件に基づいた開発を行うWFが向いています。
もちろん「SoE」をWFで開発することも可能ですし、「SoR」をアジャイルで開発することも可能です。
あくまでも向き不向きの問題であるため、できなくはないですが、「糠に釘」とまでは言いませんが、
開発手法もより良い開発を行う上では重要なポイントとなります。
また、最近ではハイブリッドアジャイル(アジャイル×WF)という
・上流(要件定義・基本設計)と下流(総合テスト・リリース)の工程をWF
*全体の要件やテストをきっちり実施し、正確性・安全性を向上
・中流(詳細設計・開発・フィードバック)の工程をアジャイル
*1つ1つの機能を短い期間で開発し、ユーザフィードバックをもらうサイクルを設け、より良いものを創る
で互いのいい部分を取り込んだ開発手法がありますが、これもまた次回以降別の切り口で詳細をご紹介できればと思います。
*3.まとめ
いかがでしたでしょうか。
「アジャイル開発」というものがどういったものなのか、そしてどういった開発に向いているのかが分かって頂けましたか?
次回はアジャイル開発とWFでの開発におけるエンジニアの役割と開発工程の違いにフォーカスした紹介をしていきたいと思います。