৽ػೳͷཁ݅ఆٛ ػೳ֓ཁ ΧϥΦέϘοΫεͰҰॹʹ͍Δਓಉ͕࢜ϦΞϧλΠϜͰۂϦετΛڞ༗͠ɺϦΫΤετΛૹΓ߹ ͑Δػೳɻ ओͳػೳཁ݅ 1. ηογϣϯཧ - ϗετػೳ: ෦Λ࡞ͯ͠ηογϣϯΛ։࢝ - ήετػೳ: ۙ͘ͷηογϣϯΛ୳ͯ͠ࢀՃ - ࣗಈஅ: ΞϓϦऴྃ࣌όοΫάϥϯυҠߦ࣌ͷॲཧ 2. σʔλڞ༗ - Ϧετڞ༗: બͨ͠ηοτϦετΛࢀՃऀͱڞ༗ - ϓϩϑΟʔϧ: χοΫωʔϜΞόλʔ৭ͷઃఆ - ϦΞϧλΠϜಉظ: ۂͷՃɾআ͕ଈ࠲ʹө 3. ϦΫΤετػೳ - ۂϦΫΤετ: ଞͷਓͷϦετ͔ΒۂΛબΜͰϦΫΤετૹ৴ - ϦΫΤετड৴: ௨ͱϦΫΤετҰཡදࣔ - εςʔλεཧ: ঝೝ/٫Լ/อཹͷঢ়ଶཧ 4. ηΩϡϦςΟɾϓϥΠόγʔ - ڞ༗ൣғ੍ޚ: ͲͷϦετΛڞ༗͢Δ͔બՄೳ - ηογϣϯೝূ: ෦ίʔυQRίʔυͰͷࢀՃ੍ݶ - Ұ࣌తͳڞ༗: ηογϣϯऴྃޙσʔλ͕Βͳ͍ ٕज़తͳߟྀࣄ߲ MultipeerConnectivity - MCSession: ηογϣϯཧ - MCNearbyServiceBrowser: ۙ͘ͷηογϣϯΛ୳͢ - MCNearbyServiceAdvertiser: ηογϣϯΛެ։ - σʔλܗࣜ: CodableΛ༻ͨ͠JSON௨৴ σʔλϞσϧ֦ு // ηογϣϯࢀՃऀ struct SessionParticipant { let peerID: MCPeerID let nickname: String let avatarColor: String let sharedLists: [SongList] } // ϦΫΤετ struct SongRequest { let id: UUID let fromPeerID: MCPeerID let toPeerID: MCPeerID let song: Song let message: String? let status: RequestStatus let createdAt: Date } enum RequestStatus { case pending case accepted case declined } UI/UXϑϩʔ 1. ηογϣϯ։࢝ը໘ - ʮ෦Λ࡞Δʯʮ෦ʹࢀՃʯͷબ - χοΫωʔϜઃఆ 2. ࢀՃऀҰཡը໘ - ଓதͷࢀՃऀϦετ - ֤ࢀՃऀͷڞ༗Ϧετදࣔ 3. ଞऀͷϦετӾཡը໘ - ࢀՃऀͷηοτϦετදࣔ - ۂΛλοϓͯ͠ϦΫΤετૹ৴ 4. ϦΫΤετཧը໘ - ड৴ͨ͠ϦΫΤετҰཡ - ૹ৴ͨ͠ϦΫΤετҰཡ - εςʔλεߋ৽ Ͳͷ෦͔Βৄࡉʹઃܭ͍͖ͯ͠·͠ΐ͏͔ʁ 13