VibeCode / 開発マップ

● ━ ● ● ━ ● ━  →  01101  →  id  →  URL
A |振動担当 B |画面担当 自分 |受信担当 共通・結合
✅ 完了 ▶ 着手中/次やる ⏳ 待ち(依存あり) 最終更新時点:受信 R1–R7・R9 / 送信 F1–F6 / S1 完了。受信の入口をマイク → ピエゾに変更。
データの流れ(1回の送信で何が起きるか)
01
スマホが振動する
A / B F1–F6
02
ピエゾで拾う(接触)
自分 · E1/R4
03
ON/OFFに変換
自分 · R2
04
短/長 → id を復元
自分 · R1 ✓
05
id で URL を検索
自分 · R9
06
ブラウザで開く
自分 · R7 / R10
※ 事前準備として「URL登録 → id発行」が上流にある(共通 S1 + 送信 F9)。
※ 内蔵マイクでは弱い振動を拾えなかったため、受信はピエゾ(接触振動センサー)に切替。空気の騒音に強く、弱い振動も接触で拾える。
誰が・どの順で作るか
Aさん
振動担当/ロジック
(震わせる下回り)
Flutter
F1振動の基盤
F2パターン生成
(プリアンブル+短長)
F6自動演奏
F8実機録音
→ R8の材料(ピエゾ検証後)
F9Supabase登録
(URL→id発行)
Bさん
画面担当/UI
(見せて演奏させる)
Flutter
F3encoder
(id→ビット列)
F4楽譜表示 ★
F5手動演奏ボタン ★
F7id入力(テスト用)
演出楽譜・演奏の見栄え磨き
+発表スライド
自分
受信担当/統括
(読み取って開く)
Python
R1起動確認
R2dsp:音→ON/OFF
R3チャンネル+偽センサー
R4マイク入力
(→拾えず・教訓)
R5デバッグ可視化(目)
R6結合・受信ループ
R7ターミナル演出
R9Supabase逆引き
(offline保険付き)
E1ピエゾ受信
★物理問題の解決鍵
R8ピエゾ向けチューニング
← ピエゾ+F8待ち
R10通し(受信側完成)
3人で
共通・結合
together
S1Supabase用意
J1通し結合
(自動→手動)
J2本番機チューニング
J3デモ・リハ
いまの山場・待ち合わせ
★ いま最大の山場:ピエゾで拾えるか

内蔵マイクでは弱い振動を拾えないと判明。ピエゾ(接触センサー)で拾えるかの検証(E1)が、全体の分岐点。拾えれば一気にR8→R10→J1へ。ダメなら送信を強くする等の再検討。

ピエゾ+F8R8

ピエゾで拾える前提で、本番送信機の録音(F8)を使ってチューニング。F6まで出来てるので録音はすぐ録れる。

S1 ✓F9 / R9

Supabaseは構築済み。受信R9は完了。残るは送信側F9(URL登録→id発行)。

F5 + F6 + R10J1

送信(手動・自動は完了)と受信完成(R10)が揃えば、実機で end-to-end 結合。ここがプロダクト完成の瞬間。

手が空いたら:2人の次タスク
Aさん(ロジック)

F8の録音準備(自動演奏で正確に鳴らす)→ F9(Supabase登録ロジック)→ 結合J1の技術担当として自分と組む → stretch: QR方式(X1)。

Bさん(UI)

F7(id入力)→ 楽譜・演奏UIの見栄え磨き(音ゲー風・演出)→ 発表スライド/デモ画面/デモ用URLの準備。発表の見栄えを主導。

拡張(本線 J1 が通ってから)
E2 机越し受信
E3 IMU受信
E4 複数センサーAND判定
X1 直接符号化・送信(QR方式)
X2 直接符号化・受信
+ 対戦モード(早打ち対決)
読み方:上=1回の送信で起きること / 中=担当ごとの作業順(左→右・✅完了/▶次/⏳待ち)/ 下=いまの山場と2人の次タスク。★=体験のコア。
※ E1(ピエゾ)は物理問題の解決策として stretch から本線に格上げ。