第1部:アプリケーション設計 Step 1 / 24

要件定義の方法

アプリ開発で最も重要なのは「何を作るか」を明確にすること。AIに開発を依頼する前に、要件を整理することで、期待通りの成果物が得られます。

なぜ要件定義が重要か

要件定義なしで開発すると...

  • ✗ 作りながら「何が必要か」を考える
  • ✗ 後から大幅な修正が発生
  • ✗ AIへの指示が曖昧になる
  • ✗ 完成形がブレる

要件定義してから開発すると...

  • ○ ゴールが明確
  • ○ 必要な機能が整理されている
  • ○ AIへの指示が具体的になる
  • ○ 手戻りが少ない

ユーザーストーリーを書く

ユーザーストーリーは「誰が」「何をしたいか」「なぜか」を簡潔に表現したものです。

フォーマット

○○として△△したい。なぜなら□□だから

ブログアプリの例

ユーザーとして記事を投稿したい。 なぜなら自分の考えを発信したいから
ユーザーとして自分の記事を編集・削除したい。 なぜなら間違いを修正したいから
訪問者として記事の一覧を見たい。 なぜなら興味のある記事を探したいから
訪問者として記事の詳細を読みたい。 なぜなら内容を理解したいから

機能一覧を作る

ユーザーストーリーから、具体的な機能を洗い出します。

機能 説明 優先度
ユーザー登録 メール・パスワードで新規登録 必須
ログイン/ログアウト 認証状態の管理 必須
記事作成 タイトル・本文を入力して投稿 必須
記事編集 自分の記事のみ編集可能 必須
記事削除 自分の記事のみ削除可能 必須
記事一覧 全記事を新しい順に表示 必須
記事詳細 記事の全文を表示 必須
画像アップロード 記事に画像を添付 あれば
コメント機能 記事にコメントを投稿 あれば

MVP(最小限の製品)を意識する:まずは「必須」の機能だけで動くものを作り、後から機能を追加していく方が効率的です。

AIに設計を相談する

要件が整理できたら、AIに設計を相談しましょう。

AIへの指示例

以下の要件でブログアプリを設計してください。

【概要】
認証付きのブログアプリ。ユーザーは記事を投稿・編集・削除できる。

【技術スタック】
- フロントエンド: Next.js (TypeScript)
- バックエンド: FastAPI
- データベース: MySQL
- 認証: JWT
- 環境: Docker Compose

【機能一覧】
- ユーザー登録(メール・パスワード)
- ログイン/ログアウト
- 記事のCRUD(作成・読取・更新・削除)
- 記事一覧表示
- 記事詳細表示

【質問】
1. どのようなテーブル構成が良いですか?
2. APIエンドポイントはどう設計すべきですか?
3. フォルダ構成のおすすめを教えてください。

ポイント:AIに「質問」を含めることで、対話的に設計を詰めていけます。一度に全部決めようとせず、段階的に進めましょう。

画面一覧を作る

どんな画面が必要かをリストアップします。

公開ページ(認証不要)

  • / - トップページ(記事一覧)
  • /posts/[id] - 記事詳細
  • /login - ログイン
  • /register - 新規登録

会員ページ(認証必要)

  • /posts/new - 記事作成
  • /posts/[id]/edit - 記事編集
  • /mypage - マイページ(自分の記事一覧)

まとめ

  • ユーザーストーリーで「誰が何をしたいか」を明確にする
  • 機能一覧で必要な機能を洗い出し、優先度をつける
  • MVP(最小限の機能)から始める
  • AIに設計を相談して、具体的な構成を決める
  • 画面一覧で必要なページを整理する
トップページ 次へ:コンポーネント設計