第2章
企画と機能を小さく決める
利用者の課題から最小機能、画面、データ、完了条件を決め、実装可能な仕様へ落とします。
この章で学ぶこと
- アイデアを利用者の課題と利用場面に結び付ける
- MVP(最小限の価値を確かめる版)の範囲を決める
- 生成AIと相談するときに、判断材料が残る仕様を書く
1. 課題から始める
「AIを使いたい」「アプリを作りたい」だけでは機能を決められません。まず、誰が、いつ、何に困っているかを書きます。
| 項目 | Idea Pocketの例 |
|---|---|
| 利用者 | 小さな開発チームのメンバー |
| 場面 | 会議前後に思いつきを忘れたくないとき |
| 現在の困りごと | チャットに流れて後から見つけられない |
| 最も大切な行動 | アイデアを短いカードとして保存する |
| 成功の判断 | 初めての人が1分以内に1件保存できる |
生成AIには「良さそうな機能」ではなく、反対意見も求めます。
次のアプリ案を評価してください。
対象者、利用場面、現在の代替手段、最小の価値、作らない機能、
失敗する理由を表にしてください。
前提が足りない箇所は、推測と明記してください。
2. Must / Later / Not nowに分ける
最初の版で必要な機能をMust、価値を確認してから追加するものをLater、当面作らないものをNot nowに分けます。
| Must | Later | Not now |
|---|---|---|
| ログイン | 画像添付 | 独自SNS |
| カードの作成・一覧・削除 | 共同編集 | 複雑な権限階層 |
| 入力エラー表示 | プッシュ通知 | 全機能のオフライン同期 |
| データ削除方法 | AIによる要約 | 広告の最適化実験 |
生成AI機能そのものをアプリへ組み込む場合も、最初は「1つの入力から1つの下書きを作る」程度に絞ります。APIキーをアプリへ直接埋め込まず、呼び出し回数の制限、費用上限、不適切入力、生成結果の表示方法を設計します。
3. 利用者の操作をシナリオにする
機能名だけでは完成を判定しにくいため、利用者の操作と期待結果を書きます。
シナリオ: アイデアを保存する
前提: 利用者はログイン済み
操作:
1. 「新規」ボタンを押す
2. タイトルと本文を入力する
3. 「保存」を押す
期待結果:
- 保存中は二重送信できない
- 成功後に一覧へカードが表示される
- タイトルが空なら保存せず理由を表示する
- 通信失敗時は入力内容を残して再試行できる
この形式は、そのまま実装依頼とテスト項目に使えます。
4. 画面とデータを決める
Idea Pocketの最初の版は3画面です。
ログイン画面 → カード一覧 → 作成画面
└→ 削除確認
Firestoreを使う場合のデータ例です。
users/{uid}
displayName
createdAt
users/{uid}/ideas/{ideaId}
title
body
createdAt
updatedAt
uidはFirebase Authenticationが発行する利用者IDです。保存先をusers/{uid}の下にすると、本人のデータだけを許可するSecurity Rulesを考えやすくなります。ただし、パス設計だけで保護されるわけではありません。ルールとテストが必要です。
5. 非機能要件も最初に書く
画面に見えない条件もあります。
- 対応OS・ブラウザーと、古い端末をどこまで支えるか
- 読み込み中、通信なし、権限拒否、空データの表示
- 保存する個人情報と、保存期間・削除方法
- 1日あたりの利用者数、保存件数、予算上限
- アクセシビリティ、文字サイズ、色のコントラスト
- 問い合わせ先、障害時の告知方法
- 広告を出すか、子ども向けか、対象地域はどこか
6. 1ページ仕様書を作る
リポジトリのdocs/product-brief.mdなどに、次を1ページ程度で保存します。
# アプリ名
## 解決する課題
## 対象利用者と利用場面
## 最初の版に含める機能
## 含めない機能
## 画面遷移
## データと外部サービス
## 完了条件
## 未決定事項・リスク
生成AIとの会話だけに仕様を残すと、次の作業で前提が失われます。採用した内容をリポジトリへ書き、変更時はコードと一緒に更新します。
やってみよう
- 自分のアプリについて1ページ仕様書を書く。
- 生成AIに「最初の版として大きすぎる点を3つ指摘して」と依頼する。
- Must機能を3〜5個に減らす。
- Must機能ごとに、成功・入力ミス・通信失敗の完了条件を書く。