1行ピッチ:すれ違いざまに、他人の偏愛を持ち帰るラジオ。
Engineer Guild Hackathon 2026.05 / お題「『これ面白くない?』の偏愛を繋ぐ。」への応答。
| 項目 | 内容 |
|---|---|
| チーム名 | Terminal 4 |
| プロダクト名 | Melo Link |
| 担当メンター | Ishimoto Shoma |
| GitHub | 氏名 | 大学 / 学部 | 担当役割 |
|---|---|---|---|
| @PhenylPropion | 霍 永豪 | 法政大学 情報科学部 | PM・BE |
| @rjlaxamana | ラクサマナ リーヴィエンヌ ジェイ | 北海道大学 理学院 物性物理学専攻 | BE・Data |
| @ut42tech | 上原 拓也 | 長崎大学大学院 総合生産科学研究科 情報データ科学分野 | FE・PM |
| @mashumarrow | 安井 彩乃 | 同志社大学 理工学部 | Design・FE |
担当役割の凡例:PM / BE(Backend)/ FE(Frontend)/ Design / Infra / Data / その他
街を歩いてすれ違った見知らぬ人の「今聴いている曲」と 「ここすき」(= 曲のどこが好きか) を、深夜ラジオのように受信する音楽モバイル Web アプリ。アルゴリズム推薦を完全に排除し、物理的な偶然のすれ違いだけが価値の起点。 AI がジャンルではなく 「感性の交差点」 でマッチングし、夜にあなたの世界を広げる 1 曲を届ける。
- アルゴリズム疲れ — Spotify / YouTube の推薦が最適化されすぎ「またこの系か」となる
- クラウド完結への寂寥 — SNS は便利だが物理的な「同じ街にいる感じ」が消えた
- マッチングへの抵抗 — DM や友達追加は重い。匿名のまま他人の異常な熱狂の細部に触れたい
- 偏愛の行き場 — 「2 分 15 秒目のベースの歪み」のような deep な好みを共有する場が無い
「都市に上京 1 年目の音楽好き 22 歳」 ハルカ (詳細: docs/personas.md)
- Spotify 毎日 2 時間 / cero, Nujabes, Sufjan Stevens
- 渋谷のカフェで勉強 / AirPods が外せない
- マッチングアプリは退会、SNS は読み専
| # | 機能 | 説明 |
|---|---|---|
| 1 | ここすき登録 | 曲のどの瞬間が好きかをコメント+秒数で登録。Gemini が偏愛タグを自動生成 |
| 2 | すれ違い検知 | GPS (Geolocation API) + サーバ照合で、同じ時間帯・エリアにいた人をすれ違いとして扱う (BLE は iOS PWA 非対応のため不採用) |
| 3 | 夜のチューニング | その日すれ違った人のここすきを 1 枚カードで閲覧。AI が「新ジャンル名」を命名 |
| 4 | 偏愛の交差点 | 1 日分のすれ違いから AI が「世界を広げる 1 曲」を 1 件だけ推薦 |
| 5 | 感性ベクトル マッチ | Gemini text-embedding-004 で生成した「ここすき」ベクトルの cosine similarity で、ジャンル真逆だが感性が一致する人を検出 |
| 6 | 物欲への転換 | 推薦曲のメルカリ送客リンクで「電波 → 物欲」を繋ぐ |
- Day1 終了時:テーマ確定(プロダクト名「Melo Link」/ 解決課題 / ターゲット記入済み)
- Day2 終了時:MVP 動作(BE 20 endpoint + FE 17 page 実装完了)
- Day3 提出直前:FE / BE Vercel 応答確認、README / 主要 docs の表記統一
- Day3 提出完了:Google フォーム送信(5/26 12:00 まで)
- 動くデモ(FE / BE ともに Vercel で HTTP 200 を確認)
- ソースコード(このリポに push 済み)
-
AI_USAGE_LOG.md(AI 活用ログ、メンバー個別ログへのインデックスとして集約) - プレゼン資料(PDF or Slides URL を提出フォームに記載)
- デモ動画(任意・1 分以内・URL 記載)
| 種別 | URL |
|---|---|
| デモ環境 (FE) | https://egh2026-team01.vercel.app |
| デモ環境 (BE / Swagger) | https://egh2026-team01-backend.vercel.app/docs |
| BE health check | https://egh2026-team01-backend.vercel.app/healthz |
| プレゼン資料 | 提出フォーム側の添付 / URL を参照 |
| デモ動画 | 任意提出 |
- フロント:Next.js 16 (App Router) / React 19 / Tailwind CSS v4 / daisyUI 5 / Tabler Icons + lucide-react / Biome / pnpm
- バックエンド:FastAPI (Python 3.12) / Pydantic v2 / JSON 固定データ + Upstash Redis 任意永続化 / uv
- インフラ:Vercel (FE / BE 別プロジェクト) /
@vercel/pythonランタイム - AI:Google Gemini (
gemini-3.1-flash-lite/gemini-3.5-flash/text-embedding-004) viagoogle-genai公式 SDK - AI 開発支援:Claude Code (Claude Opus 4.7) / Gemini (アイディエーション)
| サービス名 | 用途 | プラン | 備考 |
|---|---|---|---|
| Google Gemini API | プロダクト内 AI (偏愛タグ生成 / すれ違いペア解説 / 偏愛の交差点レコメンド / embedding) | Pay-as-you-go | 主力は 3.1-flash-lite。コスト試算では 1,000 req で約 ¥200 |
| Vercel | FE / BE デプロイ | Hobby | 無料枠 |
| Upstash Redis (任意) | 書き込み系 API の短期永続化。未設定時は in-memory fallback | Free | デモ中に落ちないための保険 |
| Spotify (検索 URL のみ) | 推薦曲の遷移先 | 認証なし | 検索結果ページに遷移、API キー不要 |
| メルカリ (検索 URL のみ) | 送客 | 認証なし | 検索結果ページに遷移 |
→ API キー・秘匿情報は .env(.gitignore 対象)と Vercel 環境変数で管理。
cd backend
cp .env.example .env # GOOGLE_API_KEY を入れる (なくてもスタブで動く)
uv sync # 依存解決
uv run uvicorn app.main:app --reload
# → http://localhost:8000/docs (Swagger)詳細: backend/README.md / backend/docs/FRONTEND.md
cd frontend
pnpm install
# (任意) .env.local に NEXT_PUBLIC_BACKEND_BASE_URL=http://localhost:8000 を記載
# (任意) NEXT_PUBLIC_USE_MOCK=true でローカルモックを強制使用
pnpm dev
# → http://localhost:3000詳細: frontend/CLAUDE.md / frontend/AGENTS.md
開発期間 3 日のため、以下は 意図的に切り落とした / 妥協した 範囲です。 正直に書くことで自己評価力を示します。
- BLE すれ違い検知 — iOS Safari の Web Bluetooth 非対応のため、設計段階で GPS (Geolocation API) + サーバ照合 に切替済
- データの永続化 — 書き込み系 API は Upstash Redis があれば短期永続化、未設定時は in-memory fallback。Vercel cold start では固定 JSON / 初期状態に戻る可能性がある
- ユーザー認証 — MVP は
user_idをクエリ平文で受ける。本番化には OAuth / セッショントークン化が必要 - ペアの対称マッチング — 現状 viewer 視点の片方向 Encounter 1 行のみ。双方向マッチで AI コスト最適化は将来課題
- Redis 未設定時、いいね / フォロー / 編集系は LocalStorage / in-memory 保持になる
- AI の文字数揺れ (±20%) があるため、UI で min-height を確保
詳細: docs/feedback/
| 日時 | メンター | 議論内容(要点) | 採用 / 一部採用 / 不採用 |
|---|---|---|---|
| Day2 10:30 | メルカリ社員 (FB①) | ペルソナ絞り込み (上京 22 歳 1 人に決め切れ) / MVP 音楽 1 本 / マネタイズはコンセプト純度死守 | 採用 |
| Day2 16:30 | メルカリ社員 (FB②) | スライド壁打ち / 既存ソリューション差分 / 質疑想定 | 採用 |
審査項目「AI 活用度」の根拠資料 → AI_USAGE_LOG.md (集約版)
メンバー個別ログ:
docs/ai-usage-log/AI_USAGE_LOG_uehara.md(FE / PM)docs/ai-usage-log/AI_USAGE_LOG_laxamana.md(BE / Data)docs/ai-usage-log/AI_USAGE_LOG_A5.md(PM / BE / business)
| 項目 | 許諾 (Y/N) | 補足・条件 |
|---|---|---|
| ① このリポを Public 化してよい(コードがすべて公開される) | Y | |
| ② プロダクト名・スクリーンショット・1行ピッチを HTV / Mercari の SNS・記事で掲載してよい | Y | |
| ③ スポンサー企業(Mercari, P&G 等)の広報・採用ページでプロダクト紹介してよい | Y |
審査は以下 8 項目で実施されます。
- 実用性 — 通学/通勤で自動で価値が積み上がる体験設計
- 創造性 — 「マッチングしない SNS」「中間距離レコメンド」「新ジャンル命名 AI」の組合せ
- UI / UX — daisyUI v5 + 深夜ラジオ世界観 (紺・深緑・アンバー / Noto Sans JP)
- 技術的挑戦 — Gemini embedding + structured output (
response_schema) を全面採用 - 将来性 — 偏愛コマースプラットフォーム化のロードマップ (
docs/concept.md§9) - 完成度 — BE 20 endpoint + FE 17 page、世界観を文字 1 行ずつまで整合
- プレゼンテーション — 6 分台本 + 想定 Q&A 7 件完備 (
docs/presentation-plan.md) - AI 活用度 —
AI_USAGE_LOG.mdが根拠資料 / 採用・不採用の判断も含めて記録
メンター・運営 (株式会社ハウテレビジョン / 株式会社メルカリ) のみなさま、ありがとうございました。
- Slack:
#eg-hackathon-2026-05(または#pjt_swe_event) - 緊急時: 運営メンバー(Mercari HQ 受付 → 運営呼び出し)
