アジャイル開発とは?その手法からメリットやデメリットを紹介
IT・Web業界におけるエンジニアの開発手法は主に2つの方法があります。
2001年以前は「ウォーターフォール型」という開発手法が主流でしたが、仮説検証を元に素早い開発を必要とするようなWebサービスの隆盛と共に注目を浴び始めたのが「アジャイル開発」という手法です。
そこで今回はWeb系サービスの開発に向いている手法である「アジャイル開発」について解説していきます。
アジャイル開発とは
「アジャイル開発」とは必要最小限の機能だけを実装してリリース。その後仮説検証を繰り返しながら適宜プロダクトの改善をおこなっていく手法のことです。
「アジャイル開発」で進めるか「ウォーターフォール開発」で進めるかは、案件やプロジェクトの相性によって異なります。
これまでの開発モデルと言えば「ウォーターフォール開発」が主流でしたが、テクノロジーの進化と時代の変化により、従来とは違う手法として「アジャイル開発」が登場し、この開発モデルを採用するケースが増加しています。
- アジャイル開発の特徴
- アジャイル開発の成り立ち
- ウォーターフォール開発とは
アジャイル開発の特徴
アジャイル=Agileには「素早い」、「機敏な」「頭の回転が速い」という意味があります。
アジャイルという名の通り「アジャイル開発」の最も特出すべき特徴は”無駄な開発工数を減らす”事にあります。
従来の開発手法「ウォーターフォール開発」の場合には、1から100まで初期の段階で実装を試みるため、「この機能はいらなかったな」といった気づきから、手戻りが確実に発生してしまいます。
しかしながら、「アジャイル開発」の場合には、最小限の機能でリリース、必要に応じて機能を開発するため、無駄な手戻りを防ぐ事ができます。
アジャイル開発の成り立ち
近年の開発スタイルとして時代にマッチしているアジャイルですが、アジャイル開発の成り立ちについてふれていきましょう。
アジャイル開発が提唱されたのは、今からおよそ20年前となる2001年。
2001年に、当時軽量のソフトウェア開発を提唱していた17名の技術者やプログラマーが
米国ユタ州にてソフトウェア開発を行っていた17名の開発メンバーが集い、開発手法について議論をしまとめたものが「アジャイルソフトウェア開発宣言」なるものでした。
これには12の原則が定義されておりアジャイル開発の公式文書として浸透するようになったのです。
ウォーターフォール開発とは
さて、先ほどから紹介させて頂いている「ウォーターフォール開発」についても触れておきましょう。
2001年以前のソフトウェア、システム開発というのは、ウォーターフォール開発が主な開発モデルとして一般的でした。
ウォーターフォール開発とは、初期段階で上流から下流へと一連の工程を行う開発手法です。
はじめに開発全体の計画を決定したのち設計、開発を進めます。
既に世の中にあるサービスを自社に合わせた形でリプレイスする場合には、要件が決まっていることから、ウォーターフォール開発は非常に有効です。
しかしながら、スタートアップ企業が開発する、まだ世の中には無いプロダクトを作る際には検証ベースで開発を進めるアジャイルの方が相性はいいんですね。
アジャイル開発の手法
これまで主流とされてきたウォーターフォール開発と比較しても開発期間の短縮を実現可能というアジャイル開発の具体的手法について触れていきます。
- アジャイル開発の種類
- アジャイル開発の流れ
アジャイル開発の種類
具体的なアジャイル開発の手法を知る上で、まずはいくつかある開発種類について把握していきましょう。
一言で「アジャイル開発」と言っても、種類としては複数あります。
代表的なものとして、3つあります。
スクラム
まず、1つ目が「スクラム」です。
アジャイル開発の中で最もメジャーな開発種類がこのスクラム開発です。
この「スクラム」とは、フレームワークのことを言います。
ラグビーで言う「スクラム」をイメージしてもらえばわかりすいのですが、チームプレイが大事になります。
開発チーム内でのコミュニケーションを高め、開発メンバー全員が協力して作業を行います。
メンバー自らが開発プランを作成し、制作過程の中で問題点がないか確認しあって作業を進めていきます。
メンバー間のコニュニケーション力が進行に大きく関わり、コミュニケーション不足になると作業の遅延を招きます。
XP(エクストリーム・プログラミング)
この開発方式は、より柔軟にフレキシブルに対応することに重点をおいた開発手法です。
事前に計画した開発計画を途中で変更することへも躊躇なく柔軟に対応する開発スタイルです。
柔軟な変更に対応するためには開発チームのメンバー間による「コミュニケーション」・「シンプル」「フィードバック」・「勇気」といったXPの基礎的な価値の共有が必要となります。
これらの共有価値を前提に開発を進める方法がXP(エクストリーム・プログラミング)です。
FDD(ユーザー機能駆動開発)
FDD=Feature Driven Development。
日本語では、ユーザー機能駆動開発という開発手段です。
敢えて日本語にすると、難しいイメージもありますが、単純に考えるなら、実際に使って動かして試しながら作るということです。
この開発手法は、よりユーザー視点に近いところでの開発スタイル。
N1分析を主軸としたプロダクトとの相性は抜群です。
アジャイル開発の流れ
次にアジャイル開発の流れについてです。
アジャイル開発では大きく2つの工程を踏むことになります。
リリース計画
アジャイル開発のスタートにおいて、計画段階では、「最低限必要な機能は何か」といった言語化以外に細かい制限を設けません。
なぜなら、大仰な制限を事前に設けることにより、アジャイル開発を採用しているメリットがなくなるからです。
計画段階では厳密な仕様を確定せずにスタートするのがアジャイル開発の基本。
そのようなことが可能なのかと考えてしまうかもしれませんが、それこそが「アジャイル開発」そのものなのです。
イテレーション
開発スタートにおいて、おおまかな仕様を決め、計画→設計→実装→テストというサイクルを繰り返しながら開発を行います。
このような反復するサイクルのことを「イテレーション」と言います。
小さな範囲に分割しテストと製造を繰り返しつつ精度を高めていきます。
イテレーションのペースとしては1~2週間単位が一般的です。
アジャイル開発のメリットとデメリット
先ほどから「アジャイル開発」については肯定的な立場をとっています。
そこで実際に「アジャイル開発」のメリット・デメリットを整理してみましょう。
- アジャイル開発のメリット
- アジャイル開発のデメリット
アジャイル開発のメリット
アジャイル開発の最大のメリットは「手戻りが極端に減る」ことです。
それによって、素早くプロダクトを市場に合わせることができるというメリットがあります。
変化の激しい時代において効率的で確実で迅速な開発の実現においては、アジャイル開発は必要不可欠と位置付けて良いでしょう。
開発過程において、途中変更が多い案件については、アジャイル開発は適しています。
従来のウォーターフォールでは、時間もコストも増加してしまいますが、小さい単位で開発を進めるアジャイル開発なら手戻りが少なく最小限に被害を抑えることができます。
アジャイル開発のデメリット
アジャイル開発は手戻りを極端に減らすというメリットがある一方で、開発初期の段階において細かい仕様を決めていないことから、方向性が定まりにくいというデメリットがあります。
当然スケジュールの管理などもしづらいため、密なコミュニケーションが必要となります。
リモートワークが多い開発現場だとより難易度を増してしまう可能性があります。
アジャイル開発に適しているプロダクトとはなにか
アジャイル開発に適しているのは、比較的短いサイクルで仮説検証を繰り返し、検証結果を素早く反映させるような開発を行う必要があるプロダクトです。
サービス自体の新規性が高く、仮説検証を元に素早く改善することが必要不可欠なサービスではアジャイル開発は最高の威力を発揮します。
しかしながら欧米では、レガシー産業における大規模開発にもアジャイル開発を用いるケースが増えており、FBIの従業員管理システムなんかはアジャイル開発で成功を遂げた最も有名な例のひとつです。
まだまだ日本では、仮説検証を主流としたプロダクトでしか導入されていないアジャイル開発ですが、近い将来業務基幹システムなどの開発においてもアジャイル開発が取り入れられる日は近いのではないでしょうか。
まとめ
いかがだったでしょうか。今回はアジャイル開発について大まかな概要と取り入れる際の手法やメリット・デメリットをご紹介しました。
あくまでウォーターフォール開発やアジャイル開発というのは、カテゴリーでわけたにすぎません。
実際の開発現場では、案件毎、チーム毎、そして開発環境やメンバー数によってもその開発環境は実に様々です。
なので、「ウォーターフォール開発」や「アジャイル開発」のどちらかに軸足を置きつつも自社のチームメンバーを考慮して開発手法を取り入れましょう。