📋 PRD(製品要件定義書)

「バスケしようよ!」のプロダクト要件をまとめたドキュメントです。

1. 概要

草バスケプレイヤーのための、日本最大のピックアップゲーム・コミュニティマッチングサイト

背景・課題

📍 場所の課題

  • • 体育館やコートの予約が難しい
  • • ピックアップゲームの情報がない

👥 仲間の課題

  • • 1人では参加しづらい
  • • 対戦相手が見つからない
  • • 急に人数が足りなくなる

解決策

  • 募集(ピックアップゲーム)の簡単な作成・検索・参加
  • バスケプレイヤー同士のコミュニティ形成
  • 圧倒的なネットワーク効果による日本一のプラットフォーム化

2. ターゲットユーザー(ペルソナ)

👨‍💼

田中さん(28歳)- 社会人プレイヤー

  • • 学生時代にバスケ部だったが、社会人になってプレイ機会が減少
  • • 週末にバスケをしたいが、一緒にプレイする仲間がいない
  • • 気軽に参加できるピックアップゲームを探している
👨

鈴木さん(35歳)- 初心者プレイヤー

  • • 最近バスケに興味を持ち始めた
  • • 経験者ばかりの中に入るのは気が引ける
  • • 初心者歓迎の募集を探している
👩

山田さん(32歳)- 募集主催者

  • • 定期的にピックアップゲームを開催している
  • • 毎回SNSで参加者を募集するのが手間
  • • 効率的に参加者を集めたい

3. ユーザーストーリー(MVP)

US-1: ユーザー登録・ログイン

ユーザーとしてメールアドレスでアカウントを作成・ログインできる。 それによって、募集への参加や作成ができるようになる

US-2: パスワードリセット

ユーザーとしてパスワードを忘れた場合にメールで再設定できる。 それによって、アカウントへのアクセスを回復できる

US-3: プロフィール作成・編集

ユーザーとしてプロフィール(ポジション、身長、活動エリア等)を3ステップで作成・編集できる。 それによって、適切なレベルの募集に参加しやすくなる

US-4: 募集作成

主催者として3ステップで募集を作成し、SNSで共有できる。 それによって、効率的に参加者を募集できる

US-5: 募集検索・フィルタリング

ユーザーとしてエリア・日付・レベル等の条件で募集を検索できる。 それによって、自分に合った募集を見つけられる

US-6: 募集参加申請

ユーザーとして募集に参加申請し、主催者へメッセージを送れる。 それによって、ピックアップゲームに参加できる

US-7: 参加者管理

主催者として参加申請の承認・拒否と参加者一覧の管理ができる。 それによって、適切なメンバーで募集を運営できる

US-8: メッセージ機能

ユーザーとして主催者・参加者とチャットでメッセージのやり取りができる。 それによって、詳細確認や連絡ができる

US-9: 通知機能

ユーザーとして参加承認・申請・メッセージ・リマインダー等の通知を受け取れる。 それによって、重要な情報を見逃さない

US-10: マイページ

ユーザーとして参加予定・履歴・設定を一覧で確認しログアウト・アカウント削除ができる。 それによって、自分の活動を管理できる

US-11: 管理者機能

管理者としてユーザー・募集・通報をダッシュボードで管理できる。 それによって、サービスの安全な運営ができる

US-12: エラーハンドリング

ユーザーとして認証切れ・ネットワーク障害・権限エラー時に適切な案内を受けられる。 それによって、問題発生時も迷わず対処できる

4. 画面構成(28画面)

デザインプレビューで定義済みの全画面一覧です。

認証・プロフィール(6画面)

トップページ(未ログイン)、ログイン、新規登録、パスワードリセット、プロフィール作成、プロフィール編集

募集(8画面)

ホーム(ログイン後)、募集一覧、募集詳細、募集編集、募集作成(3ステップ)、作成確認、作成完了、参加者管理

参加申請(2画面)

