開発手法の基礎
対象読者: 開発プロジェクトの進め方、AIサービスの運用体制、開発と運用の分担を理解したい方
前提知識: クラウドアーキテクチャ入門 と デプロイとCI/CD の基本概念があると理解が深まります
ソフトウェア開発には、企画、設計、実装、提供、運用、統制という複数の問題があります。SDLC、アジャイル、DevOps、TDD、ITIL などは同じ種類の「開発手法」ではありません。対象と抽象度をそろえて分類すると、役割の重複や不足を判断しやすくなります。
このセクションで学ぶこと
このセクションでは、プロジェクトの進め方と、本番運用まで含めた開発体制を扱います。
- このページ: 用語を分類する軸と、各記事の位置づけをつかむ
- アジャイルとウォーターフォールの違い: 反復的な開発アプローチと予測型ライフサイクルの違い、使い分け、AI開発での注意点を学ぶ
- DevOps・MLOps・AIOpsの概要: アプリケーション、機械学習、IT運用を対象にする運用規律の違いを理解する
分類して理解する
各用語は、解決する問題と適用範囲が異なります。たとえば、SDLC は開発全体の段階を表し、TDD は実装時のテスト実践を表します。両者は代替関係ではなく、同じプロジェクトで併用できます。
| 分類 | 主な問い | 代表例 |
|---|---|---|
| ライフサイクル | 企画から廃止まで、どの段階を管理するか | SDLC、AI-DLC、予測型(ウォーターフォール) |
| 企画・仮説検証 | 何を作るべきか、仮説をどう確かめるか | Design Thinking、Lean Startup |
| 探索と開発の管理 | 問題探索と提供をどう並行させるか | Dual-Track Agile |
| チームの開発アプローチ/フレームワーク | 変更をどう取り込み、仕事をどう進めるか | Agile、Scrum、Kanban、XP |
| 大規模組織のフレームワーク | 複数チームの計画や依存関係をどう合わせるか | SAFe、LeSS、Scrum@Scale |
| 設計・テスト実践 | コードやドメインモデルの品質をどう高めるか | TDD、BDD、DDD |
| 開発・モデル・運用の規律 | 継続的な提供や本番品質をどう維持するか | DevOps、MLOps、ModelOps、AIOps、SRE |
| ITサービス管理 | ITサービスの価値、提供、改善をどう管理するか | ITIL |
| ガバナンス | ITに関する意思決定と統制をどう設計するか | COBIT |
この分類は厳密な業界標準ではありません。特に ModelOps と MLOps の境界や、Agile を思想・アプローチ・総称のどれとして扱うかは、説明元によって異なります。比較するときは名称だけでなく、対象、成果物、責任範囲を確認します。
開発手法が必要な理由
個人開発では、作る人と運用する人が同じこともあります。しかしチーム開発では、企画、設計、実装、レビュー、テスト、リリース、監視、障害対応が複数人に分かれます。
開発手法を決めないまま進めると、次の問題が起きやすくなります。
- いつ仕様を固めるのかが曖昧になる
- 変更依頼が来るたびに作業が止まる
- リリース前になって品質問題が見つかる
- 本番障害の責任範囲が分からない
- AIモデルやデータの変更がアプリケーション変更と別管理になる
各アプローチや実践は、これらの問題を「誰が、いつ、何を確認するか」に分解するための共通言語です。一つを選べばすべて解決するわけではなく、異なる分類から必要な要素を組み合わせます。
学習の順番
まず、プロジェクトの進め方としてアジャイルとウォーターフォールを比較します。次に、クラウドサービスを継続的に改善する DevOps、機械学習システムを運用する MLOps、IT運用にAIを使う AIOps を整理します。
graph TD
A["開発と運用の課題"] --> B["企画・探索\n何を作るか"]
A --> C["開発・提供\nどう作って届けるか"]
A --> D["運用・統制\nどう維持し管理するか"]
B --> E["Design Thinking / Lean Startup"]
C --> F["SDLC / Agile / TDD"]
D --> G["DevOps / MLOps / AIOps"]
D --> H["ITIL / COBIT"]まとめ
- 開発関連の用語は、ライフサイクル、探索、フレームワーク、実践、運用、ガバナンスなどの異なる分類に属する
- 異なる分類の手法は代替関係とは限らず、一つのプロジェクトで組み合わせられる
- 比較するときは、名称ではなく対象、目的、成果物、責任範囲をそろえる