📖 読了目安 約9分
この記事の目次

Step 2:実装計画を立てる

仕様を理解したら、次はどう進めるかを計画するステップです。計画なしにいきなりコードを書き始めると、途中で迷子になります。

なぜ計画が必要なのか

flowchart TB
    subgraph 計画なしで始めた場合
        A1[いきなりコードを書く] --> A2[どこから手をつけるか迷う]
        A2 --> A3[途中で「あれも必要だった」と気づく]
        A3 --> A4[行ったり来たりで混乱]
        A4 --> A5[進捗が見えない、終わりが見えない]
    end

    subgraph 計画を立てた場合
        B1[タスクを分解] --> B2[順序を決める]
        B2 --> B3[一つずつ消化]
        B3 --> B4[進捗が見える、達成感がある]
    end

計画なしで始めると

  • どこから手をつけていいか分からない
  • 「あ、これも必要だった」と後から気づく
  • 見積もりが立てられず、進捗報告ができない
  • 「終わりが見えない」感覚に陥る

計画を立てると

  • 全体像が見えて迷わない
  • 抜け漏れを事前に発見できる
  • 「今日はここまで」と区切りがつけられる
  • 「1つ終わった」という達成感を得られる

タスクを分解する

なぜ分解するのか

大きな塊のまま取り組むと、「終わりが見えない」感覚になります。

flowchart LR
    subgraph 分解しない場合
        A[ユーザー登録機能を実装する] --> B[巨大なタスク]
        B --> C[どこまで進んだか分からない]
    end

    subgraph 分解した場合
        D[入力フォーム作成] --> E[バリデーション実装]
        E --> F[DB登録処理]
        F --> G[完了画面作成]
    end

小さく分解すれば:

  • 「1つ終わった」という達成感を得られる
  • 進捗が具体的に把握できる
  • 問題が起きても影響範囲が小さい

分解の粒度

目安:1つのタスクが1〜2時間で終わる大きさ

flowchart TB
    A[粗すぎる] --> B[ユーザー登録機能を作る]
    B --> C[何日かかるか分からない]

    D[適切] --> E[入力フォームを作る]
    E --> F[1〜2時間で終わる]

    G[細かすぎる] --> H[ボタンの色を設定する]
    H --> I[管理が煩雑になる]
粒度 問題点
粗すぎる 「ユーザー登録機能」 何日かかるか不明
適切 「入力フォーム作成」「バリデーション実装」 1〜2時間で完了
細かすぎる 「ボタンのclass属性を設定」 管理が煩雑

分解の例

例:ユーザー登録機能の実装

## タスク分解

### 1. 入力フォーム
- [ ] 1.1 フォームの枠組みを作成
- [ ] 1.2 各入力項目を配置
- [ ] 1.3 送信ボタンを配置

### 2. バリデーション
- [ ] 2.1 必須チェック
- [ ] 2.2 メールアドレス形式チェック
- [ ] 2.3 パスワード強度チェック
- [ ] 2.4 重複チェック(API呼び出し)

### 3. 登録処理
- [ ] 3.1 APIエンドポイント作成
- [ ] 3.2 データベースへの保存処理
- [ ] 3.3 確認メール送信処理

### 4. 画面遷移
- [ ] 4.1 登録完了画面の作成
- [ ] 4.2 エラー時の表示処理

分解のコツ

1. 動作確認できる単位で分ける

✗ 「変数を定義する」「メソッドのシグネチャを書く」
  → 動作確認できない

○ 「入力フォームを表示する」「バリデーションが動く」
  → 動作確認できる

2. 依存関係を意識する

flowchart LR
    A[フォーム作成] --> B[バリデーション実装]
    B --> C[API呼び出し]
    C --> D[DB保存]

Aができないと B が作れない、という関係を把握します。

3. 不確実なものを識別する

  • 「よく分からない技術を使う」→ 調査時間を見込む
  • 「仕様が曖昧」→ 確認待ち時間を見込む
  • 「他のチームの作業に依存」→ 待ち時間を見込む

実装順序を決める

順序を決める観点

1. 依存関係を考慮

前提となる処理を先に作る

flowchart LR
    A[1. DBテーブル作成] --> B[2. API作成]
    B --> C[3. 画面からAPI呼び出し]

2. 単純な部分から始める

flowchart LR
    A[単純な処理] --> B[複雑な処理]
    A --> C[理解が深まる]
    C --> B

なぜ単純なものから?

  • 全体の構造を理解できる
  • 自信がついてから難しいものに取り組める
  • 問題が起きても切り分けやすい

3. テストしやすい単位で進める

○ 「入力フォームを作る → 動作確認」
   「バリデーションを作る → 動作確認」

✗ 「全部作ってから動作確認」
   → 問題が起きたときに原因特定が困難

順序の例

