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

Step 1:仕様を理解する

実装を始める前に、何を作るのかを明確にするステップです。このステップを疎かにすると、後で大きな手戻りが発生します。

なぜ仕様理解が重要なのか

flowchart TB
    subgraph 仕様を理解せずに実装
        A1[「たぶんこうだろう」で実装] --> A2[完成後に確認]
        A2 --> A3[「これじゃない」と言われる]
        A3 --> A4[最初から作り直し]
        A4 --> A5[時間のムダ、信頼低下]
    end

    subgraph 仕様を理解してから実装
        B1[仕様を確認・質問] --> B2[正しい理解で実装]
        B2 --> B3[期待通りのものができる]
        B3 --> B4[スムーズにレビュー通過]
    end

仕様を理解しないまま実装を始めると

  • 「作ったけど違った」という手戻りが発生する
  • 途中で「あれ?これでいいんだっけ?」と迷う
  • レビューで「仕様と違う」と指摘される
  • 信頼を失い、次から細かく確認される

仕様を理解してから実装を始めると

  • 迷わず一直線に実装を進められる
  • 手戻りが発生しない
  • レビューがスムーズに通る
  • 「任せられる」という信頼につながる

確認すべき4つのポイント

1. 何を実装するのか(What)

機能の目的と範囲を把握する

確認項目
機能の名前 ユーザー登録機能
何ができるようになるか 新規ユーザーがアカウントを作成できる
今回の実装範囲 入力バリデーションと登録処理
範囲外は何か メール認証は次フェーズ

なぜ範囲の確認が必要?:「ついでにこれも」と範囲外のことを実装すると、テストケースが増え、予定より時間がかかります。また、他の機能との整合性が取れなくなることもあります。

2. どう動くべきか(How)

入力・出力・振る舞いを把握する

flowchart LR
    A[入力] --> B[処理]
    B --> C[出力]
確認項目
入力データ ユーザー名、メールアドレス、パスワード
入力の制約 メールアドレスは形式チェック、パスワードは8文字以上
正常時の出力 登録完了画面を表示、確認メールを送信
エラー時の出力 エラーメッセージを表示、入力内容は保持

なぜ入出力の確認が必要?:「入力はこれでいいだろう」と思い込んで実装すると、後から「この項目も必要だった」「この形式じゃないとダメ」となります。

3. 関連する機能は何か(Relation)

他の機能との関係を把握する

flowchart TB
    A[ユーザー登録] --> B[ログイン機能]
    A --> C[メール送信機能]
    A --> D[ユーザー管理画面]
確認項目
呼び出し元 トップページの「新規登録」ボタン
呼び出し先 メール送信API、データベース登録処理
影響を受ける機能 ログイン機能(登録したユーザーでログイン)
共通で使う機能 バリデーション共通処理、エラーハンドリング

なぜ関連機能の確認が必要?:関連する機能のコードを参考にできますし、影響範囲を事前に把握できます。また、共通処理があれば再利用できます。

4. 制約や注意点は何か(Constraint)

守るべきルールや考慮事項を把握する

確認項目
パフォーマンス要件 登録処理は3秒以内
セキュリティ要件 パスワードはハッシュ化して保存
既存コードとの整合性 既存のUserクラスを使う
禁止事項 既存テーブルの構造変更は不可

なぜ制約の確認が必要?:「自由に作っていい」と思っていたら、後から「それはダメ」と言われることがあります。事前に制約を把握しておけば、手戻りを防げます。

設計書の読み方

ステップ1:まず全体を眺める

いきなり詳細を読み始めず、全体像を把握します。

  • 目次を見て全体構成を把握
  • 図やフローチャートを先に見る
  • 「結局何を作るのか」を理解する
flowchart LR
    A[目次を見る] --> B[図を見る]
    B --> C[概要を読む]
    C --> D[全体像を把握]

ステップ2:自分の担当範囲を特定

設計書全体のうち、今回自分が実装する範囲を明確にします。

  • 担当する機能はどの部分か
  • 画面のどこからどこまでか
  • 処理のどこからどこまでか

