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

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%

上記の削減率は、画面数15・API数30規模のWebアプリを想定し、[McKinsey]のドキュメンテーション45-50%削減、[Krishna et al. 2024]のSRS作成60-70%短縮等の調査データをもとに構成した推定値です。プロジェクトの規模・ドメイン・チームの習熟度によって実際の効果は変動します。

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時間の削減
品質への影響(推定)
向上
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:

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

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

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

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

「ページネーション」「レスポンス2秒以内」「会員登録への導線」は元のメモにはなかった内容ですが、AIが一般的なECサイトの知識から補完しました。こうした推論による補完が、要件の抜け漏れ防止に直結します。

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出力の品質を担保するためのチェックリストです。漏れや矛盾を人間の目で検証し、最終品質を引き上げます。

要件の検証

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