今回はアジャイル開発のお話です!
今日はいつか話そうと思っていたアジャイルについて語っちゃいます!
アジャイル開発って?
まずアジャイルは開発の手法で「Agile」は訳すと「素早い」「機敏」という意味になります。
この方法は、SaaSとかアプリ開発でよく使われている手法で、割と最近のやり方なんです。
通常は「ウォータフォール型」という開発手法が、昔からよく使われています。
ウォーターフォール型とは
ではまず、よく使われている「ウォーターフォール型」からお話します。
「ウォーターフォール型」は以下図のように進めていきます。
要は、手戻りが無いように1つ1つ慎重に進めて、1発勝負で完成品をリリースするやり方です。
ウォーターフォールは、一度進めたら前のフェーズには絶対に戻らない前提で進めます。
そのため、仕様変更が発生してしまうと「①要件定義」からやり直しとなります。
水が上から下に流れていくような形で開発をすすめるので、名前がウォーターフォール(滝)と言います。
(逆流しないという意味も込めて)
ウォーターフォールの問題
でも、ウォーターフォールは、④テスト~⑤運用開始のタイミングで以下のような事がよく起きやすかったんです。
- 顧客の想定してるものと大きく違っていた
- 単純に気に入らなくて作り直しを要求
- 品質が悪かった
- トップダウンで変更要求があった
もしこうなってしまった場合は、選択肢は以下二択となります。
- ①から戻って最初からやり直す
- 出来ませんと押し通す
よくリリース直前の「仕様変更」が来ると地獄が始まるみたいな話、何となく聞いた事ありませんか?
これは、リリース直前で納期まで日数もないのに、また「①要件定義」からやり直す形になるからなんです。
無理やり納期を守るために、突貫作業で①から全てやり直すので、徹夜作業の連続になっちゃう訳です。
アジャイルの場合はどうなるの?
では次に「アジャイル型」の進め方なんですが。
アジャイル型の特徴は、仕様変更をガンガン行う前提で進めるという事。
なので最初の段階では仕様をざっくり決めて、あとは臨機応変に仕様を決めながら開発します。
すべての機能が完成したらリリースするのではなく、最低限の機能が完成したタイミングでリリースを行います。
そしたらフェーズ2で次の機能を作り、フェーズ2が終わったらフェーズ3で次の機能を作る・・これをひたすら繰り返していくんです。
このように機能ごとに開発フェーズを小分けにして「要件→設計→開発→テスト」を繰り返す事を
「イテレーション」といいます。
それぞれ比較してみましょう!
ウォーターフォールとアジャイルの違いを比較するとこんな感じです。
結局どっちがいいの?
ウォーターフォールもアジャイルも、どっちもメリデメがあるので、使い分ける事が必要です。
まず、アジャイルのメリットは「やってみなきゃ解んない!」という状況でも柔軟に対応できる事。
気分による急な仕様変更が起きても、想定外のバグが発見されても、柔軟に対応できるんです。
でも、コンセプトの一貫性がなくなってしまうリスクがある事や、完了のスケジュールが立てずらいというデメリットもあります。
解りやすい例で言うと、アジャイル型は、スマホのアプリやSaaSの開発でよく使われている手法です。
最初の頃はしょぼいアプリだったけど、いつの間にか進化して超高機能になってるアプリってたまにみませんか?
これは、アジャイル型で開発を進めて機能がどんどん追加された結果なんです。
このように、バージョンアップを繰り返して進化させていくようなサービスにアジャイル型は向いています。
でも銀行のATMがこんなコロコロ仕様が変わるシステムだったらどうですか?
利用者は混乱するかもしれません。
なので銀行のATMみたいなお堅いシステムは、一発勝負のウォーターフォール型で作る方が向いてるんです!
最後に
今回はアジャイルについて語りましたが、いかがでしたでしょうか?
実はアジャイルって掘り下げると、もう1段階以下のようなお話があるのですが・・
- スクラム
- エクストリーム・プログラミング
- ユーザー機能駆動開発
今回のテーマは「アジャイル開発を簡単に語ります!」なんで今回はここまでとなります。
この3つについては、アクセス数・要望を見つつ、続きを書くか検討させていただきたいと思います!
※その後、スクラムについて記事を書きましたので、続編として読んでみても面白いかも?
ちなみに、noteで「よっしーTECH」の下書き版公開中です! こちらもよろしくお願いします!