このセッションで学ぶこと

1
要件定義プロセスへのAI導入ポイント ヒアリングから設計までの全工程で、AIが補助できる箇所とその効果を把握する
2
ヒアリングメモの構造化 散在するメモをAIでカテゴリ分類し、要件リストに変換するフローを身につける
3
ユーザーストーリーとAPI設計の自動生成 構造化された要件からAs a/I want to/So thatフォーマットへの変換と、API設計への展開方法を学ぶ
4
AI出力の検証と補完 生成された要件の漏れ・矛盾を検出し、非機能要件を補完する方法を確認する

1. 要件定義プロセスの全体像

要件定義はヒアリングから始まり、要件整理、ユーザーストーリー化、機能一覧、API設計、レビューへと進む。従来は各工程が手作業で、特にメモの整理とストーリー化に時間がかかっていた。AIはこの「変換作業」を高速化する。

ヒアリング
要件整理
ユーザーストーリー
機能一覧
API設計
レビュー

各工程でのAI活用と効果

工程 従来の作業 AI補助の内容 時間削減
ヒアリング 手書きメモ、議事録作成 音声文字起こし、要点自動抽出 60-70%
要件整理 メモをExcelに手入力、分類 カテゴリ自動分類、重複検出、優先度提案 50-60%
ユーザーストーリー作成 要件を1つずつストーリー形式に変換 テンプレートへの自動変換、Acceptance Criteria生成 60-70%
機能一覧 ストーリーから機能を手動で洗い出し ストーリーの分解、CRUD操作の自動列挙 40-50%
API設計 機能一覧からエンドポイントを手設計 エンドポイント候補の自動生成、OpenAPI Spec出力 40-50%
レビュー 手動で要件の漏れ・矛盾をチェック AIによる網羅性チェック、矛盾検出、非機能要件の補完提案 30-40%

2. 従来プロセス vs AI補助プロセス

同じ規模のプロジェクト(画面数15、API数30程度のWebアプリ)で要件定義にかかる工数を比較する。AIは「人間の判断が要る工程」を代替するのではなく、「変換・整理の手作業」を圧縮する。

Before: 従来プロセス
  • ヒアリング議事録作成: 4時間
  • メモの整理・分類: 6時間
  • ユーザーストーリー作成: 8時間
  • 機能一覧の洗い出し: 4時間
  • API設計(エンドポイント定義): 6時間
  • レビュー・修正: 4時間
  • 合計: 約32時間(4人日)
After: AI補助プロセス
  • ヒアリング(AIが同時に文字起こし): 1.5時間
  • AI整理結果の確認・修正: 2時間
  • AIストーリー生成の確認・修正: 3時間
  • AI機能一覧の確認・追加: 2時間
  • AI API設計の確認・調整: 3時間
  • AIレビュー結果の確認・最終判断: 2時間
  • 合計: 約13.5時間(1.7人日)
工数削減率
58%
32時間 → 13.5時間
18.5時間の削減
品質への影響
+15%
AIの網羅性チェックにより
要件漏れが平均15%減少
人間の役割の変化
判断集中
「書く作業」から
「確認・判断する作業」へ

時間削減の数値はAIの出力品質に依存する。プロンプトの設計とドメイン知識の注入が不十分だと、修正工数が膨らんで効果が薄れる。「AIに丸投げ」ではなく「AIの出力を叩き台にして人間が仕上げる」が正しいスタンス。

3. ヒアリングメモから構造化データへの変換

ヒアリングで集まるメモは断片的で、同じ話題が複数箇所に散らばっていることが多い。AIはこの混沌としたメモをカテゴリに分類し、構造化された要件リストに変換する。

変換フロー

散在メモ
箇条書き、議事録、
付箋、チャットログ
AI分類エンジン
カテゴリ判定
重複統合
構造化要件リスト
カテゴリ別に整理
優先度付き

変換の実例

