この記事の目次
開発工程の基本
ソフトウェア開発では、いくつかの「工程」を経てシステムを作り上げます。この章では、どの開発手法でも共通して必要となる工程について説明します。
開発工程とは
ソフトウェア開発は、「作りたいものを決める」から「実際に使えるようにする」まで、いくつかの段階を経て進みます。
料理に例えると分かりやすいです。
何を作るか決める(メニュー決め)
↓
どう作るか決める(レシピを確認)
↓
実際に作る(調理)
↓
味見して確認(テスト)
↓
盛り付けて提供(リリース)
↓
後片付けと次回への改善(保守)
ソフトウェア開発も同じです。いきなり作り始めるのではなく、「何を作るか」「どう作るか」を決めてから作り始めます。
基本的な工程
どのような開発手法を使っても、以下の工程は必ず存在します。やり方やタイミングは手法によって異なりますが、やること自体は同じです。
1. 要件定義
何を作るかを決める工程です。
やること
- お客様(またはユーザー)の要望を聞き取る
- システムで実現したいことを明確にする
- 「何を作るか」を明文化する
具体例:ネットショップの場合
| 項目 | 内容 |
|---|---|
| 誰が使うか | 一般消費者、20〜40代が中心 |
| 何ができるか | 商品を検索・閲覧、カートに入れる、購入、会員登録 |
| どのくらい使われるか | 1日1000人程度のアクセス |
| いつまでに作るか | 3ヶ月後にオープン |
ポイント
- 「なぜ作るのか」「誰のために作るのか」を理解することが重要
- 要件が曖昧だと、後で「思っていたのと違う」となる
2. 設計
どう作るかを決める工程です。
2つの段階
| 種類 | 何を決めるか | 具体例 |
|---|---|---|
| 基本設計(外部設計) | ユーザーから見える部分 | 画面レイアウト、画面遷移、機能一覧 |
| 詳細設計(内部設計) | システム内部の構造 | クラス構成、データベース構造、処理の流れ |
具体例:ネットショップの場合
基本設計の成果物
- 画面設計書:商品一覧画面、商品詳細画面、カート画面...
- 機能一覧:検索機能、カート機能、決済機能...
詳細設計の成果物
- クラス図:Productクラス、Cartクラス、Orderクラス...
- ER図:商品テーブル、ユーザーテーブル、注文テーブル...
ポイント
- 設計なしにコードを書き始めると、後で大きな手戻りが発生しやすい
- 設計の「深さ」や「形式」は開発手法によって異なる
3. 実装(コーディング)
実際にプログラムを書く工程です。
やること
- 設計に基づいてコードを書く
- コーディング規約(コードの書き方ルール)に従う
- コードレビューを受ける
具体例:ネットショップの場合
「商品をカートに追加する機能」を実装する場合:
1. ユーザーがカートに追加ボタンを押す
2. 商品IDと数量を受け取る
3. カートに商品を追加する
4. カート画面を表示する
これをもとに、実際のコードを書きます。
ポイント
- 1年目エンジニアが最も多く時間を使う工程
- 書いたコードは必ずレビューを受け、指摘があれば修正する
4. テスト
作ったものが正しく動くか確認する工程です。
テストの種類
テストには複数の種類があり、小さい範囲から大きい範囲へと段階的に行います。
| テストの種類 | 何を確認するか | 具体例 |
|---|---|---|
| 単体テスト | 個々の機能が正しく動くか | 「カートに追加」で商品がカートに入るか |
| 結合テスト | 複数の機能を組み合わせて正しく動くか | カート追加→カート表示→購入まで動くか |
| システムテスト | システム全体が要件を満たすか | 1000人同時アクセスでも動くか |
| 受け入れテスト | お客様の期待どおりか | お客様に実際に触ってもらう |
ポイント
- テストで見つかった問題は、原因を調べて修正する
- テストをしっかり行うことで、リリース後の問題を減らせる
5. リリース・運用
システムを本番環境で稼働させる工程です。
やること
- 本番環境への導入(デプロイ)
- 運用開始後の監視
- 問題発生時の対応
具体例
- サーバーが落ちていないか監視する
- エラーが発生していないかログを確認する
- 「動かない」という問い合わせがあれば調査する
6. 保守
運用中のシステムを維持・改善する工程です。
やること
| 種類 | 具体例 |
|---|---|
| バグ修正 | 「商品を2個カートに入れたのに1個しか入らない」→ 原因を調査して修正 |
| 機能追加 | 「お気に入り機能が欲しい」→ 新しい機能を追加 |
| 改善 | 「ページの表示が遅い」→ パフォーマンスを改善 |
ポイント
- 既存システムのバグ修正は、1年目によく任される仕事
- 既存のコードを読んで理解する必要があり、コードリーディング力が鍛えられる
開発手法による違い
これらの工程は共通ですが、「いつ」「どのように」行うかは開発手法によって異なります。
| 観点 | ウォーターフォール | アジャイル |
|---|---|---|
| 工程の進め方 | 順番に1回ずつ行う | 短いサイクルで繰り返す |
| 要件定義のタイミング | 最初に全部決める | 少しずつ決めていく |
| 設計の深さ | 詳細まで最初に決める | 必要な分だけその都度決める |
| テストのタイミング | 実装後にまとめて行う | 実装と並行して継続的に行う |
【ウォーターフォール】
要件定義 → 設計 → 実装 → テスト → リリース → 保守
(順番に進む)
【アジャイル】
┌─────────────────────────────────────┐
│ [要件] → [設計] → [実装] → [テスト] │← スプリント1
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ [要件] → [設計] → [実装] → [テスト] │← スプリント2
└─────────────────────────────────────┘
(繰り返す)
どちらの手法でも、「要件定義→設計→実装→テスト」という流れ自体は存在します。違うのは「全体を一度にやるか」「小さく分けて繰り返すか」です。
詳しくは以下を参照してください:
1年目エンジニアの関わり方
1年目は主に以下の工程に関わることが多いです。
| 工程 | 1年目の関わり方 | 頻度 |
|---|---|---|
| 要件定義 | 要件定義書を読んで理解する | 少ない |
| 設計 | 設計書を読んで理解する | 中程度 |
| 実装 | 設計に基づいてコードを書く | 多い |
| テスト | テスト仕様書に基づいてテストを実行する | 多い |
| 保守 | 既存システムのバグ修正を担当する | 多い |
実装・テスト・保守が中心です。これらの作業を通じて、コーディングスキルやシステム理解を深めていきます。
まとめ
- ソフトウェア開発には「要件定義」「設計」「実装」「テスト」「リリース」「保守」という工程がある
- これらの工程はどの開発手法でも共通して存在する
- 開発手法によって「いつ」「どのように」行うかが異なる
- 1年目は主に実装・テスト・保守に関わることが多い
具体的な開発手法については、以下を参照してください:
- ウォーターフォール開発 - 工程を順番に進める手法
- アジャイル開発 - 短いサイクルで繰り返す手法