at iOSDC Japan 2018
東急ハンズのレジは内製開発のiPadアプリで動いています。 そんなレジ用アプリはアプリ間で様々な情報を交換しています。
レジ間を飛び交う通信内容や通信方式の現在に至るまでの変遷を紹介します。
౦ٸϋϯζͷP2PϨδؒ௨৴20189/1 iOSDC Japan 2018taiki komaba(@r_plus)
View Slide
UBJLJLPNBCB!S@QMVT)"/%4-"#*/$
HandsPOS
▸ ౦ٸϋϯζͷϨδͱͯࣗࣾ͠։ൃ͍ͯ͠ΔiPadΞϓϦ▸ ैۀһૢ࡞༻ͱΧελϚʔ༻ͷ2Ϟʔυ▸ 1ͷϨδʹ͖ͭ1ηοτ▸ ͜ͷैۀһଆͱΧελϚʔଆͰP2P௨৴HandsPOS
beforeafter
2015/122016201720182019HandsPOS
2015/12201620172018201985%ಋೖྃHandsPOS
2015/1220162017201820192020ফඅ૿੫HandsPOS
MultipeerconnectivityP2P
Multipeer ConnectivityΧελϚʔଆ(C)ैۀһଆ(P).VMUJQFFS$POOFDUJWJUZ0001Ϩδ
ΧελϚʔଆ(C)ैۀһଆ(P).VMUJQFFS$POOFDUJWJUZ0001ϨδMultipeer Connectivity- औҾใ (ใɺׂҾใɺࢧ͍ใetc)ૹ৴ใ
2015/122016201720182019औҾใ(P2C)HandsPOS
2015/122016201720182019औҾใ(P2C)HandsPOSΫϨδοτಋೖΫϨδοταΠϯཁٻ(P2C)ΫϨδοταΠϯը૾(C2P)
2015/122016201720182019औҾใ(P2C)HandsPOSΫϨδοτಋೖΫϨδοταΠϯཁٻ(P2C)ΫϨδοταΠϯը૾(C2P)όοςϦʔใ(C2P)
όοςϦʔ▸ ϨδͳͷͰৗ࣌ॆిঢ়ଶ▸ ͳͷͰॆిʹ࠷ॳؾΛ͍ͬͯͳ͔ͬͨ▸ ిѹͳͷ͔Կͳͷ͔ݪҼڀ໌͍ͯ͠ͳ͍͕ॆి͞Εͳ͍έʔε͕ଟʑൃੜ▸ ΞϓϦέʔγϣϯଆͰόοςϦʔ͕গͳ͘ͳ͖ͬͯͨΒ(30%)ҙΛଅ͢ΞϥʔτΛදࣔ
ͱ͋ΔͷόοςϦʔਪҠ30%
༗ઢ
༗ઢͪΐͬͱͰॆిঢ়ଶͰͳ͘ͳΔͱɾɾɾ
༗ઢNICফ໓lo0 ←ϧʔϓόοΫen0 ← WiFien3 ← Ethernet
MultipeerConnectivityͷ
ଓੑ͕͋·Γྑ͘ͳ͍
MultipeerConnectivity▸ ͭͳ͕Δ࣌εοͱͭͳ͕Δ▸ ͭͳ͕ͬͯΔ࣌࣌ؒͷଓͰͳ͍▸ ͕ɺμϝʹͳΔͱେମͣͬͱμϝʹͳΔ▸ μϝʹͳ͍ͬͯΔ࣌ͰWebଓਖ਼ৗ▸ ͓ޓ͍ͷΞϓϦΛ࠶ىಈ͢Δͱେମͳ͓ΔʢTipsʣ▸ ·͊BonjourͰ͢͠
2015/122016201720182019औҾใ(P2C)HandsPOSΫϨδοτಋೖΫϨδοταΠϯཁٻ(P2C)ΫϨδοταΠϯը૾(C2P)όοςϦʔใ(C2P)ηϛηϧϑํࣜϨδ
ηϛηϧϑϨδ
ηϛηϧϑϨδ▸ εʔύʔʹΑ͋͘Δํࣜ▸ εΩϟϯͳͲैདྷͲ͓Γैۀһ͕࣮ࢪ▸ ࢧ͍෦Λઐ༻ʹ͓ͯ٬༷ࣗʹߦ͍ͬͯͨͩ͘
৽॓ళ8Fʹͯల։
ηϛηϧϑϨδ▸ εʔύʔʹΑ͋͘Δํࣜ▸ εΩϟϯͳͲैདྷͲ͓Γैۀһ͕࣮ࢪ▸ ࢧ͍෦Λઐ༻ʹ͓ͯ٬༷ࣗʹߦ͍ͬͯͨͩ͘- εΩϟϯetcऔҾσʔλૹ৴- ࢧ͍- ݱۚ- ΫϨδοτ- ిࢠϚωʔਫ਼ࢉػ(ෳ)
ηϛηϧϑϨδʹ͚ͯߴ৴པͷ11௨৴ํ͕ࣜඞཁ
ηϛηϧϑ༻ɹ৽௨৴ํࣜ▸ N:NͰͷ௨৴Λఆ▸ MultipeerConnectivity(ҎԼMC)ͰଓͰ͖ͳ͍࣌ͰWebଓੜ͖͍ͯͨ▸ ΦϯϥΠϯܦ༝ͳΒΠέϧ▸ MCεςʔτϑϧͳͷ͕͍͜͠ݪҼɾɾ͔ʁ▸ εςʔτϨε▸ ͱ͍͑ɺϨδͳͷͰΦϑϥΠϯͰͷՔಇߟྀ▸ ΦϯϥΠϯܦ༝ͷͷಈ࡞͠ͳ͍▸ ΦϑϥΠϯಈ࡞ͰMCྑཱ͍ͪҐஔ▸ Ͱ͋Εෳͷ௨৴ํࣜΛଋͶΔΑ͏ͳͷɾɾɾ
Swallow௨৴ϥΠϒϥϦ
Swallow▸ ֤௨৴pluginํࣜ▸ εςʔτϨε/ϑϧΘͳ͍▸ ಉҰ௨৴༰ૣ͍ͷউͪ▸ εςʔτϨεؚ·ΕΔͷͰड͚औΓΛද໌͢ΔAckΛฦ٫͢Δ
Swallow※͜ͷ߹ͷOfflineΦϑϥΠϯͰ௨৴Մೳ͔Ͳ͏͔MQTTLANʹαʔό͕͋ΔఆhttpΞϓϦʹwebαʔόػೳͷࡌํࣜ State OfflineMultipeer Full Yeshttp Less YesAWS SQS Less NoFirestore Auto NoRealmCloud Auto NoMQTT Full YesAWS IoT - No࠾༻✓✓
SwallowCoreMultipeerClienthttpAWS SQSCoreMultipeerClienthttpAWS SQSFCFSऔҾσʔλ
SwallowCoreMultipeerClienthttpAWS SQSCoreMultipeerClienthttpAWS SQSAck
Multipeer, AWS SQS rateઌணͨ͠Clientͷൺ●Multipeer●AWS SQS▸ Αͯ͘ʑ▸ ଟ͍ͷ9ׂ͕SQS▸ MultipeerϨΠςϯγߴɻଓͰ͖͍ͯΕͪ͜Β͕ؒҧ͍ͳ͘ઌணɻ
2015/122016201720182019औҾใ(P2C)HandsPOSΫϨδοτಋೖΫϨδοταΠϯཁٻ(P2C)ΫϨδοταΠϯը૾(C2P)όοςϦʔใ(C2P)SwallowʹΑΔN:N௨৴
·ͱΊ▸ MultipeerConnectivityॴḨBonjour▸ ͚ΕͲAPͳ͠ͰͷWiFiଓ(peer-to-peer Wi-Fi)͕Մೳ▸ ΦϯϥΠϯͰͷ௨৴Ͱิॿ▸ ͭͳ͕Δ࣌MutipeerConnectivityͷϨΠςϯγʔ͕͍▸ શମͰΈΔͱѹతʹΦϯϥΠϯ௨৴ͰٹΘΕ͍ͯΔ▸ 8݄಄ͷ౦ژϦʔδϣϯSQSͷো࣌؊Λྫྷͨ͠▸ FIFOΩϡʔʹ͍ͨ͠
͓ΘΓ