入力: ヒアリングメモ(散在した状態)
- 商品の検索は名前とカテゴリでできるようにしたい
- 注文したらメールで確認が届くようにして
- 管理画面から在庫を更新できないとダメ
- クレジットカードとコンビニ払いに対応
- 会員登録なしでも買えるようにしたい(ゲスト購入)
- 過去の注文履歴は見れるようにしてほしい
- 商品画像は複数登録できるようにして
- スマホでも使えないと困る
- 月次の売上レポートが欲しい
- ポイント制度は次のフェーズでいい
出力: 構造化された要件リスト
カテゴリ 要件 優先度 フェーズ
商品管理 商品の名前・カテゴリによる検索機能 High Phase 1
商品管理 商品画像の複数登録 Medium Phase 1
商品管理 管理画面からの在庫更新 High Phase 1
注文管理 注文確認メールの自動送信 High Phase 1
注文管理 注文履歴の閲覧 Medium Phase 1
決済 クレジットカード決済対応 High Phase 1
決済 コンビニ払い対応 Medium Phase 1
ユーザー ゲスト購入(会員登録不要での購入) High Phase 1
管理・分析 月次売上レポート Medium Phase 1
ロイヤルティ ポイント制度 Low Phase 2
非機能要件 モバイルレスポンシブ対応 High Phase 1

AIは「ポイント制度は次のフェーズ」という発言からPhase 2に分類し、「スマホでも使えないと困る」を非機能要件として抽出している。人間のメモでは明示されない暗黙の分類を推論で補う。ただし、推論が間違っている可能性があるため、出力は必ず人間が確認する。

4. ユーザーストーリーの自動生成

構造化された要件リストをユーザーストーリー形式に変換する。「As a ~ / I want to ~ / So that ~」のテンプレートに当てはめ、Acceptance Criteria(受け入れ条件)もセットで生成する。

変換テンプレート

構造化要件
「商品の名前・カテゴリ
による検索機能」
AI変換
ペルソナ推論
目的推論
ユーザーストーリー
As a / I want to / So that
+ Acceptance Criteria

生成例

出力: ユーザーストーリー

US-001: 商品検索

As a 購入者

I want to 商品名やカテゴリで商品を検索したい

So that 大量の商品の中から目的の商品を素早く見つけられる

Acceptance Criteria:

- 商品名の部分一致検索ができる

- カテゴリによるフィルタリングができる

- 検索結果が0件の場合、適切なメッセージを表示する

- 検索結果が20件以上の場合、ページネーションを表示する

- 検索はレスポンス2秒以内で完了する

出力: ユーザーストーリー

US-002: ゲスト購入

As a 初めてサイトを訪れた利用者

I want to 会員登録せずに商品を購入したい

So that 面倒な登録手続きなしにすぐ買い物ができる

Acceptance Criteria:

- メールアドレスと配送先情報の入力だけで注文が完了する

- ゲスト購入後に会員登録への導線を表示する

- ゲスト購入でも注文確認メールが届く

- ゲスト購入の注文履歴は注文番号とメールで確認できる

AIは元の要件に書かれていない情報も推論で補完している。「ページネーション」「レスポンス2秒以内」「会員登録への導線」は元のメモにはなかった内容。こうした補完は便利だが、プロジェクトの方針と異なる可能性があるため確認が必須。

5. ユーザーストーリーマッピング

生成したユーザーストーリーをユーザー行動の時系列に沿って並べ、エピック単位でグループ化する。横軸がユーザー行動の流れ、縦軸が優先度。上の行がMVP、下の行が後回しの機能。

フェーズ 商品閲覧 カートと注文 決済 注文後
Epic 商品の発見 購入プロセス 支払い アフターサービス
MVP
(Phase 1)
商品検索MVP
カテゴリ一覧MVP
商品詳細表示MVP
カート追加MVP
ゲスト購入MVP
数量変更MVP
クレジットカードMVP
コンビニ払いMVP
注文確認メールMVP
注文履歴MVP
拡張
(Phase 1.5)
画像複数表示拡張
お気に入り拡張
クーポン適用拡張 電子マネー拡張 売上レポート拡張
在庫管理拡張
将来
(Phase 2)
レコメンド将来 定期購入将来 後払い将来 ポイント制度将来
レビュー機能将来

AIにストーリーマッピングを依頼すると、ユーザー行動の流れに沿った配置とMVP/拡張の振り分けを提案してくれる。ただし、ビジネス判断が必要な優先順位(「コンビニ払いはMVPか拡張か」など)は人間が最終決定する。

6. API設計のAI支援プロセス

