非ウォーターフォール型開発（プロトタイプ型、スパイラル型、アジャイル型）をざっくり理解する

プロトタイプ型開発、スパイラル型開発、アジャイル型開発などの主要な非ウォーターフォール型開発の概要についてざっくりまとめてみました。

## プロトタイプ型開発

「プロトタイプ型開発」は簡単な試作品（プロトタイプ）を開発し、ユーザーによるプロトタイプの評価が行われてから本格的な設計を開始する開発モデルです。「プロトタイプの開発」と「ユーザーによるプロトタイプの評価」は、ウォーターフォールモデルにおける **「要件定義」工程と「基本設計」工程の間に組み込まれます** 。

プロトタイプ型開発はユーザーの要件と開発者側の認識のずれや技術的な課題を早期に解決できるため、 **開発工程終盤での大きな手戻りを防ぐ** ことができます。

プロトタイプ型開発はその特徴によって以下の二つに大別することができます。

種類            | 特徴                    | 目的
------------- | --------------------- | --------------
ラピッド・プロトタイピング | 開発したプロトタイプを **破棄** する | 時間と費用を最小に抑えること
進化的プロトタイピング   | 開発したプロトタイプを **流用** する | 継続的に改良していくこと

### ラピッド・プロトタイピング（使い捨て型プロトタイピング）

「ラピッドプロトタイピング」は「 **時間と費用を最小に抑えること** 」を最大の目標とし、要求仕様が確定した段階で **開発したプロトタイプは破棄する** プロトタイプ型開発の一種です。開発したプロトタイプはシステム開発には流用しません。最近注目されているUIプロトタイピング・ツールとして、「Adobe XD」や「Prott」などがあります。

**Adobe XD**