参加申請(確認)、参加申請(完了)

コミュニケーション(3画面)

チャット(一覧+会話)、通知一覧、プロフィール閲覧

ユーザー管理(1画面)

マイページ(参加予定/履歴/設定)

管理者(4画面)

ダッシュボード、ユーザー管理、募集管理、通報管理

エラー(4画面)

認証エラー、ネットワークエラー、権限エラー、データエラー

5. アクセシビリティ要件

WCAG 2.1 レベル AA 準拠を目標とし、すべてのユーザーが利用可能なサービスを目指す

⌨️キーボード・スクリーンリーダー対応

必須すべてのインタラクティブ要素にキーボードフォーカスが到達可能
必須フォーム要素に適切な <label> を紐付け(placeholder依存の禁止)
必須モーダル・ドロワーに aria-modal、aria-labelledby を付与
必須ボタン・アイコンに aria-label を付与(テキストがない場合)
必須BottomNav の現在タブに aria-current="page" を設定
推奨フォーカストラップ: モーダル表示中は背面にフォーカスが移動しない
推奨ライブリージョン: 通知バッジ更新時に aria-live="polite" で通知

🎨カラーコントラスト・色覚対応

必須テキストと背景のコントラスト比 4.5:1 以上(通常テキスト)、3:1 以上(大テキスト)
必須色だけで状態を伝えない: ステータス表示にはアイコン・テキストを併用
必須フォーカスインジケーター: デフォルトのブラウザフォーカスリングを削除しない
推奨エラー状態: 赤色 + アイコン + テキストの3重表現

🏗️セマンティックHTML・構造

必須ページ構造: <header>, <main>, <nav>, <footer> の適切な使用
必須見出し階層: h1 → h2 → h3 をスキップせず使用
必須リスト構造: 募集一覧に <ul>/<li> を使用
必須画像: すべての <img> に alt 属性を付与(装飾画像は alt="")
推奨ランドマーク: 検索フォームに role="search" を付与

🧩コンポーネント別要件

コンポーネント要件
Buttondisabled 時に aria-disabled="true"、role="button" 確保
Input<label> 必須、エラー時 aria-invalid="true" + aria-describedby でメッセージ紐付け
Modalaria-modal="true"、開閉時のフォーカス管理、Escape キーで閉じる
BottomNav<nav aria-label="メインナビゲーション">、現在タブに aria-current
Badge重要な情報は sr-only テキストを併記
EventCardカード全体をリンクにする場合、内部リンクの重複を避ける
Avataralt テキスト付与(ユーザー名)、装飾用は alt=""
EmptyStaterole="status" で状態変化を通知

6. 技術スタック

レイヤー技術理由
フロントエンドNext.js 14 (App Router)SSR/SSG対応、React最新機能
言語TypeScript型安全性、AI駆動開発との相性
スタイリングTailwind CSSユーティリティファースト、高速開発
バックエンドSupabase認証・DB・リアルタイム一体型
データベースPostgreSQL (Supabase)リレーショナルDB、RLS対応
認証Supabase Authメール認証、OAuth対応
ホスティングVercelNext.jsとの相性、自動デプロイ
ストレージSupabase Storage画像アップロード用

7. 成功指標(KPI)

最重要KPI

登録ユーザー数

短期目標(3ヶ月後)

登録ユーザー数1,000人
月間募集開催数30件
対象エリア首都圏

中長期目標(1年後)

登録ユーザー数国内バスケプレイヤーの20%
対象エリア全国展開
収益化広告・企業協賛

8. タイムライン

Phase 1

MVP開発

認証(パスワードリセット含む)・プロフィール(3ステップ作成)・募集CRUD・参加申請・メッセージ・通知・管理者画面・エラー画面

Phase 2

機能拡充

チーム機能・評価レビュー・通知機能強化

Phase 3

全国展開

エリア拡大・パフォーマンス最適化・収益化機能