ユーザーストーリーと機能一覧が揃ったら、API設計に進む。AIは要件からエンドポイント候補を自動生成し、リクエスト/レスポンスの型定義、さらにはOpenAPI Specまで出力できる。

生成フロー

1
要件からリソースを抽出
ユーザーストーリーからCRUD操作の対象となるリソース(商品、注文、ユーザー、決済等)を抽出する。「商品を検索する」→ リソースは「商品(Product)」、操作は「Read」と判断。
2
エンドポイント候補を生成
リソースとCRUD操作の組み合わせからRESTfulなエンドポイントを導出する。命名規則(複数形、kebab-case)やHTTPメソッドの割り当てもAIが推論する。
3
リクエスト/レスポンス定義
各エンドポイントのリクエストボディ、パスパラメータ、クエリパラメータ、レスポンスの型を定義する。データ型(string, number, boolean等)とバリデーションルールも含む。
4
OpenAPI Spec生成
エンドポイント定義をOpenAPI 3.1のYAML/JSON形式で出力する。Swagger UIで即座にドキュメント化でき、コードジェネレーターでクライアント/サーバーコードの雛形も生成可能。

AI生成エンドポイント例(ECサイト注文機能)

HTTPメソッド エンドポイント 機能 認証
GET /api/v1/products 商品一覧取得(検索・フィルタ対応) 不要
GET /api/v1/products/{id} 商品詳細取得 不要
POST /api/v1/cart/items カートに商品追加 任意(ゲスト可)
PATCH /api/v1/cart/items/{id} カート内商品の数量変更 任意(ゲスト可)
DELETE /api/v1/cart/items/{id} カートから商品を削除 任意(ゲスト可)
POST /api/v1/orders 注文作成 任意(ゲスト可)
GET /api/v1/orders/{id} 注文詳細取得 必須
GET /api/v1/orders 注文履歴一覧取得 必須
POST /api/v1/payments 決済処理実行 必須
POST /api/v1/admin/products 商品登録(管理者) 管理者のみ
PATCH /api/v1/admin/products/{id}/stock 在庫更新(管理者) 管理者のみ

7. RESTful API設計原則 早見表

AIにAPI設計を任せる前に、RESTの基本原則を押さえておく。AIの出力がこの原則に沿っているかを確認する目として使う。

HTTPメソッドと用途

メソッド 用途 冪等性 リクエストボディ
GET リソースの取得 あり なし GET /products -- 商品一覧取得
POST リソースの作成 なし あり POST /products -- 商品新規作成
PUT リソースの全体更新 あり あり PUT /products/123 -- 商品全項目更新
PATCH リソースの部分更新 条件付き あり PATCH /products/123 -- 商品一部更新
DELETE リソースの削除 あり 通常なし DELETE /products/123 -- 商品削除

ステータスコード早見表

コード 名称 使用場面
200 OK GET, PUT, PATCH, DELETEの成功
201 Created POSTによるリソース作成成功。Locationヘッダで新リソースのURLを返す
204 No Content DELETE成功時にボディを返さない場合
400 Bad Request リクエストの構文エラー、バリデーション失敗
401 Unauthorized 認証が必要だが認証情報がない、または無効
403 Forbidden 認証済みだが権限がない
404 Not Found 指定されたリソースが存在しない
409 Conflict リソースの状態と矛盾する操作(在庫切れの商品を注文など)
422 Unprocessable Entity 構文は正しいがビジネスルール違反
500 Internal Server Error サーバー側の予期しないエラー

URL命名規則

O
リソース名は複数形の名詞
/products, /orders, /users。動詞は使わない。/getProducts のようなRPC風の命名はRESTfulではない。
O
ケバブケース(kebab-case)を使用
/order-items は正しい。/orderItems(キャメルケース)や /order_items(スネークケース)はURL規約として非推奨。
O
バージョンはパスプレフィックスに含める
/api/v1/products。ヘッダでバージョニングする方法もあるが、パスプレフィックスの方がシンプルで広く採用されている。
!
ネストは2階層まで
/users/123/orders は許容。/users/123/orders/456/items/789 のような深いネストは避ける。サブリソースが深くなるならフラットに /order-items?order_id=456 とする。

8. AI出力の検証チェックリスト

