第5章

コアスキル:フルスタック実践プロジェクト

要件から納品までの完全なプロセスを習得し、Spec駆動開発の方法論を理解し、WBS分解とDoD定義を学び、エンタープライズレベルのプロジェクト管理と品質管理能力を身につけます。

要件の明確化方法論

要件の明確化はプロジェクト成功の基盤です。体系的な方法を通じて、真の要件を理解し、手戻りや誤解を防ぎます。

Reverse Interviewテクニック

Reverse Interviewは、"なぜ"と पूछうことで真のニーズを掘り起こす能動的な質問テクニックです:

「何が」ではなく「なぜ」を問う

誤った質問の仕方:「どのような機能が必要ですか?」

正しい質問の仕方:「この機能が必要な理由は? 何の問題を解決しますか?」

「なぜ」と問いかけることで、ニーズの背後にある本当の動機とビジネス目標を理解する。

「いつ」と「誰」を尋ねる

  • 使用シーン:「この機能はいつ使いますか?使用頻度はどのくらいですか?」
  • 対象ユーザー:『この機能を使うのは誰か?その技術レベルはどのくらいか?』
  • 使用環境:"どのような環境で使用するのか?制限は何か?"

「もし...ならどうなるか」と問う

  • 境界ケース:「この機能がなかったらどうなる?」
  • 例外処理:「データに異常があったらどうなる?」
  • 拡張性:"要件が変わったらどうなる?"

ユーザーストーリーの作成

ユーザーストーリーは要件の最小単位で、役割、目標、価値の3つの要素を含みます:

ユーザーストーリーテンプレート:

[役割] として、
私は [目標] を望みます、
[価値/理由] のため。

良いユーザーストーリーの特徴

  • 独立性:独立して開発およびテストできる
  • 交渉可能:議論や調整ができる
  • 価値がある:ユーザーに実際の価値がある
  • 見積もり可能:開発時間を見積もることができる
  • :1回の反復で完了できる
  • テスト可能:明確な受け入れ基準がある

受け入れ基準

各ユーザーストーリーには明確な受け入れ基準が必要で、Given-When-Then 形式を使用します:

Given: ユーザーはログイン済み
When: ユーザーが「タスクを作成」ボタンをクリックしたとき
Then: タスク作成フォームを表示する
And: ユーザーはタスクのタイトルと説明を入力できます
And: ユーザーはタスクを保存できます

要件の優先順位付け

MoSCoW方法

  • Must have:必須であり、プロジェクト成功の鍵となる機能
  • Should have:あるべきだが、重要ではあるものの決定的ではない
  • Could have:あってもよいが、時間が許せば行う
  • Won't have:今回はやらなくても、将来的にやるかもしれない

価値-複雑度マトリクス

機能の価値と複雑さに基づき、高価値で低複雑度の機能を優先的に開発する。

実践ケース:EC プラットフォームの要件明確化

初期要件

"買い物カート機能が必要です"

Reverse Interview のプロセス

  • Q: "なぜカートが必要なのですか?" A: "ユーザーは複数の商品を同時に選択できる必要があるからです"
  • Q: "いつ使用しますか?" A: "商品を閲覧していて、気に入ったものがあればカートに追加します"
  • Q: "誰が使いますか?" A: "すべての登録ユーザー"
  • Q: "ユーザーがログインしていない場合はどうなりますか?" A: "カートに追加はできますが、チェックアウト時にログインが必要です"

明確化された要件

  • • ユーザーは商品をカートに追加できる(ログイン済み/未ログイン)
  • • ユーザーはカート内の商品を確認できる
  • • ユーザーは商品の数量を変更できます
  • • ユーザーは商品を削除できます
  • • 未ログインユーザーのカートはローカルストレージに保存される
  • • ログイン後にローカルのカートとサーバーのカートを統合

Spec 駆動開発

Spec駆動開発は要件を実行可能な仕様に変換し、AIはSpecに基づいて直接コードを生成できるため、開発効率とコード品質を向上させます。

PRD作成

PRD 構成

  • 製品概要:製品ポジショニング、ターゲットユーザー、コアバリュー
  • 機能要件:詳細な機能説明とユーザーストーリー
  • 非機能要件:パフォーマンス、可用性、セキュリティ、拡張性
  • ユーザーインターフェース:インターフェース設計とインタラクションフロー
  • データモデル:データ構造と関係
  • 受け入れ基準:機能受け入れ、性能受け入れ、安全性受け入れ