![](https://qiita-image-store.s3.amazonaws.com/0/155486/dbb85dd7-4e6f-264b-7a95-1583a4bece1f.gif)

--------------------------------------------------------------------------------

- [Adobe XD Preview 3 リリース！アートボードのスクロールやテキストの部分スタイリングなど | Adobe Creative Station](https://blogs.adobe.com/creativestation/web-may-update-of-adobe-experience-design-cc)
- [2017年最新！おすすめのプロトタイピングツール5選 | web design trends](https://webdesign-trends.net/entry/2771)

### 進化的プロトタイピング（ブレッドボード・プロトタイピング）

進化的プロトタイピングは **開発したプロトタイプを流用** し、改良を重ねながらシステムを完成させるプロトタイプ型開発です。要求仕様を完全に把握する必要はなく、仕様が明確となっている部分から開発に着手します。

--------------------------------------------------------------------------------

- [プロトタイプモデルとは - IT用語辞典 Weblio辞書](https://www.weblio.jp/content/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%A2%E3%83%87%E3%83%AB)
- [ソフトウェアプロセスモデル - Security Akademeia](http://akademeia.info/index.php?%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%D7%A5%ED%A5%BB%A5%B9%A5%E2%A5%C7%A5%EB#wf4f03ca)
- [ソフトウェアプロトタイピング - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0)

## スパイラル型開発

スパイラル型開発は、ウォーターフォール型開発における要求定義、設計、コーディング、テストの各工程を繰り返す開発モデルです。

### インクリメンタル・モデル（漸進型）

インクリメンタル・モデルは **システムを独立性の高いモジュール（機能）に分割** し、モジュール毎に設計、コーディング、テストを行い、追加していきながらシステムを完成させる開発モデルです。

### イテレーティブ・モデル（反復型）

システムを機能の優先度や重要度によって分割し、システム全体の開発を繰り返して徐々に完成度を上げていく開発モデルです。

インクリメンタル・モデルとイテレーティブ・モデルの違いは「[Incremental is not iterative](https://gojko.net/2007/12/04/waterfall-trap/)」に掲載されている以下の図がとても分かりやすいです。

![1030b3583d02d27eda5e0add968196b0.png](https://qiita-image-store.s3.amazonaws.com/0/155486/9bb1200e-7a86-062d-07a4-0f3ccf7a5e3b.png)

--------------------------------------------------------------------------------

- [非ウォーターフォール・モデル | Think IT（シンクイット）](https://thinkit.co.jp/article/914/1?page=0%2C1)
- [いまなぜ開発プロセスを注目するのか：前編 従来の開発プロセスと現場が抱える課題 - ITmedia エンタープライズ](http://www.itmedia.co.jp/im/articles/0201/22/news002.html)
- [ソフトウェア開発の匠（4）：アジャイル開発と反復開発の落とし穴 (1/3) - ＠IT](http://www.atmarkit.co.jp/ait/articles/0903/11/news114.html)
- [開発プロセスについて - Qiita](https://qiita.com/nakaken0629/items/986e4d0186b127048520)
- [開発モデルの話 - tasuwo blog](http://tasuwo.github.io/blog/2015/05/07/model/)
- [CSAJ/コラム「ITリフレッシュメント」反復型開発プロセス](http://www.csaj.jp/column/10/100315_maegawa.html)
- [イテレーティヴとインクリメンタルの違い | Ryuzee.com](http://www.ryuzee.com/contents/blog/2985)
- [モナリザを使った インクリメンタル(漸進的) と イテレーティブ(反復的) の説明 - kawaguti's diary](http://kawaguti.hateblo.jp/entry/20111030/1319926043)
- [The waterfall trap for "agile" projects](https://gojko.net/2007/12/04/waterfall-trap/)
- [アジャイル時代のプロジェクトマネジメント入門（2）：現代のプロマネが知っておきたいアジャイル開発の基礎知識まとめ (1/2) - ＠IT](http://www.atmarkit.co.jp/ait/articles/1412/05/news044.html)

## アジャイル型開発

「アジャイル」と一言で言ってもその種類は多種多様です。本稿では主要なアジャイル型開発である、「スクラム」、「XP」、「リーン」、「Kanban」について簡単に説明します。

--------------------------------------------------------------------------------

- [7つのアジャイル開発手法の実践ガイド（第1回） (1/3)：CodeZine（コードジン）](https://codezine.jp/article/detail/848)
- [NC特集1 - Part3 手法：超高速開発を実現「アジャイル」の全貌：ITpro](http://itpro.nikkeibp.co.jp/free/NC/TOKU1/20021015/2/?ST=spleaf)

### スクラム

スクラムはアジャイル開発における **プロジェクトマネジメントのフレームワーク** です。スクラムでは「プロダクトバックログ」、「スプリントバックログ」と呼ばれる一覧表によってユーザーの要件をタスクに分解し、一週間から四週間に渡る「スプリント」と呼ばれる期間で開発を進めていきます。

![35a59298f77db0eaafff6b09dc9da89b.png](https://qiita-image-store.s3.amazonaws.com/0/155486/807432de-ae1b-227c-e655-dc4eee0c64fb.png)

--------------------------------------------------------------------------------

- [アジャイル開発 ～顧客を巻き込みチーム一丸となってプロジェクトを推進する～ （前編）: コラム | NECソリューションイノベータ](http://www.nec-solutioninnovators.co.jp/column/01_agile.html)

### エクストリーム・プログラミング（XP）

![a9f94214b545b7bd50306080a4ab5920.png](https://qiita-image-store.s3.amazonaws.com/0/155486/338d73a7-69f8-8812-41ca-9370f28b72a5.png)

XPは テスト駆動型開発、YAGNI（"You ain't gonna need it."）、リファクタリング、ペアプログラミングなどのプラクティスが定義されている **プログラマ中心** の開発モデルです。ドキュメントの整備よりもソースコードを重んじると共に、個々の開発者の責任を重視しています。

--------------------------------------------------------------------------------

- [グラス片手にアジャイル開発 第2回 － アジャイルの主な実践手法とその取捨選択 (1/3)：CodeZine（コードジン）](https://codezine.jp/article/detail/5462)<br>
- [エクストリーム・プログラミング - Wikipedia](https://ja.m.wikipedia.org/wiki/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%83%BB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

### リーンソフトウェア開発

リーンソフトウェア開発はプロジェクトマネジメント面に焦点を当て、プロセスから **無駄を取り除く** ことを目的とした開発モデルです。リーンソフトウェア開発の重要な考え方の一つに「 **MVP（Minimum Viable Product）** 」があります。MVPとは「仮説を検証するための最低限の機能を持った製品」を意味し、まずは機能を限りなく絞り込んで開発にかかる時間や費用を最小化し、真にニーズがあるかどうかを検証しよう、という考え方です。リーンソフトウェア開発ではMVPの考え方を含めた **7つの原則** とそれを実現するための **22のツール** が定義されています。

--------------------------------------------------------------------------------

- [トヨタに学ぶ！リーンソフトウェア開発の7つの原則 | tracpath:Works](http://tracpath.com/works/development/lean_software_development/)
- [情報マネジメント用語辞典：リーンソフトウェア開発（りーんそふとうぇあかいはつ） - ＠IT 情報マネジメント](http://www.itmedia.co.jp/im/spv/0803/10/news113.html)
- [リーン開発をはじめよう - Qiita](https://qiita.com/shiruco/items/0148927fe6f4b8e3dd80)
- [「リーン」と「アジャイル」の関係とは？：書籍でたどる「リーン」の本質 (1/4) - ＠IT](http://www.atmarkit.co.jp/ait/articles/1311/15/news015.html)
- [プログラマのためのリーン・スタートアップ入門（2）：リーン・スタートアップが示す「5つの原則」 - ＠IT](http://www.atmarkit.co.jp/ait/spv/1207/06/news133.html)

### Kanban

「Kanban」は、各ステージにおけるタスクの量を制限し、必要なタスクだけ前ステージから取ってくる、 **トヨタの「かんばん」方式を適用した開発モデル** です。開発モデルとしてのかんばんを「 **Kanban** 」、 各ステージにおけるタスクの状態を付箋紙などのカードで可視化したツールを「 **kanban** 」と表します。

![04f2dfd70386b500f045beb18064fa47.png](https://qiita-image-store.s3.amazonaws.com/0/155486/1b779200-cf9c-2e51-7962-8d2cd6afd6b2.png)

[Crisp's Blog » One day in Kanban land](http://blog.crisp.se/2009/06/26/henrikkniberg/1246053060000)

Kanbanでは「 **WIP制限** 」と「 **プル** 」という二つの重要な概念があります。

項目                            | 説明
----------------------------- | ----------------------------------------------------------------------------------
WIP（Work in Progress、仕掛り作業）制限 | 「TODO」、「開発」、「デプロイ」などの各ステージに対するタスクの限界量を設定し、 **各ステージにはWIPの数以上のカードを貼ることができない** というルール
プル                            | 各ステージの担当者がWIP制限に収まる範囲内で前ステージからタスクを取ってくること

これらの概念がどのように開発プロセスとして組み込まれているかを理解するには、上記画像の引用元である「[Crisp's Blog » One day in Kanban land](http://blog.crisp.se/2009/06/26/henrikkniberg/1246053060000)」、またはその日本語訳である「[5分で理解するリーンな「かんばん」 | 『リーン開発の現場』越境せよ！](http://lean-trenches.com/one-day-in-kanban-land/)」が大変役立ちますので是非参照してみてください。

Kanbanでは後工程にタスクが滞留すると、WIP制限によって前工程では **例えメンバーが全てのタスクを完了していても新たなタスクを開始することはできません** 。手が空いているメンバーは自分の作業を進める代わりに、滞留しているタスクを支援します。このようにして各ステージの **ボトルネックが「見える化」** されることで、メンバー個人の過負荷を防ぎ、お互いに協力し合うチームを形成することができます。

--------------------------------------------------------------------------------

- [かんばん (ソフトウェア開発) - Wikipedia](https://ja.wikipedia.org/wiki/%E3%81%8B%E3%82%93%E3%81%B0%E3%82%93_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%29)
- [5分で理解するリーンな「かんばん」 | 『リーン開発の現場』越境せよ！](http://lean-trenches.com/one-day-in-kanban-land/)
- [Crisp's Blog » One day in Kanban land](http://blog.crisp.se/2009/06/26/henrikkniberg/1246053060000)
- [トヨタのかんばんとソフトウェア開発のかんばんの違い | 『リーン開発の現場』越境せよ！](http://lean-trenches.com/toyota-kanban-software-kanban/)

--------------------------------------------------------------------------------

[![クリエイティブ・コモンズ・ライセンス](https://i.creativecommons.org/l/by/4.0/88x31.png)](http://creativecommons.org/licenses/by/4.0/)<br>
この 作品 は [クリエイティブ・コモンズ 表示 4.0 国際 ライセンス](http://creativecommons.org/licenses/by/4.0/)の下に提供されています。