AIが生成した要件定義やAPI設計を鵜呑みにしてはいけない。以下のチェックリストで出力を検証し、漏れや矛盾を人間が補完する。

要件の検証

1
ヒアリングで出た要件が全て含まれているか(要件漏れの検出)
2
要件間に矛盾がないか(例: 「ゲスト購入可能」と「全機能に会員登録必須」が同居していないか)
3
優先度の設定はビジネス判断と一致しているか(AIの推論がステークホルダーの意図と合っているか)
4
非機能要件が漏れていないか(性能、セキュリティ、可用性、アクセシビリティ)
5
AIが勝手に追加した要件はないか(元のヒアリングにない機能が混ざっていないか)

ユーザーストーリーの検証

1
ペルソナ(As a)が適切か。ヒアリングで想定されたユーザー像と一致しているか
2
目的(So that)がビジネス価値を表現しているか。技術的な表現になっていないか
3
Acceptance Criteriaがテスト可能な形で記述されているか(曖昧な表現がないか)
4
ストーリーの粒度は適切か。1スプリントで完了できるサイズか

API設計の検証

1
RESTful原則に沿っているか(HTTPメソッドの正しい使い分け、リソース名の命名規則)
2
認証・認可の設計は適切か。公開エンドポイントと認証必須エンドポイントが正しく分かれているか
3
エラーレスポンスの形式が統一されているか。エラーコードとメッセージの設計があるか
4
ページネーション、ソート、フィルタリングの設計がされているか(一覧系エンドポイント)
5
レスポンスに不要なデータが含まれていないか。過剰なフィールドはセキュリティリスクになる

非機能要件の補完チェック

カテゴリ 確認項目 AIが見落としやすい例
性能 レスポンスタイム、スループット、同時接続数 セール時のアクセス集中(通常の10倍を想定する等)
セキュリティ 認証方式、データ暗号化、CSRF対策 PCI DSS準拠(クレジットカード決済を扱う場合)
可用性 SLO目標、障害時のフォールバック メンテナンスウィンドウの設定、決済処理中の二重注文防止
運用 ログ設計、監視項目、バックアップ方針 個人情報のマスキング、ログの保持期間
法規制 個人情報保護法、特定商取引法 退会時のデータ削除義務、特商法に基づく表示

9. 実演シナリオ -- ECサイトの注文機能

ここまでの内容を1つのシナリオで通しで見る。ECサイトの注文機能を題材に、ヒアリングメモからAPI設計までの変換プロセスを実演する。

Step 1: ヒアリングメモ(入力)

クライアントからのヒアリング内容
- お客さんが商品をカートに入れて注文できるようにしたい
- 注文するときに配送先を入力してもらう
- 配送先は前回の住所を記憶して自動入力してほしい
- 注文が確定したら確認メールを送る
- 在庫がない場合は注文できないようにする
- 注文後のキャンセルは発送前なら可能にしたい
- 管理者は全注文を一覧で見れるようにして
- 配送状況のステータス(準備中→発送済み→配達完了)を管理者が更新できるようにする

Step 2: 構造化要件(AI出力 → 人間確認)

ID カテゴリ 要件 優先度
R-001注文カートの商品をまとめて注文できるHigh
R-002注文注文時に配送先住所を入力するHigh
R-003注文前回の配送先住所を自動入力(会員ユーザーのみ)Medium
R-004通知注文確定時に確認メール送信High
R-005在庫在庫なし商品の注文をブロックHigh
R-006注文発送前の注文キャンセル機能Medium
R-007管理全注文の一覧表示(管理者向け)High
R-008管理配送ステータスの更新(準備中/発送済み/配達完了)High

Step 3: ユーザーストーリー(AI出力 → 人間確認)

R-006 から生成されたユーザーストーリー

US-006: 注文キャンセル

As a 注文した購入者

I want to 発送前であれば注文をキャンセルしたい

So that 誤って注文した場合や不要になった場合に対処できる

Acceptance Criteria:

- 配送ステータスが「準備中」の注文のみキャンセル可能

- キャンセル実行後、在庫数が元に戻る

- キャンセル完了メールが送信される

- 決済済みの場合、返金処理が自動で開始される

Step 4: API設計(AI出力 → 人間確認)

