凡例:

graph LR
    %% ノードの定義
    Start((開始))
    
    %% Sync Points (マイルストーン)
    Sync1{<b>Sync 1</b><br>BLE疎通}
    Sync2{<b>Sync 2</b><br>DB表示}
    Sync3{<b>Sync 3</b><br>チャット}
    Goal((<b>完成</b><br>提出))

    %% 久米のタスクフロー
    Start --> K1[環境構築 &<br>Git初期化] -- 1h --> K2[BLE権限 &<br>Manager実装]
    K2 -- 3h --> K3[BLE送受信<br>ロジック]
    K3 --> Sync1
    
    Sync1 --> K4[Firebase設定 &<br>Auth匿名認証] -- 2h --> K5[DB検索 &<br>Repository実装]
    K5 -- 3h --> Sync2
    
    Sync2 --> K6[チャット送信<br>関数実装] -- 3h --> K7[リアルタイム<br>受信リスナー]
    K7 -- 2h --> Sync3
    
    Sync3 --> K8[デモ用<br>隠し機能実装] -- 2h --> Goal

    %% 昆野のタスクフロー
    Start --> C1[デザインガイド &<br>素材作成] -- 2h --> C2[レーダー画面<br>UI実装]
    C2 -- 3h --> Sync1
    
    Sync1 --> C3[プロフィール<br>入力UI] -- 3h --> C4[リスト表示<br>UI接続]
    C4 -- 2h --> Sync2
    
    Sync2 --> C5[チャット画面<br>レイアウト] -- 3h --> C6[吹き出しUI &<br>スクロール]
    C6 -- 2h --> Sync3
    
    Sync3 --> C7[ヘルプ画面 &<br>全体調整] -- 2h --> Goal

    %% スタイル定義
    classDef kume fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
    classDef konno fill:#fce4ec,stroke:#880e4f,stroke-width:2px;
    classDef sync fill:#fff9c4,stroke:#fbc02d,stroke-width:4px,shape:diamond;
    
    class K1,K2,K3,K4,K5,K6,K7,K8 kume;
    class C1,C2,C3,C4,C5,C6,C7 konno;
    class Sync1,Sync2,Sync3 sync;

統合ポイント詳細定義 (Definition of Sync)

各Syncポイントで「何が完了していれば成功か」の定義です。これを目指して各自作業を進めます。

◆ Sync 1: BLE疎通(土台完成)

ここでのゴール: サーバー無しで、スマホ同士が互いを認識できる。

担当 持ち寄る成果物 (Output)
久米 BleManager クラス
・権限許可ダイアログが出る。
Logcat に周囲のUUIDが表示される。
・受信したUUIDリストを StateFlow で流している。
昆野 RadarScreen (UI)
・アニメーションするレーダー画面。
・ViewModelからダミーのリストを受け取って表示できる状態。
統合後 「実機2台を近づけると、UI上のカウントが増える(またはログが出る)」状態。

◆ Sync 2: DB表示(個体識別)

ここでのゴール: 誰とすれ違ったか、名前とタグが見える。

担当 持ち寄る成果物 (Output)
久米 UserRepository クラス
・Firebaseに匿名ログイン済み。
・BLEで検知したUUIDを使って、Firestoreからデータを引ける。
・引いたデータを List<User> に変換して流している。
昆野 MatchListScreen (UI)
・プロフィール入力画面ができている。
・すれちがいリストのカードUIができている。
・ViewModelのデータを LazyColumn で表示できる。
統合後 「すれ違うと、相手の名前とアイコンがリストに自動で追加される」状態。

◆ Sync 3: チャット(交流機能)

ここでのゴール: 会話が成立する。

担当 持ち寄る成果物 (Output)
久米 ChatRepository クラス
sendMessage() でFirestoreに書き込める。
SnapshotListener で相手の書き込みを即座に検知できる。
昆野 ChatScreen (UI)
・自分(右)と相手(左)の吹き出しが出る。
・送信ボタンを押すと入力欄が消える。
・リストからタップしてチャット画面に遷移できる。
統合後 「Aさんが送信すると、Bさんの画面に即座に吹き出しが出る」状態。

スムーズな開発のためのルール