注意:「全部理解してから始めよう」とすると、時間がかかりすぎます。まずは担当範囲に集中し、必要に応じて周辺を読みましょう。

ステップ3:詳細を読み込む

担当範囲について、詳細を理解します。

  • 画面項目の一つ一つを確認
  • 処理フローを追う
  • 条件分岐を把握
  • エラー処理を確認

ステップ4:不明点をメモする

読んでいて分からない点をメモします。

  • 曖昧な記述
  • 矛盾している箇所
  • 書いていないこと
  • 複数の解釈ができる箇所
## 不明点メモ

1. 「適切なエラーメッセージを表示」→ 具体的なメッセージは?
2. 「登録完了後、メールを送信」→ 送信失敗時はどうする?
3. 「重複チェック」→ メールアドレスだけ?ユーザー名も?

不明点は確認する

なぜ確認が必要なのか

flowchart TB
    A[曖昧な仕様] --> B{確認する?}
    B -->|しない| C[自分の解釈で実装]
    C --> D[レビューで「違う」と言われる]
    D --> E[作り直し]

    B -->|する| F[正しい仕様を理解]
    F --> G[正しく実装]
    G --> H[スムーズに完了]

確認に5分かけることで、作り直しの5時間を防げます。

確認の仕方

良い確認の仕方

〇〇の機能について質問があります。

設計書の△△ページに「□□する」とありますが、
以下の理解で合っていますでしょうか?

・入力値が空の場合 → エラーメッセージを表示
・入力値が不正な場合 → エラーメッセージを表示(メッセージは異なる)
・入力値が正常な場合 → 次の処理へ進む

また、「適切なエラーメッセージ」とありますが、
具体的なメッセージ文言は決まっていますでしょうか?

ポイント

  • 自分の理解を示す(丸投げしない)
  • 具体的に質問する
  • 選択肢を提示する(可能であれば)

悪い確認の仕方

✗「設計書がよく分かりません」
  → 何が分からないか具体的に

✗「どう実装すればいいですか?」
  → 自分の理解や案を示してから質問

✗「〇〇でいいですよね?」(確認せず実装してから)
  → 実装前に確認する

確認のタイミング

タイミング 理由
実装を始める前 手戻りを防ぐ
できるだけ早く 回答待ちで手が止まらないように
まとめて質問 何度も聞くより効率的

注意:質問をためらって「たぶんこうだろう」で進めると、後で大きな手戻りになります。迷ったら聞くが鉄則です。

仕様理解のチェックリスト

実装を始める前に、以下を確認しましょう。

機能の理解

  • [ ] 何を実装するか説明できる
  • [ ] なぜこの機能が必要か理解している
  • [ ] 今回の実装範囲が明確になっている

入出力の理解

  • [ ] どんなデータが入力されるか把握している
  • [ ] どんな結果を出力するか把握している
  • [ ] 正常系・異常系の動きを理解している

関連の理解

  • [ ] 関連する機能を把握している
  • [ ] 参考にできる既存コードを見つけている
  • [ ] 共通処理があれば把握している

制約の理解

  • [ ] 守るべきルールを把握している
  • [ ] やってはいけないことを把握している
  • [ ] 不明点は確認済み

よくある失敗と対策

失敗パターン 対策
仕様を読まずに実装開始 まず設計書を一通り読む
曖昧なまま実装 不明点は実装前に確認
範囲外も実装してしまう 実装範囲を明確にする
全部理解しようとして進まない 担当範囲に集中する

まとめ

仕様理解のポイント

  1. 実装前に仕様を確認する:「たぶんこう」で始めない
  2. 4つの観点で確認:What、How、Relation、Constraint
  3. 不明点は質問する:確認5分で手戻り5時間を防ぐ
  4. 担当範囲に集中:全部理解しようとしない

次のステップ

仕様を理解したら、Step 2:実装計画を立てる に進みましょう。

関連ページ