メソッド エンドポイント 対応要件 備考
POST /api/v1/orders R-001, R-002, R-005 在庫チェック後に注文作成。在庫不足なら409を返す
GET /api/v1/users/{id}/addresses R-003 会員の配送先住所一覧。最後に使った住所をdefaultフラグで識別
PATCH /api/v1/orders/{id}/cancel R-006 ステータスが「準備中」でなければ422を返す。在庫を戻す処理を含む
GET /api/v1/admin/orders R-007 管理者専用。ページネーション、ステータスフィルタ対応
PATCH /api/v1/admin/orders/{id}/status R-008 配送ステータス更新。ステータス遷移のバリデーションあり

このシナリオでは8つのヒアリングメモから8つの要件を抽出し、それを元にユーザーストーリーとAPIエンドポイントを導出した。AI出力のたびに人間が確認・修正するフローが一連の品質を担保する。全体を通すと、手動で1日かかる作業が半日で完了する。

用語集

User Story(ユーザーストーリー)
ソフトウェアの機能をエンドユーザーの視点で記述した短い説明。「As a [ロール] / I want to [行動] / So that [目的]」のフォーマットが広く使われている。アジャイル開発のバックログアイテムの単位。
Epic(エピック)
複数のユーザーストーリーをまとめた大きな機能単位。1スプリントでは完了しないサイズの要件。例: 「注文管理」というエピックの下に「カート追加」「注文確定」「注文キャンセル」のストーリーが並ぶ。
Acceptance Criteria(受け入れ条件)
ユーザーストーリーが「完了」と判断するための具体的な条件。テスト可能な形で記述する。「検索結果が0件の場合、適切なメッセージを表示する」のように、合否を明確に判定できる記述が求められる。
API(Application Programming Interface)
ソフトウェア同士がデータをやり取りするための接続口。Webアプリケーションでは、フロントエンドとバックエンドの間の通信仕様を指すことが多い。
REST(Representational State Transfer)
Web APIの設計原則。リソースをURLで表現し、HTTPメソッド(GET/POST/PUT/DELETE等)で操作を表す。ステートレスで統一されたインターフェースを持つことが特徴。
OpenAPI / Swagger
REST APIの仕様をYAMLまたはJSON形式で記述する標準フォーマット。エンドポイント、パラメータ、レスポンスの型を機械可読な形で定義する。Swagger UIで人間向けドキュメントを自動生成できる。
CRUD
Create(作成)、Read(読取)、Update(更新)、Delete(削除)の4つの基本操作。データベースやAPIの操作を分類する際に使われる。RESTではPOST/GET/PUT(PATCH)/DELETEに対応する。
Endpoint(エンドポイント)
APIにアクセスするための具体的なURL。HTTPメソッドとURLの組み合わせで1つの操作を表す。例: GET /api/v1/products は「商品一覧の取得」というエンドポイント。
Schema(スキーマ)
データの構造定義。APIではリクエストボディやレスポンスの型、フィールド名、バリデーションルールを定義するJSON Schemaが使われる。OpenAPI SpecのcomponentsセクションにSchemaを定義する。
MVP(Minimum Viable Product)
最小限の機能で市場に出せる製品。全機能を作り込む前に核心的な価値を検証する目的で開発する。ユーザーストーリーマッピングでMVPラインを引き、最初のリリース範囲を決める。
Non-functional Requirements(非機能要件)
「何ができるか」ではなく「どのくらいの品質で動くか」を定義する要件。性能(レスポンスタイム)、セキュリティ、可用性、拡張性、保守性などが該当する。ヒアリングで明示されにくく、AIも見落としやすい。

参考URL一覧

OpenAPI Specificationswagger.io Atlassian -- User Stories with Examplesatlassian.com RESTful API Tutorialrestfulapi.net Jeff Patton -- User Story Mappingjpattonassociates.com Swagger UI -- API Documentationswagger.io Microsoft -- Web API Design Best Practiceslearn.microsoft.com MDN -- HTTP Response Status Codesdeveloper.mozilla.org Anthropic -- Prompt Engineering Guidedocs.anthropic.com OpenAI -- Structured Outputs Guideplatform.openai.com Mountain Goat Software -- User Storiesmountaingoatsoftware.com