PRD 作成原則

  • 明確でわかりやすい:明確な言葉を使い、曖昧さを避ける
  • 実行可能:AIはPRDに基づいて直接コードを生成できます
  • テスト可能:各要件には明確な受け入れ基準がある
  • 追跡可能:要件はビジネス目標までたどれる

API Spec(OpenAPI仕様)

OpenAPI仕様の利点

  • 標準化:業界標準で、ツールのサポートが充実している
  • 実行可能:AIはOpenAPIに基づいて直接コードを生成できる
  • テスト可能:APIテストケースを自動生成できる
  • ドキュメント化可能:自動生成APIドキュメント

API Specの例

openapi: 3.0.0
info:
  title: Task Management API
  version: 1.0.0
paths:
  /api/tasks:
    get:
      summary: タスク一覧を取得
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum: [pending, in-progress, completed]
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  tasks:
                    type: array
                    items:
                      $ref: '#/components/schemas/Task'
    post:
      summary: タスクを作成
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskRequest'
      responses:
        '201':
          description: 作成成功
components:
  schemas:
    Task:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        status:
          type: string
          enum: [pending, in-progress, completed]

UI Spec

UI Specの内容

  • ページレイアウト:ページ構造、コンポーネントの位置
  • コンポーネント設計:コンポーネントの種類、スタイル、インタラクション
  • 対話フロー:ユーザー操作フロー、状態変化
  • レスポンシブデザイン:異なる画面サイズへの適応

UI Spec の書き方のコツ

  • • Figma または同様のツールを使用して画面をデザインする
  • • 各コンポーネントの状態と相互作用を詳細に説明する
  • • AI ツール(v0 など)を使用して、説明に基づいてコードを生成する
  • • デザインシステムとコンポーネントライブラリを提供する

実践ケース:PRDからコードまでの完全な流れ

Step 1: PRD を作成する

製品目標、機能要件、非機能要件を明確にする

ステップ 2: API Spec を作成する

OpenAPI仕様を使ってAPIインターフェースを定義し、AIはSpecに基づいてAPIコードを生成できます

Step 3: UI Spec を作成する

インターフェースデザインを詳しく説明し、v0 などのツールで UI コードを生成する

Step 4: Cursorを使ってコードを生成する

PRD、API Spec、UI Spec を Cursor Agent に渡して、完全なコードを生成する

Step 5: テストと最適化

Spec に基づいてテストケースを作成し、機能が Spec の要求を満たしているか検証する

WBS 分解

WBS(Work Breakdown Structure)は大きなタスクを実行可能な小さなタスクに分解し、タスク間の依存関係を明確にして、プロジェクト管理と進捗追跡を容易にします。

タスク分割の原則

粒度制御

  • 2〜4時間の原則:各タスクは2〜4時間以内に完了すべきです
  • テスト可能性:各タスクには明確な受け入れ基準がある
  • 独立性:タスク間の依存関係をできるだけ減らす
  • 見積もり可能:完了時間を正確に見積もれる

依存関係

  • 依存関係を特定する:タスク間の依存関係を明確にする
  • クリティカルパス:プロジェクトのクリティカルパスを特定し、優先して完了する
  • 並列タスク:並列実行できるタスクを識別する
  • 依存関係の管理:ツール(GitHub Projects など)を使用して依存関係を管理する

時間見積もり

三点見積もり法

見積もり式:(楽観時間 + 4×最可能時間 + 悲観時間) / 6

例:楽観的2時間、最も可能性が高い4時間、悲観的8時間 → 見積もり = (2 + 4×4 + 8) / 6 = 4.3時間

類推による見積もり

類似タスクの完了時間を参考にし、現在のタスクの複雑さを踏まえて調整します。

AI支援による見積もり

AIツールを使ってタスクの複雑さを分析し、過去のデータと組み合わせて時間を見積もる。

リソース割り当て

人員配置

  • • スキルと経験に基づいてタスクを割り当てる
  • • 人の作業負荷を考慮する
  • • 重要なタスクにはバックアップ要員を確保する

