PickNic 製品要件定義書 (PRD)
1. プロダクトビジョン
「その場にいる全員が、カメラマンになる。」
プロのカメラマンには撮れない「親友だけに見せる笑顔」や「テーブルごとの盛り上がり」を、リアルタイムに会場のスクリーンへ集約。
デジタル使い捨てカメラの不完全な美しさと、自分の写真が空へ飛んでいくワクワク感を融合させた、次世代型ゲスト参加型演出を提供する。
2. ユーザーストーリーマップ
エピック1:ゲストの参加体験(摩擦ゼロの導線)
ゲストがアプリDLなどの障壁なく、即座に「Pick(撮影)」を開始できる体験。
| ID | ユーザーストーリー | 技術的要件・備考 |
|---|---|---|
| US.1 | ゲストとして、テーブルのQRを読み込んだら、アプリDLなしで数秒以内にカメラ画面を表示したい。 | Appless Access。Next.jsによるPWA/ブラウザベース実装 |
| US.2 | ゲストとして、自分の名前(ニックネーム)を入力するだけで参加を完了したい。 | 匿名認証(Anonymous Auth)。パスワード・SNS連携不要 |
| US.3 | ゲストとして、ブラウザからカメラ使用許可を求められた際、迷わず許可できる説明を表示したい。 | getUserMedia API / HTTPS必須 |
エピック2:撮影体験「Pick」(エモい加工と送信)
| ID | ユーザーストーリー | 技術的要件・備考 |
|---|---|---|
| US.4 | シャッター後、「写ルンです」のようなザラついたプレビューを見たい | Canvas APIによるリアルタイムフィルタ |
| US.5 | 写真右下にオレンジ色で日付が刻印されるのを楽しみたい | Canvas ctx.fillText() / カラー #FF6600 |
| US.6 | 写真を上にスワイプしてスクリーンへ送信したい | Framer Motionによる物理演算アニメーション |
| US.7 | 150人同時投稿でも無料枠に収めたい | クライアントで500KB以下に圧縮 |
エピック3:投影体験「Nic」(会場の一体感)
| ID | ユーザーストーリー | 技術的要件・備考 |
|---|---|---|
| US.8 | 投稿後、数秒以内にスクリーンに表示されて驚きたい | Supabase Realtime(遅延2秒以内) |
| US.9 | 写真に「From: ○○さん」が表示されて会話が生まれる | メタデータ表示 |
| US.10 | 写真がタイル状に美しく並ぶ画面を見たい | Masonry Grid + AnimatePresence |
| US.11 | 会場比率に合わせて黒枠なしで表示したい | CSSアスペクト比 / Fullscreen API |
| US.12 | 投稿がない時も過去写真をランダム再生したい | オートスライドショー |
エピック4:安定運用とアーカイブ
| ID | ユーザーストーリー | 技術的要件・備考 |
|---|---|---|
| US.13 | 150人同時接続でも安定稼働したい | Realtime接続の最適化 |
| US.14 | 新郎新婦・ゲスト問わず、参加者全員として挙式後に全写真を一括DLしたい | ZIPエクスポート / ルーム参加者判定でアクセス制御 |
3. 技術スタック & ゼロコスト設計(150名規模対応)
| コンポーネント | 技術 | 無料枠活用ロジック |
|---|---|---|
| Hosting | Vercel | Hobbyプラン無料 / Next.js App Router |
| Database | Supabase (PostgreSQL) | 同時接続200まで |
| Storage | Supabase Storage | 1GB無料(約2000枚保存) |
| Real-time | Supabase Realtime | 月間200万メッセージ |
| Image処理 | Canvas API | クライアント処理でサーバーコスト0 |
4. 追加仕様:写ルンです風加工(US.4・US.5)
保存・処理方針
- 加工済み画像のみを扱う: オリジナル画像はサーバー・端末ともに保存しない。投影・保存・ダウンロードの対象はすべて加工済み画像のみとし、世界観を完全に統一する。
- 処理順序: 端末内で「加工 → 圧縮 → 送信」の順で完結させる。サーバー側での再加工は行わない(コスト0、遅延最小)。
Canvas処理手順
-
カラー補正(色温度シフト+トーン調整)
- コントラストをやや下げ、彩度を少し落とす(退色感)
- シャドウを緑・青寄り、ハイライトを暖色・イエロー寄りにシフト
- ハイライトを少し飛ばして"フィルムの焼け"を再現
-
周辺光量落ち(ビネット)
- 放射状グラデーションで画面四隅をほんのり暗く落とし、中央に視線を集める
-
粒子感(フィルムグレイン)
- ランダムノイズを生成しオーバーレイ描画
-
ライトリーク(光漏れ)
- 一定確率でオレンジ/マゼンタの光漏れをランダム位置に screen 合成
- 毎回違う表情になる"一期一会感"を演出
-
日付刻印
- Font:
Courier NeworOrbitron - Color:
#FF6600 - Format:
26 4 15 - 主催者側で ON/OFF 切替可
- Font:
プリセット切替(主催者機能)
- 主催者はイベントごとに1〜3種類のフィルムルックを選択(例: スタンダード/モノクロ/90年代風)
- ゲスト側では切替不可。会場全体の世界観を統一する。
5. 運用チェックリスト(現場での守り)
ネットワーク
- 会場WiFiが不安定な場合:
- 5Gルーターを用意
- プロジェクター用PCに有線接続
電源
- 投影PCは常時電源接続
- スリープ無効化
HDMI
- 端子形状(Type-A/C)事前確認
- 変換アダプタは予備含め持参