システムって、どういう順番で作るんですか?
代表的な進め方が2つあるよ。計画どおりに一気に作る「ウォーターフォール」と、少しずつ作って直していく「アジャイル」だ。
ウォーターフォールモデル ― 家を建てるように作る
ウォーターフォール(waterfall)は「滝」という意味です。水が上から下へ流れ落ちるように、工程を上から順番に進めていきます。
家づくりと同じです。設計図を完成させてから基礎を作り、柱を立て、屋根をのせます。柱を立てたあとで「やっぱり間取りを変えたい」となると、大きな手戻りが発生します。
| 良いところ | 苦手なところ |
|---|---|
| 全体の計画・進み具合が管理しやすい | 途中の仕様変更に弱い |
| 大規模なシステムに向いている | 完成するまで利用者が実物を見られない |
アジャイル開発 ― 味見しながら料理するように作る
アジャイル(agile)は「素早い・機敏な」という意味です。短い期間で「動くもの」を作り、利用者に見てもらって改善することを繰り返します。
カレーを作るとき、少し煮込んでは味見をして「もう少し辛く」「塩を足そう」と調整しますよね。最後に一度だけ味見するより、失敗が少なくなります。アジャイルはこの「こまめな味見」をシステム開発でやるイメージです。
アジャイルのほうが良さそうに見えますけど…。
変化の多いアプリやWebサービスには向いているね。でも、全体のスケジュールや費用が見えにくいという弱点もある。どちらが優れているというより、向き不向きなんだ。
アジャイルの代表的な手法① スクラム
スクラムはラグビーのスクラムが語源で、チームで協力して進めることを重視します。
| 用語 | 意味 |
|---|---|
| スプリント | 1〜4週間程度の短い開発期間。これを繰り返す |
| デイリースクラム | 毎日行う15分程度の短い打合せ |
| プロダクトオーナー | 何を作るか(優先順位)を決める人 |
| スクラムマスター | スクラムがうまく回るよう支援する人 |
| プロダクトバックログ | 作りたい機能を優先順位順に並べたリスト |
アジャイルの代表的な手法② XP(エクストリームプログラミング)
XPは、プログラマ向けの具体的な実践方法(プラクティス)をまとめたものです。
- ペアプログラミング:2人1組で1台のPCを使い、1人が書き、もう1人がチェックする
- テスト駆動開発(TDD):先にテストを書き、そのテストに合格するようにプログラムを書く
- リファクタリング:外から見た動作は変えずに、プログラムの中身をわかりやすく整理する
- 継続的インテグレーション(CI):作ったプログラムを頻繁に統合・テストする
ペア → 2人で、テスト駆動 → テストが先、リファクタリング → 動きは変えずに整理。この3つは特によく出る。
そのほかの開発モデル
| モデル | 特徴 |
|---|---|
| プロトタイピングモデル | 開発の初期に試作品(プロトタイプ)を作って利用者に確認してもらい、認識のズレを防ぐ |
| スパイラルモデル | システムをいくつかの部分に分け、部分ごとに設計〜テストを繰り返して完成に近づける |
| DevOps | 開発(Development)と運用(Operations)が協力し、素早くリリースを続ける |
- ウォーターフォール = 工程を順に進める・後戻りしない前提・大規模向き
- アジャイル = 短い期間で動くものを作り改善を繰り返す・変化に強い
- プロトタイピング = 最初に「試作品」を見せる
- スパイラル = 部分ごとに「繰り返し」て完成させる