ツールの割り当て

  • • 十分な開発ツールとリソースを確保する
  • • ツールのライセンスとコストを考慮する
  • • 代替案を準備する

時間配分

  • • プロジェクトの締め切りを考慮する
  • • リスクに備えて余裕時間を確保する
  • • 並行タスクと直列タスクのバランスを取る

実践事例:WBS分解の例

1. プロジェクト準備(4時間)
1.1 環境構築(2時間)
1.2 プロジェクト初期化(2時間)
2. データベース設計(6時間)
2.1 データモデル設計(3時間)
2.2 データベーステーブルの作成(2時間)
2.3 データ移行スクリプト(1時間)
3. バックエンド API 開発(16時間)
3.1 ユーザー認証API(4時間、2.1に依存)
3.2 タスク CRUD API(8時間、2.1 に依存)
3.3 データ統計 API(4 時間、2.1 に依存)
4. フロントエンド UI 開発(12 時間)
4.1 ログインページ(2時間)
4.2 タスクリストページ(4時間、3.2に依存)
4.3 タスク詳細ページ(3時間、3.2に依存)
4.4 データ統計ページ(3時間、3.3に依存)
5. テストとデプロイ(8時間)
5.1 単体テスト(4時間)
5.2 統合テスト(2時間)
5.3 デプロイ(2時間)

クリティカルパス:1 → 2.1 → 3.2 → 4.2 → 5(総所要時間:約34時間)

DoDの定義

DoD(Definition of Done)はタスク完了の基準を定義し、納品品質を確保し、「見た目は完了しているが実際には未完了」という状況を防ぎます。

品質基準

コード品質

  • • ESLint チェックを通過し、重大な警告なし
  • • コードはチームの規約に準拠している
  • • コードはコードレビューに合格済み
  • • 既知のバグなし

テストカバレッジ

  • • 単体テストのカバレッジ>80%
  • • 主要機能には統合テストがある
  • • すべてのテストに合格
  • • テストコードの品質が基準を満たす

ドキュメントが充実している

  • • API ドキュメントが完全である
  • • コードコメントが十分である
  • • ユーザーマニュアルの更新
  • • 変更ログの更新

パフォーマンス指標

  • • ページ読み込み時間<2秒
  • • API応答時間<500ms
  • • データベースクエリの最適化
  • • メモリリークなし

受け入れ基準

機能受け入れ

  • • すべての機能をSpecどおりに実装する
  • • ユーザーストーリーの受け入れ基準を満たす
  • • エッジケースの処理が正しい
  • • エラー処理の充実

パフォーマンス受け入れテスト

  • • 性能指標が要件を満たす
  • • 負荷テストに合格
  • • ストレステスト合格
  • • パフォーマンス監視は正常です

セキュリティ受け入れテスト

  • • セキュリティスキャンを通じて
  • • 重大な脆弱性なし
  • • データ暗号化は正しい
  • • 権限管理が正しい

実践ケース:DoDチェックリスト

コードはGitにコミット済みで、CI/CDチェックを通過
コードはESLintチェックに合格し、重大な警告はありません
単体テストのカバレッジは80%以上で、すべてのテストが合格しています
コードはコードレビューに合格し、レビューコメントは対応済みです
機能はテスト済みで、受け入れ基準を満たしています
パフォーマンステストに合格し、指標は目標を満たしている
セキュリティスキャンに合格、重大な脆弱性なし
ドキュメントは更新されており、APIドキュメントとユーザーマニュアルは完全です
テスト環境にデプロイ済み、UAT 合格
プロダクトマネージャーの検収に合格し、リリース可能

学習成果

この章を終えると、あなたは:

  • 1要件の明確化手法(Reverse Interview、ユーザーストーリー、優先順位付け)を習得し、真のニーズを引き出せる
  • 2Spec 駆動開発のエンジニアリング実践を理解し、明確な PRD、API Spec、UI Spec を作成できる
  • 3WBS 分解の方法を習得し、タスクの適切な分割、時間見積もり、リソース配分ができるようになります
  • 4DoD の品質基準を理解し、受け入れ基準を定義して、納品品質を確保できる
  • 5エンタープライズレベルのプロジェクト管理と品質管理能力を備え、プロジェクトの円滑な納品を確実にできる