失敗しない!初めてのアジャイル開発①〜アジャイル 開発について知ろう〜
コラムプロダクト開発のご依頼をいただいたり、自社開発で新プロジェクトを立ち上げることになったあなた。
アジャイル 開発という開発手法を聞いたことはあるけれど、実際どうすればいいの?何から始めればいいの?と困ってませんでしょうか。
このシリーズではそんな初心者エンジニアの方やPMになりたての方に向けて、アジャイル開発での経験や失敗を繰り返してきた筆者が、アジャイル開発について説明していきます。
- アジャイル 開発について
- アジャイル 開発のメリット・デメリット
- アジャイル 開発の用語 (失敗しない!初めてのアジャイル開発②〜アジャイル 開発について知ろう〜)
- アジャイル 開発で失敗しないために
- アジャイル 開発の最強のチームとは
- アジャイル 開発おすすめ運用法
読み終わる頃には、上記がある程度理解できて、早速アジャイル 開発に取り掛かれる状態を目標とします。※ものすごくざっくりと簡潔に書くので詳細はこちらの本などから勉強をおすすめします。
アジャイル開発とは?
アジャイル 開発について知るためには古くからあるもう一つの開発手法について触れておく必要があります。大きく分けて二つある開発手法のうちのもうひとつ、ウォーターフォールモデルです。
要件定義>設計>実装>テスト>運用
このように滝のように工程が決まっている開発手法となります。要件定義で、クライアントの要求に対して、ソフトウェアで実現することを決めます。
そして基本設計で機能やどう実現するかを決め、実装で開発に入ります。
開発が終わると単体テスト(単体機能)と結合テスト(機能間)、総合(システム)テストを行った後、ようやくリリースとなります。ローンチともいったりしますね。その後運用フェーズに入っていきます。
いかがでしょうか。とても納得感のある開発手法に思いませんか?要件定義や設計から順番になされ、スケジュール通りにピシッと進めていく。抜け漏れなく工程を管理し、レベルの高いスケジュール及び品質管理が要求されます。
開発において最も重要なQCD(Quality:品質、Cost:コスト、Delivery:納期)の見通しや精度も高くクライアント側も安心して任せられそうですね。
その反面、あることが絶対にできなくなっています。
それは、工程の後戻り、仕様変更です。
そして工程にあわせた分業化により、予算があり最適な人材配置ができる大規模開発にはむいていますが、仕様変更や予期せぬトラブルなどの不確実性には弱いです。つまり小規模のWEB開発やアプリ開発、頻繁な仕様変更が予測されるゲーム開発などはウォーターフォールは向いていないと言えます。
では、アジャイル 開発をみてみましょう。
アジャイル 開発のメリット・デメリット
アジャイル 開発のメリット
ウォーターフォールでは、要件定義>設計>実装>テスト>運用の工程の一つ一つの成果物が完成品となり、例えば設計段階で「そもそもこの機能いらなくない?」となっても要件定義には戻れないのです。
その点アジャイル 開発では以下の図のように開発工程が進んでいきます。1〜4週間のイテレーション(反復)と呼ばれるサイクルを繰り返します。
1.柔軟な軌道修正が可能
もともとAgileとは「機敏な、回転の速い」という意味です。
アジャイル 開発では、小さくスプリント という一定の期間を繰り返し進んでいくので、PDCAサイクルを回しながら柔軟に進めていくことができます。
早い段階でシステムに触れ、フィードバックを得ることができ、柔軟かつ機敏な軌道修正が可能です。
2.素早くスピーディに開発ができる
ウォーターフォールに比べ、がっちがちにスケジュールを組んだりする必要がありません。設計から開発に移行する早さが、とても早くスムーズです。後述しますが、ドキュメントの量も最小限であるため、その分開発の速度もスピーディです。
3.ドキュメントが最小限
ウォーターフォールと比べ途中で仕様変更などある前提でプロジェクトが進みます。なので、予め文書作成を細かくやる必要がありません。そして分業もウォーターフォールほどしていないため、「あのドキュメントはどうだ」「この実装はどうだ」など、チーム内での不毛な評論が発生しにくいともいえます。
さらにドキュメントが少ないので工数が削減され、低コストで短納期の実現にもつながります。中小企業ですと低コストでスピーディな開発を要求されることも多いので、アジャイル 開発はむいていると感じます。
アジャイル 開発のデメリット
1.納期遅れが多い
柔軟な分、かっちりと決まっていないため、スクラムマスターはじめチームが自律し主体的に動いていないとすぐにスケジュールがぶれます。日本の企業では上が設計した作業をこなすという工程が多いので、言葉を選ばずにいうと思考停止でも仕事がもらえ、なんとなくこなしていればどうにかなるという一面がありますよね。
アジャイルの場合、毎日のスクラムなど始め、チーム全員で決めることも多いので、プロダクトに対してある程度前のめりな姿勢が要求されます。その分チーム自体のレベルが低いと納期遅れが頻発するのも事実です。柔軟な分、無駄な贅肉(価値を生まない機能)を開発してしまったり、迷走した結果納期に遅れてしまうことも多いのです。
2.ブレやすい
スプリント毎に振り返り、見直します。その際陥りがちなのが機能のブレです。これも必要じゃない?これ本当にいる?など様々な意見が飛び交うのは悪いことではありません。しかし、そもそもなんのために作るのかというところをしっかりチームで共有していないと余計な機能を開発することになったりと、ブレがちなのも事実です。
3.難易度が高い
正直これが一番ネックではないでしょうか。チーム全体でストーリーポイントをフィボナッチ数列で見積もったりと議論する場が多くなります。そのため、チーム全体のレベルがモロに見積もりやスケジュールに反映されます。
また、プロダクトの管理も柔軟だからこそ難易度が相当高いです。会議に当てる時間もある程度割かなくてはいけないため、マネージャーは予算管理や工数管理も、バッファをもった計画を立てる必要があります。
まとめ
いかがでしたでしょうか。今回はアジャイル 開発が初めての人に向けて、ざっくりとアジャイル開発の全体像について説明しました。ウォーターフォールとの違い、アジャイル 開発のメリット・デメリットについて理解していただけたかと思います。次回「失敗しない!初めてのアジャイル開発②〜アジャイル 開発について知ろう〜」はアジャイル 開発で出てくる用語を知り、より実戦に向けた詳細を学んでいきましょう。
株式会社Knocknote代表取締役。大学卒業後不動産営業に従事した後、ITの重要性を強く感じエンジニアへ転職。ソーシャルゲーム開発、スマホアプリやPepperアプリの企画及び開発、高校でのプログラミング講師などの業務に携わる。2017年1月に創業。現在はプログラミング教育事業、システム開発事業を展開。今後は海外向けの教育事業をさらに拡大させていく事が目標。著書:『作って学べるUnity超入門』(技術評論者)