Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

r-plus
September 01, 2018

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

at iOSDC Japan 2018

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

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

r-plus

September 01, 2018
Tweet

More Decks by r-plus

Other Decks in Technology

Transcript

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

    View Slide

  2. UBJLJLPNBCB
    !S@QMVT

    )"/%4-"#*/$

    View Slide

  3. HandsPOS

    View Slide

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

    View Slide

  5. before
    after

    View Slide

  6. 2015/12
    2016
    2017
    2018
    2019
    HandsPOS

    View Slide

  7. 2015/12
    2016
    2017
    2018
    2019
    85%

    ಋೖ׬ྃ
    HandsPOS

    View Slide

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

    View Slide

  9. Multipeer
    connectivity
    P2P

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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


    ΫϨδοταΠϯཁٻ(P2C)
    ΫϨδοταΠϯը૾(C2P)

    View Slide

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


    ΫϨδοταΠϯཁٻ(P2C)
    ΫϨδοταΠϯը૾(C2P)
    όοςϦʔ৘ใ(C2P)

    View Slide

  15. όοςϦʔ
    ▸ ϨδͳͷͰৗ࣌ॆిঢ়ଶ
    ▸ ͳͷͰॆిʹ͸࠷ॳؾΛ࢖͍ͬͯͳ͔ͬͨ
    ▸ ిѹͳͷ͔Կͳͷ͔ݪҼڀ໌͍ͯ͠ͳ͍͕
    ॆి͞Εͳ͍έʔε͕ଟʑൃੜ
    ▸ ΞϓϦέʔγϣϯଆͰόοςϦʔ࢒͕গͳ
    ͘ͳ͖ͬͯͨΒ(30%)஫ҙΛଅ͢Ξϥʔτ
    Λදࣔ

    View Slide

  16. ͱ͋Δ೔ͷόοςϦʔਪҠ
    30%

    View Slide

  17. ༗ઢ

    View Slide

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

    View Slide

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

    View Slide

  20. MultipeerConnectivityͷ໰୊఺

    View Slide

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

    View Slide

  22. MultipeerConnectivity໰୊
    ▸ ͭͳ͕Δ࣌͸εοͱͭͳ͕Δ
    ▸ ͭͳ͕ͬͯΔ࣌͸௕࣌ؒͷ઀ଓͰ΋໰୊ͳ͍
    ▸ ͕ɺμϝʹͳΔͱେମͣͬͱμϝʹͳΔ
    ▸ μϝʹͳ͍ͬͯΔ࣌Ͱ΋Web઀ଓ͸ਖ਼ৗ
    ▸ ͓ޓ͍ͷΞϓϦΛ࠶ىಈ͢Δͱେମͳ͓ΔʢTipsʣ
    ▸ ·͊BonjourͰ͢͠

    View Slide

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


    ΫϨδοταΠϯཁٻ(P2C)
    ΫϨδοταΠϯը૾(C2P)
    όοςϦʔ৘ใ(C2P)

    View Slide

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


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

    View Slide

  25. ηϛηϧϑ
    Ϩδ

    View Slide

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

    View Slide

  27. ৽॓ళ8Fʹͯల։

    View Slide

  28. ηϛηϧϑϨδ
    ▸ εʔύʔʹΑ͋͘Δํࣜ
    ▸ ঎඼εΩϟϯͳͲ͸ैདྷͲ͓Γैۀһ͕࣮ࢪ
    ▸ ࢧ෷͍෦෼Λઐ༻୺຤ʹ͓ͯ٬༷ࣗ਎ʹߦ͍ͬͯͨͩ͘
    - ঎඼εΩϟϯetc
    औҾσʔλૹ৴
    - ࢧ෷͍
    - ݱۚ
    - ΫϨδοτ
    - ిࢠϚωʔ
    ਫ਼ࢉػ(ෳ਺)

    View Slide

  29. ηϛηϧϑϨδʹ޲͚ͯ
    ߴ৴པͷ11௨৴ํ͕ࣜඞཁ

    View Slide

  30. ηϛηϧϑ༻ɹ৽௨৴ํࣜ
    ▸ N:NͰͷ௨৴Λ૝ఆ
    ▸ MultipeerConnectivity(ҎԼMC)Ͱ઀ଓͰ͖ͳ͍࣌Ͱ΋Web઀ଓ͸ੜ͖͍ͯͨ
    ▸ ΦϯϥΠϯܦ༝ͳΒΠέϧ
    ▸ MC͸εςʔτϑϧͳͷ͕΍΍͍͜͠ݪҼɾɾ͔΋ʁ
    ▸ εςʔτϨε
    ▸ ͱ͸͍͑ɺϨδͳͷͰΦϑϥΠϯͰͷՔಇ΋ߟྀ
    ▸ ΦϯϥΠϯܦ༝ͷ΋ͷ͸ಈ࡞͠ͳ͍
    ▸ ΦϑϥΠϯಈ࡞Ͱ͸MC͸ྑཱ͍ͪҐஔ
    ▸ Ͱ͋Ε͹ෳ਺ͷ௨৴ํࣜΛଋͶΔΑ͏ͳ΋ͷɾɾɾ

    View Slide

  31. Swallow
    ௨৴ϥΠϒϥϦ

    View Slide

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

    View Slide

  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
    ࠾༻


    View Slide

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

    View Slide

  35. Swallow
    Core
    Multipeer
    Client
    http
    AWS SQS
    Core
    Multipeer
    Client
    http
    AWS SQS
    Ack

    View Slide

  36. Multipeer, AWS SQS rate
    ઌணͨ͠Clientͷൺ཰
    ●Multipeer
    ●AWS SQS
    ▸ Αͯ͘൒ʑ
    ▸ ଟ͍΋ͷ͸9ׂ͕SQS
    ▸ MultipeerϨΠςϯγ͸ߴ
    ଎ɻ઀ଓͰ͖͍ͯΕ͹͜
    ͪΒ͕ؒҧ͍ͳ͘ઌணɻ

    View Slide

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


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

    View Slide

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


    ΫϨδοταΠϯཁٻ(P2C)
    ΫϨδοταΠϯը૾(C2P)
    όοςϦʔ৘ใ(C2P)
    SwallowʹΑΔ
    N:N௨৴

    View Slide

  39. ·ͱΊ
    ▸ MultipeerConnectivity͸ॴḨBonjour
    ▸ ͚ΕͲAPͳ͠ͰͷWiFi઀ଓ(peer-to-peer Wi-Fi)͕Մೳ
    ▸ ΦϯϥΠϯͰͷ௨৴Ͱิॿ
    ▸ ͭͳ͕Δ࣌͸MutipeerConnectivityͷϨΠςϯγʔ͕଎͍
    ▸ શମͰΈΔͱѹ౗తʹΦϯϥΠϯ௨৴ͰٹΘΕ͍ͯΔ
    ▸ 8݄಄ͷ౦ژϦʔδϣϯSQSͷো֐࣌͸؊Λྫྷ΍ͨ͠
    ▸ FIFOΩϡʔʹ͍ͨ͠

    View Slide

  40. ͓ΘΓ

    View Slide