例:ユーザー登録機能

順序 タスク 理由
1 入力フォームの枠組み まず画面が表示されることを確認
2 各入力項目を配置 フォームに項目を追加
3 送信ボタン(固定値で動作確認) 画面遷移の仕組みを確認
4 バリデーション(必須チェック) 最も単純なバリデーションから
5 バリデーション(形式チェック) 少し複雑なバリデーション
6 API作成(まず固定値を返す) API呼び出しの仕組みを確認
7 DB保存処理 実際のデータ保存
8 完了画面 正常系の完成
9 エラー処理 異常系の対応

見積もりを立てる

なぜ見積もりが必要か

  • 自分のため:「今日はここまで」という目標が立てられる
  • チームのため:進捗報告ができる
  • 計画のため:スケジュールに収まるか確認できる

見積もりの立て方

1. タスクごとに時間を見積もる

## 見積もり

| タスク | 見積もり時間 |
|--------|-------------|
| 入力フォーム作成 | 1時間 |
| バリデーション実装 | 2時間 |
| API作成 | 2時間 |
| DB保存処理 | 1.5時間 |
| 完了画面作成 | 0.5時間 |
| エラー処理 | 1時間 |
| **合計** | **8時間** |

2. バッファを加える

見積もりは楽観的になりがちです。1.2〜1.5倍のバッファを見込みましょう。

見積もり合計:8時間
バッファ込み:8 × 1.3 = 約10時間

なぜバッファが必要?

  • 予期しない問題が発生する
  • 割り込み作業が入る
  • 仕様の確認待ちが発生する

3. 不確実なものは別枠で

## 確実な見積もり
- 入力フォーム:1時間
- バリデーション:2時間
- 合計:3時間

## 不確実な見積もり(調査が必要)
- 外部API連携:2〜4時間(使ったことがない)
- メール送信:1〜3時間(仕様確認中)

見積もりが外れたら

見積もりは「予測」であり、外れることはあります。

大切なのは

  • 早めに報告する(「予定より時間がかかりそうです」)
  • 原因を分析する(なぜ外れたか)
  • 次に活かす(同様のタスクの見積もりを調整)

計画を書き出す

なぜ書き出すのか

頭の中だけで管理しようとすると

  • 抜け漏れが発生する
  • 進捗が分からなくなる
  • 中断後に再開しづらい

書き出すと

  • 全体が見える
  • 終わったものをチェックできる
  • 他の人にも共有できる

書き出し方の例

シンプルなチェックリスト

## ユーザー登録機能 実装計画

### 今日の目標
- [ ] 入力フォーム完成
- [ ] バリデーション(必須チェック)完成

### タスク一覧
- [x] 1. フォームの枠組み作成 ← 完了
- [ ] 2. 入力項目の配置 ← 作業中
- [ ] 3. 送信ボタン配置
- [ ] 4. 必須チェック
- [ ] 5. 形式チェック
- [ ] 6. API作成
- [ ] 7. DB保存
- [ ] 8. 完了画面
- [ ] 9. エラー処理

詳細な計画

## ユーザー登録機能 実装計画

### 概要
- 開始日:2024/01/15
- 予定完了日:2024/01/17
- 見積もり工数:10時間

### 1日目(1/15)
- [ ] 入力フォーム作成(1時間)
- [ ] バリデーション実装(2時間)

### 2日目(1/16)
- [ ] API作成(2時間)
- [ ] DB保存処理(1.5時間)

### 3日目(1/17)
- [ ] 画面遷移・エラー処理(1.5時間)
- [ ] テスト・調整(2時間)

### 確認事項
- [ ] メールアドレスの重複チェック仕様(田中さんに確認中)

計画のチェックリスト

計画を立て終わったら、以下を確認しましょう。

  • [ ] タスクは1〜2時間で終わる粒度に分解されているか
  • [ ] 依存関係を考慮した順序になっているか
  • [ ] 各タスクの見積もり時間を記載したか
  • [ ] バッファを見込んでいるか
  • [ ] 不確実な部分は識別されているか
  • [ ] 書き出して管理できる状態になっているか

よくある失敗と対策

失敗パターン 対策
タスクが大きすぎる 1〜2時間で終わる粒度に分解
順序を考えずに始める 依存関係を整理してから
見積もりが楽観的すぎる バッファを1.3倍見込む
頭の中だけで管理 書き出してチェックリストに
計画通りに進まないと焦る 計画は調整するもの、報告して修正

まとめ

実装計画のポイント

  1. タスクを分解する:1〜2時間で終わる粒度に
  2. 順序を決める:依存関係を考慮、単純なものから
  3. 見積もりを立てる:バッファを見込む
  4. 書き出す:頭の中だけで管理しない

次のステップ

計画を立てたら、Step 3:実装する に進みましょう。

関連ページ