PickNic 要件定義書
1. プロダクトビジョン
「その場にいる全員が、カメラマンになる。」 プロのカメラマンには撮れない「親友だけに見せる笑顔」や「テーブルごとの盛り上がり」を、リアルタイムに会場のスクリーンへ集約。ゲスト参加型の最高のエンターテインメント体験を提供する。
2. ターゲットユーザー
- 新郎新婦: ゲストと一緒に会場を盛り上げたい、堅苦しくない式にしたい。
- ゲスト: 撮った写真をすぐにみんなで見たい。アプリのダウンロードなど面倒なことはしたくない。
3. 主要機能要件
① ゲスト専用ウェブアプリ(PWA/Mobile Browser)
- ログインレス・アクセス: アプリのダウンロードや会員登録は不要。QRコードを読み込むだけで即座に参加可能。
- 直感的なスワイプアップ撮影: 撮影した写真を「シュッ!」と上にスワイプすると、スクリーンに向かって写真が飛んでいくUI演出。
- クライアントサイド画像圧縮: 通信量とストレージを節約するため、送信前に端末内で画像を500KB〜1MB程度にリサイズして送信。
- オフライン一時保存: 式場の電波が不安定な場合、一時的に端末内に保存し、接続が回復した際に自動でアップロードする。
② 会場投影用:ライブフォトウォール(Projector View)
- リアルタイム反映: ゲストが投稿した瞬間に、プロジェクター画面にアニメーションと共に表示(遅延2秒以内)。
- 動的グリッドレイアウト: 新着写真は大きく、過去の写真はタイル状に自動配置されるMasonryレイアウト。
- オートスライドショー: 投稿がない時間は、これまでの写真をランダムに再生するループ機能。
- アスペクト比調整: 会場に合わせて 16:9 または 4:3 をワンクリックで切り替え。
③ アーカイブ・ダウンロード機能
- 参加者全員がダウンロード可能: 式の終了後、新郎新婦・ゲストを問わずイベントに参加した全員が、全てのオリジナルデータをZIP形式で保存可能。
- 個別写真の保存・共有: タイムライン/ギャラリーから、気に入った写真を個別にダウンロード・SNS共有できる。
- 公開期間の設定: 主催者(新郎新婦)はダウンロード可能期間を設定できる(例: イベント後30日間)。
4. 技術スタック & ゼロコスト設計
150名規模に耐える「無料枠の最大活用」プランです。
| コンポーネント | 選定技術 | 無料枠での運用ロジック |
|---|---|---|
| Frontend | Next.js (App Router) | VercelのHobbyプラン(無料)でホスティング。 |
| Real-time DB | Supabase | 無料枠で200同時接続まで対応。150名規模なら十分。 |
| Storage | Supabase Storage | 無料枠1GB。画像1枚を500KBに圧縮すれば、約2,000枚まで無料。 |
| Animation | Framer Motion | 「写真が飛ぶ」滑らかな動きを実装。 |
5. 非機能要件(UXのこだわり)
- パフォーマンス: 150名が一斉にアクセスしてもDBがロックしないよう、SupabaseのRealtime機能を活用。
- セキュリティ: イベントごとに推測不可能なUUID(例:
picknic.io/e/[unique-id])を発行。 - 現場の守り: 会場WiFiに頼り切らず、テザリング等でも動くようページ重量を極限まで軽量化。
6. 爆速開発マイルストーン(3週間)
- Week 1 (MVP):
- Supabaseプロジェクト作成、Next.jsからの画像アップロード。
- Goal: 「撮って送ってサーバーに残る」の完遂。
- Week 2 (Real-time):
- Supabase Realtimeでプロジェクター画面の同期。
- Framer Motionで「シュッ!」と飛ぶ演出の磨き込み。
- Week 3 (Release):
- アーカイブ・ダウンロード機能(ZIP一括/個別)とクライアント側圧縮の実装。
- 負荷テストと会場持ち込み用マニュアル作成。