東急ハンズの P2Pレジ間通信2018

Ff2906914a6a1ebace556483377cddf2?s=47 r-plus
September 01, 2018

東急ハンズの P2Pレジ間通信2018

at iOSDC Japan 2018

東急ハンズのレジは内製開発のiPadアプリで動いています。
そんなレジ用アプリはアプリ間で様々な情報を交換しています。

レジ間を飛び交う通信内容や通信方式の現在に至るまでの変遷を紹介します。

Ff2906914a6a1ebace556483377cddf2?s=128

r-plus

September 01, 2018
Tweet

Transcript

  1. ౦ٸϋϯζͷ P2PϨδؒ௨৴2018 9/1 iOSDC Japan 2018 taiki komaba(@r_plus)

  2. UBJLJLPNBCB !S@QMVT )"/%4-"#*/$

  3. HandsPOS

  4. ▸ ౦ٸϋϯζͷϨδͱͯࣗࣾ͠։ൃ͍ͯ͠ΔiPadΞϓϦ ▸ ैۀһૢ࡞༻ͱΧελϚʔ༻ͷ2Ϟʔυ ▸ 1୆ͷϨδʹ͖ͭ1ηοτ ▸ ͜ͷैۀһଆͱΧελϚʔଆͰP2P௨৴ HandsPOS

  5. before after

  6. 2015/12 2016 2017 2018 2019 HandsPOS

  7. 2015/12 2016 2017 2018 2019 85% ಋೖ׬ྃ HandsPOS

  8. 2015/12 2016 2017 2018 2019 2020 ফඅ૿੫ HandsPOS

  9. Multipeer connectivity P2P

  10. Multipeer Connectivity ΧελϚʔଆ(C) ैۀһଆ(P) .VMUJQFFS $POOFDUJWJUZ 0001Ϩδ

  11. ΧελϚʔଆ(C) ैۀһଆ(P) .VMUJQFFS $POOFDUJWJUZ 0001Ϩδ Multipeer Connectivity - औҾ৘ใ (঎඼৘ใɺׂҾ৘ใɺࢧ෷͍৘ใetc)

    ૹ৴৘ใ
  12. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS

  13. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS Ϋ Ϩ δ

    ο τ ಋ ೖ ΫϨδοταΠϯཁٻ(P2C) ΫϨδοταΠϯը૾(C2P)
  14. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS Ϋ Ϩ δ

    ο τ ಋ ೖ ΫϨδοταΠϯཁٻ(P2C) ΫϨδοταΠϯը૾(C2P) όοςϦʔ৘ใ(C2P)
  15. όοςϦʔ ▸ ϨδͳͷͰৗ࣌ॆిঢ়ଶ ▸ ͳͷͰॆిʹ͸࠷ॳؾΛ࢖͍ͬͯͳ͔ͬͨ ▸ ిѹͳͷ͔Կͳͷ͔ݪҼڀ໌͍ͯ͠ͳ͍͕ ॆి͞Εͳ͍έʔε͕ଟʑൃੜ ▸ ΞϓϦέʔγϣϯଆͰόοςϦʔ࢒͕গͳ

    ͘ͳ͖ͬͯͨΒ(30%)஫ҙΛଅ͢Ξϥʔτ Λදࣔ
  16. ͱ͋Δ೔ͷόοςϦʔਪҠ 30%

  17. ༗ઢ

  18. ༗ઢ ͪΐͬͱͰ΋ॆిঢ়ଶ Ͱ͸ͳ͘ͳΔͱɾɾɾ

  19. ༗ઢ NICফ໓ lo0 ←ϧʔϓόοΫ en0 ← WiFi en3 ← Ethernet

  20. MultipeerConnectivityͷ໰୊఺

  21. ઀ଓੑ͕ ͋·Γྑ͘ͳ͍

  22. MultipeerConnectivity໰୊ ▸ ͭͳ͕Δ࣌͸εοͱͭͳ͕Δ ▸ ͭͳ͕ͬͯΔ࣌͸௕࣌ؒͷ઀ଓͰ΋໰୊ͳ͍ ▸ ͕ɺμϝʹͳΔͱେମͣͬͱμϝʹͳΔ ▸ μϝʹͳ͍ͬͯΔ࣌Ͱ΋Web઀ଓ͸ਖ਼ৗ ▸

    ͓ޓ͍ͷΞϓϦΛ࠶ىಈ͢Δͱେମͳ͓ΔʢTipsʣ ▸ ·͊BonjourͰ͢͠
  23. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS Ϋ Ϩ δ

    ο τ ಋ ೖ ΫϨδοταΠϯཁٻ(P2C) ΫϨδοταΠϯը૾(C2P) όοςϦʔ৘ใ(C2P)
  24. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS Ϋ Ϩ δ

    ο τ ಋ ೖ ΫϨδοταΠϯཁٻ(P2C) ΫϨδοταΠϯը૾(C2P) όοςϦʔ৘ใ(C2P) ηϛηϧϑํࣜϨδ
  25. ηϛηϧϑ Ϩδ

  26. ηϛηϧϑϨδ ▸ εʔύʔʹΑ͋͘Δํࣜ ▸ ঎඼εΩϟϯͳͲ͸ैདྷͲ͓Γैۀһ͕࣮ࢪ ▸ ࢧ෷͍෦෼Λઐ༻୺຤ʹ͓ͯ٬༷ࣗ਎ʹߦ͍ͬͯͨͩ͘

  27. ৽॓ళ8Fʹͯల։

  28. ηϛηϧϑϨδ ▸ εʔύʔʹΑ͋͘Δํࣜ ▸ ঎඼εΩϟϯͳͲ͸ैདྷͲ͓Γैۀһ͕࣮ࢪ ▸ ࢧ෷͍෦෼Λઐ༻୺຤ʹ͓ͯ٬༷ࣗ਎ʹߦ͍ͬͯͨͩ͘ - ঎඼εΩϟϯetc औҾσʔλૹ৴

    - ࢧ෷͍ - ݱۚ - ΫϨδοτ - ిࢠϚωʔ ਫ਼ࢉػ(ෳ਺)
  29. ηϛηϧϑϨδʹ޲͚ͯ ߴ৴པͷ11௨৴ํ͕ࣜඞཁ

  30. ηϛηϧϑ༻ɹ৽௨৴ํࣜ ▸ N:NͰͷ௨৴Λ૝ఆ ▸ MultipeerConnectivity(ҎԼMC)Ͱ઀ଓͰ͖ͳ͍࣌Ͱ΋Web઀ଓ͸ੜ͖͍ͯͨ ▸ ΦϯϥΠϯܦ༝ͳΒΠέϧ ▸ MC͸εςʔτϑϧͳͷ͕΍΍͍͜͠ݪҼɾɾ͔΋ʁ ▸

    εςʔτϨε ▸ ͱ͸͍͑ɺϨδͳͷͰΦϑϥΠϯͰͷՔಇ΋ߟྀ ▸ ΦϯϥΠϯܦ༝ͷ΋ͷ͸ಈ࡞͠ͳ͍ ▸ ΦϑϥΠϯಈ࡞Ͱ͸MC͸ྑཱ͍ͪҐஔ ▸ Ͱ͋Ε͹ෳ਺ͷ௨৴ํࣜΛଋͶΔΑ͏ͳ΋ͷɾɾɾ
  31. Swallow ௨৴ϥΠϒϥϦ

  32. Swallow ▸ ֤௨৴͸pluginํࣜ ▸ εςʔτϨε/ϑϧ͸໰Θͳ͍ ▸ ಉҰ௨৴಺༰͸ૣ͍΋ͷউͪ ▸ εςʔτϨε΋ؚ·ΕΔͷͰड͚औΓΛද໌͢ΔAckΛฦ ٫͢Δ

  33. Swallow ※͜ͷ৔߹ͷOffline͸ΦϑϥΠϯͰ௨৴Մೳ͔Ͳ͏͔ MQTT͸LANʹαʔό͕͋Δ૝ఆ http͸ΞϓϦ಺ʹwebαʔόػೳͷ౥ࡌ ํࣜ State Offline Multipeer Full Yes

    http Less Yes AWS SQS Less No Firestore Auto No RealmCloud Auto No MQTT Full Yes AWS IoT - No ࠾༻ ✓ ✓
  34. Swallow Core Multipeer Client http AWS SQS Core Multipeer Client

    http AWS SQS FCFS औҾ σʔλ
  35. Swallow Core Multipeer Client http AWS SQS Core Multipeer Client

    http AWS SQS Ack
  36. Multipeer, AWS SQS rate ઌணͨ͠Clientͷൺ཰ •Multipeer •AWS SQS ▸ Αͯ͘൒ʑ

    ▸ ଟ͍΋ͷ͸9ׂ͕SQS ▸ MultipeerϨΠςϯγ͸ߴ ଎ɻ઀ଓͰ͖͍ͯΕ͹͜ ͪΒ͕ؒҧ͍ͳ͘ઌணɻ
  37. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS Ϋ Ϩ δ

    ο τ ಋ ೖ ΫϨδοταΠϯཁٻ(P2C) ΫϨδοταΠϯը૾(C2P) όοςϦʔ৘ใ(C2P) ηϛηϧϑํࣜϨδ
  38. 2015/12 2016 2017 2018 2019 औҾ৘ใ(P2C) HandsPOS Ϋ Ϩ δ

    ο τ ಋ ೖ ΫϨδοταΠϯཁٻ(P2C) ΫϨδοταΠϯը૾(C2P) όοςϦʔ৘ใ(C2P) SwallowʹΑΔ N:N௨৴
  39. ·ͱΊ ▸ MultipeerConnectivity͸ॴḨBonjour ▸ ͚ΕͲAPͳ͠ͰͷWiFi઀ଓ(peer-to-peer Wi-Fi)͕Մೳ ▸ ΦϯϥΠϯͰͷ௨৴Ͱิॿ ▸ ͭͳ͕Δ࣌͸MutipeerConnectivityͷϨΠςϯγʔ͕଎͍

    ▸ શମͰΈΔͱѹ౗తʹΦϯϥΠϯ௨৴ͰٹΘΕ͍ͯΔ ▸ 8݄಄ͷ౦ژϦʔδϣϯSQSͷো֐࣌͸؊Λྫྷ΍ͨ͠ ▸ FIFOΩϡʔʹ͍ͨ͠
  40. ͓ΘΓ