$30 off During Our Annual Pro Sale. View Details »

AWS AmplifyとmockmockでIoTバックエンドをスピーディに構築する

Y_uuu
October 07, 2020

AWS AmplifyとmockmockでIoTバックエンドをスピーディに構築する

Serverless Meetup Japan Virtual #7 での登壇資料です
https://serverless.connpass.com/event/188880/

Y_uuu

October 07, 2020
Tweet

More Decks by Y_uuu

Other Decks in Technology

Transcript

  1. AWS AmplifyͱmockmockͰ
    IoTόοΫΤϯυΛεϐʔσΟʹߏங͢Δ
    2020-10-07(Wed)
    Serverless Meetup Japan Virtual #8
    ઌਐٕज़෦໳*P5νʔϜΤϯδχΞ
    Ԭቌ༤ฏ
    1

    View Slide

  2. ࣗݾ঺հ
    Ԭቌ ༤ฏ
    Okazaki Yuhei
    ‣ ID
    - @yuuu @Y_uuu
    ‣ ࣗݾ঺հ
    wઌਐٕज़෦໳*P5νʔϜΤϯδχΞ
    w"84ɾ3BJMTΛ࢖ͬͨडୗɾαʔϏε։ൃΛ୲౰
    w෱Ԭࡏॅ ຊ೔΋෱Ԭ͔Β͓ૹΓ͍ͯ͠·͢

    ‣ Skill
    2
    image

    View Slide

  3. ຊ೔࿩͢͜ͱ
    3
    1.IoT x
    2.IoT x
    *P5όοΫΤϯυΛεϐʔσΟʹߏஙʂ

    View Slide

  4. *P5Y

    View Slide

  5. AWS Amplifyͱ͸
    5
    w ϞόΠϧ͓ΑͼϑϩϯτΤϯυͷ΢Σϒσϕϩούʔ͕
    "84Λར༻ͯ҆͠શͰεέʔϥϒϧͳϑϧελοΫΞϓϦέʔγϣϯΛ
    ߏஙͰ͖ΔΑ͏ʹ͢ΔπʔϧͱαʔϏεͷηοτ
    w ӈਤͷΑ͏ͳΞϓϦέʔγϣϯɾΠϯϑϥΛ
    ؆୯ʹߏஙͰ͖Δ

    View Slide

  6. AWS Amplifyͷྑ͍ͱ͜Ζ
    6
    w ϑϩϯτΤϯυΞϓϦέʔγϣϯΛ؆୯ʹߏஙͰ͖Δ
    w (SBQI2-εΩʔϚΛϕʔεʹόοΫΤϯυ͓Αͼ
    ϑϩϯτΤϯυͷΫϥΠΞϯτΛࣗಈੜ੒͢Δ
    w $*$%΋؆୯ʹηοτΞοϓͰ͖Δ (JU)VC࿈ܞՄ

    View Slide


  7. "NQMJGZͱ*P5ʹԿͷؔ܎͕ʜʁ

    View Slide

  8. ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ
    8
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ
    ෼ੳ ϑΟʔυόοΫ

    View Slide

  9. ྫ: ΦϑΟεͷԹ౓؂ࢹγεςϜ
    9
    ΦϑΟεʹ
    Թ౓ηϯαΛઃஔ
    (ηϯαͷ؅ཧ)
    Թ౓Λ
    ఆظతʹऩू
    Թ౓Λ
    σʔλϕʔεʹอଘ
    Թ౓Λάϥϑ౳Ͱ
    ՄࢹԽ
    Թ౓ͷมಈཁҼΛ
    ෼ੳ(ఱؾɺ࣌ؒɺ
    ਓ਺ͳͲ)
    ۭௐઃఆΛ
    ࠷దԽ͠
    ίετΛ࡟ݮ
    ෼ੳ ϑΟʔυόοΫ
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ

    View Slide

  10. ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ
    10
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ
    ଟ͘ͷΫϥΠΞϯτ͸
    ෼ੳɾϑΟʔυόοΫ͢ΔͨΊͷԼ஍͕੔͍ͬͯͳ͍
    ˠʮ·ͣ͸ऩूʙՄࢹԽʯͱ͍͏ґཔ͕ଟ͍
    ෼ੳ ϑΟʔυόοΫ

    View Slide

  11. ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ
    11
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ
    ؅ཧγεςϜΛࣗ࡞
    PS

    View Slide

  12. IoTγεςϜͱRDSͷ૬ੑ͕͋·Γྑ͘ͳ͍
    12
    w εέʔϧΞ΢τ͕ۤख
    w γεςϜͷ੒௕ʹͭΕσόΠεͷ୆਺͸૿͑Δ
    w $16ϝϞϦσΟεΫ*0ͷ͍ͣΕ͔͕ރׇ͢Δ
    w 71$ͷதʹ഑ஔ͞ΕΔͷͰ*P5$PSF͔ΒΞΫηεͮ͠Β͍
    w 3%41SPYZΛ࢖͏ͱͯ͠΋-BNCEB͕ඞཁ
    w 3%4Ͱ͸ͳ͘%ZOBNP%#͕σʔλετΞͷୈީิͱͳΔ

    View Slide

  13. ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ
    13
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ
    ؅ཧγεςϜΛࣗ࡞
    PS

    View Slide

  14. DynamoDBͷ஋ΛಡΈग़͢ͷ͕໘౗
    14
    w -BNCEBͷίʔυΛॻ͘ͷ͕໘౗
    w "1*(BUFXBZपΓͷઃఆ΋໘౗ ೝূ͕བྷΜͰ͘Δͱಛʹ

    View Slide

  15. AmplifyΛ࢖ͬͯGraphQL APIΛఆٛ
    15
    w 4DIFNBΛهड़͢Δ͚ͩͰ"1*ɾΫϥΠΞϯτίʔυ͕ࣗಈੜ੒͞ΕΔ
    w $PHOJUPೝূ΋؆୯ʹ࿈ܞͰ͖Δ

    View Slide

  16. ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ
    16
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ
    ؅ཧγεςϜΛࣗ࡞
    PS

    View Slide

  17. ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ
    17
    σόΠε؅ཧ σʔλऩू σʔλ஝ੵ ՄࢹԽ
    ؅ཧγεςϜΛࣗ࡞
    PS
    ΅͕͔͘Μ͕͍͖͑ͨ͞ΐ͏ͷαʔϏεߏ੒

    View Slide

  18. શମߏ੒
    18
    w *P5$PSFͷ"$5ϧʔϧΛ࢖ͬͯ
    "NQMJGZͷόοΫΤϯυ %ZOBNP%#
    ΁
    σʔλΛॻ͖ࠐΉ
    w "NQMJGZͰ%ZOBNP%#ʹอଘͨ͠σʔλΛ
    ͍͍ײ͡ʹՄࢹԽ͢ΔΞϓϦΛߏங

    View Slide


  19. "NQMJGZʹΑΔ*P5όοΫΤϯυ
    ߏங࣌ͷϙΠϯτ

    View Slide

  20. جຊతͳखॱ
    20
    DSFBUFOFYUBQQ ϓϩδΣΫτ࡞੒ɺݸਓతʹ͸XJUIUZQFTDSJQUFTMJOUKFTUָ͕

    BNQMJGZJOJU "NQMJGZͷॳظԽ

    BNQMJGZBEEIPTUJOH ϗεςΟϯάͷ௥Ճ

    BNQMJGZBEEBVUI ೝূͷ௥Ճ

    BNQMJGZBEEBQJ "1*ͷ௥Ճ

    ࢀরʮ/FYUKT5ZQF4DSJQU"84"NQMJGZ3FDPJMͰ5P%PϦετΛ࡞Δʯ
    ɹIUUQT[FOOEFWZ@VVVBSUJDMFTBCDCF

    View Slide

  21. Next.jsΛ࢖ͬͨΞϓϦͷCI/CD
    21
    ੩తϖʔδͷ&YQPSUઌͱσϓϩΠઌΛ߹ΘͤΔඞཁ͕͋Δ
    ࢀরʮ"84"NQMJGZͰIPTUJOHͨ͠/FYUKTͷ41"͕ʮ"DDFTT%FOJFEʯͱͳͬͨͱ͖ͷରॲ๏ʯ
    ɹIUUQTRJJUBDPN:@VVVJUFNTBGBDEDGBE

    View Slide

  22. εΩʔϚઃܭ
    22
    w TDIFNBHSBQIRMʹεΩʔϚ 㲈ςʔϒϧઃܭ
    Λهड़͢Δ
    w σόΠεͷ৘ใ΋%ZOBNP%#ʹอ࣋
    w !DPOOFDUJPOσΟϨΫςΟϒͰIBTNBOZͷؔ࿈ΛఆٛͰ͖Δ
    w !BVUIσΟϨΫςΟϒͰݖݶೝূ΋௥ՃͰ͖Δ

    View Slide

  23. εΩʔϚઃܭ
    23
    w !LFZͰ(4*Λఆٛ͠ɺύʔςΟγϣϯΩʔEFWJDF*E ιʔτΩʔUJNFTUBNQʹ
    w !DPOOFDUJPOͰCFMPOHTUPͷؔ࿈Λఆٛ

    View Slide

  24. ΧελϜΧςΰϦ
    24
    w "NQMJGZͰ͸ΧςΰϦ୯ҐͰػೳΛ௥Ճ͢Δ͜ͱ͕Ͱ͖Δ

    View Slide

  25. ΧελϜΧςΰϦ
    25
    w "1* (SBQI2-
    ɺೝূɺϗεςΟϯά͸
    "NQMJGZ$-*Λ࢖ͬͯ؆୯ʹ௥ՃͰ͖Δ
    w *P5$PSF͸ΧςΰϦͱͯ͠௥ՃͰ͖ͳ͍
    ˠΧελϜΧςΰϦΛ࡞੒

    View Slide

  26. ΧελϜΧςΰϦ
    26
    w $GOςϯϓϨʔτΛࣗ࡞͢Δ͜ͱͰɺଞΧςΰϦͱಉ༷ʹ؅ཧͰ͖Δ
    w BNQMJGZBEEJPUFOEQPJOUͱίϚϯυΛୟ͘͜ͱͰόοΫΤϯυͷػೳΛ௥Ճ

    View Slide

  27. IoT Core→DynamoDB
    27
    w *P5$PSFͰ͸ϧʔϧΛ࡞੒͠ɺ42-ͱΞΫγϣϯΛఆٛ͢Δ͜ͱͰ
    ଞαʔϏε΁ड৴σʔλΛड͚౉͢

    View Slide

  28. IoT Core→DynamoDB
    28
    w "NQMJGZͰੜ੒͞ΕΔ(SBQI2-ͷ࢓্༷ɺJE͸ඞਢͳͷͰ
    OFXVVJE
    ͱ͍͏'VODUJPOΛ࢖ͬͯੜ੒

    View Slide

  29. IoT Core→DynamoDB
    29
    w ಉ༷ʹDSFBUFE"UɺVQEBUFE"U΋ඞਢ
    w ࣌ࠁͷจࣈྻΛ͍͍ײ͡ʹੜ੒͢Δ'VODUJPO͕ແͦ͞͏ͳͷͰμϛʔͷ஋Λࢦఆ

    View Slide

  30. GraphQLͷݺͼग़͠
    30
    w "NQMJGZ$-*͕TDIFNBHSBQIRMʹରԠͨ͠ΫϥΠΞϯτΛࣗಈੜ੒ͯ͘͠ΕΔ
    w ݺͼग़͚ͩ͢ͰόοΫΤϯυ͔Β৘ใΛऔಘͰ͖Δ

    View Slide

  31. ग़དྷ্͕ͬͨը໘
    31
    w /FYUKT.BUFSJBM6*ͰσόΠεͷ$36%ը໘Λߏங
    w άϥϑ͸SFBDUDIBSUKTΛ࢖༻

    View Slide

  32. *P5Y

    View Slide

  33. IoTόοΫΤϯυͷಈ࡞֬ೝʹ͸σόΠε͕ඞཁ
    33
    w%FWJDF͕σʔλΛૹ৴͠ͳ͍ͱ
    %ZOBNP%#͕ۭͬΆͷ··

    View Slide

  34. σόΠεΛ༻ҙ͢Δͷ͸େม
    34
    wσόΠεࣗମͷௐୡʹ͕͔͔࣌ؒΔ
    wσόΠεͷ։ൃʹ͕͔͔࣌ؒΔ
    w୅ΘΓʹγϛϡϨʔλΛ࡞Δʁ
    wे෼ͳ͕࣌ؒऔΕͣยखؒʹͳΓ͕ͪ
    wࡉ͔͘৚݅Λม͑ΒΕΔ͔ʁ

    View Slide

  35. mockmockͱ͸
    35
    w *P5։ൃʹ͓͚ΔςετΛࢧԉ͢ΔαʔϏε
    w σόΠεͷ୅ΘΓʹԾ૝σόΠε NPDL
    ͕όοΫΤϯυ΁σʔλΛૹ৴͢Δ
    w NPDL͸࠷େສ୆·ͰىಈՄೳ
    Ͱݕࡧͯ͠Έ͍ͯͩ͘͞
    NPDLNPDL
    ৄࡉ͸

    View Slide

  36. mockmockΛ࢖͏ͱσόΠεແ͠Ͱಈ࡞֬ೝ͕Ͱ͖Δ
    36
    wNPDLNPDL͔ΒσʔλΛૹ৴͢Δ͜ͱͰ
    &&ͰγεςϜͷಈ࡞Λ֬ೝͰ͖Δ

    View Slide


  37. NPDLNPDLͰσʔλΛૹ৴͢Δखॱ

    View Slide

  38. ૹ৴ઌΛઃఆ͢Δ
    38
    w*P5$PSFͷΤϯυϙΠϯτʹ.255ͰσʔλΛૹ৴͢Δ
    w9ূ໌ॻʹରԠ

    View Slide

  39. ૹΔσʔλΛઃఆ͢Δ
    39
    wηϯαͷ஋Λ࠶ݱ͢ΔάϥϑΛඳ͘
    w࣮ࡍͷηϯαΒ͘͠ɺ஋ʹΏΒ͗Λ࣋ͨͤΔ͜ͱ΋Մೳ

    View Slide

  40. ૹ৴ઌͷTopic΍ૹ৴ස౓Λઃఆ
    40
    w5PQJD͸NPDLຖʹม͍͑ͨͷͰɺม਺ΛຒΊࠐΉ
    wૹ৴ස౓΋೚ҙʹઃఆՄೳ ࠓճ͸ඵݻఆ

    View Slide

  41. mockΛىಈ
    41
    wNPDLΛىಈ͢Δͱσʔλૹ৴͕։࢝
    wҰఆ࣌ؒܦաޙʹࣗಈఀࢭ

    View Slide

  42. άϥϑͷத਎͕දࣔ
    42
    wNPDLNPDLͰઃఆͨ͠άϥϑͱɺΞϓϦͰදࣔͨ͠άϥϑ͕Ұக
    ˠਖ਼͘͠ද͍ࣔͯ͠Δ͜ͱ͕֬ೝͰ͖ͨʂ

    View Slide

  43. mockmockΛར༻͢ΔϝϦοτ: IoTγεςϜͷෛՙࢼݧ͕Ͱ͖Δ
    43
    w༗ྉϓϥϯͰ࠷େສ୆·ͰNPDLΛ૿΍ͤΔͷͰෛՙࢼݧʹ΋࢖͑Δ
    w%ZOBNP%#ͷΩϟύγςΟෆ଍΍"VUP4DBMJOHͷಈ࡞Λӡ༻લʹݕग़Ͱ͖Δ

    View Slide

  44. mockmockΛར༻͢ΔϝϦοτ: ՄࢹԽํ๏ͷଥ౰ੑΛ֬ೝͰ͖Δ
    44
    wຊ෺ʹ͍ۙσʔλ͕ଘࡏ͢Δঢ়ଶͰը໘Λ֬ೝ͢Δͱɺؾ෇͖͕ಘΒΕ΍͍͢
    wͦ΋ͦ΋ંΕઢάϥϑͰྑ͍ͷ͔ʁ
    wଞͷηϯαͷ஋Λಉ͡ը໘Ͱ֬ೝͰ͖ΔͱΘ͔Γ΍͍͢ͷͰ͸ʁ

    View Slide


  45. "NQMJGZͱNPDLNPDLͰ
    *P5όοΫΤϯυΛεϐʔσΟʹߏஙͰ͖ͨʂ

    View Slide

  46. ·ͱΊ
    46
    w "NQMJGZΛ࢖͏͜ͱͰεϐʔσΟʹ*P5γεςϜΛߏஙͰ͖Δ
    w NPDLNPDLΛ࢖͏͜ͱͰεϐʔσΟʹςετͰ͖Δ
    w Έͳ͞·΋ͥͻ͓ࢼ͍ͩ͘͠͞ʂ
    *P5Y Y

    View Slide

  47. ͝ਗ਼ௌ͍͖ͨͩ͋Γ͕ͱ͏͍͟͝·ͨ͠
    Thank You
    We are Hiring !
    https://recruit.fusic.co.jp/

    View Slide


  48. "QQFOEJY

    View Slide

  49. FAQ: Amplifyͷ࢖͍ํΛֶͿͷʹ໾ཱͬͨίϯςϯπ
    49
    w EBCJUSFBDUOPUFT
    w ؆୯ͳ5P%PϦετΛ࡞ΔνϡʔτϦΞϧ
    w όʔδϣϯ͕গ͠ݹ͍͔΋
    w IUUQTHJUIVCDPNEBCJUSFBDUOPUFT
    w "NQMJGZ4/48PSLTIPQ
    w 5XJUUFSϥΠΫͳΞϓϦέʔγϣϯΛ3FBDU"NQMJGZͰߏங
    w ͪ͜Β΋όʔδϣϯ͕ݹ͘ͳΓͭͭ͋ΔͷͰߋ৽ʹظ଴
    w IUUQTBNQMJGZTOTXPSLTIPQBXTKB
    w "NQMJGZ'SBNFXPSL%PDVNFOUBUJPO
    w ެࣜυΩϡϝϯτɺࠔͬͨΒ͜͜ΛಡΉ
    w IUUQTEPDTBNQMJGZBXT

    View Slide

  50. FAQ: Next.jsΛ࢖ͬͨײ૝
    50
    wࠓճ͸3FBDUͷϑϨʔϜϫʔΫͱ͍͏Ґஔ͚ͮͰ࢖͍ͬͯΔ
    wSFBDUSPVUFSͷಋೖ΍ઃఆΛ؆ུԽͰ͖Δ
    w443ʹ΋ରԠ ࠓճ͸࢖͍ͬͯͳ͍

    w".1ରԠ ࠓճ͸࢖͍ͬͯͳ͍

    w18"ରԠ ࠓճ͸࢖͍ͬͯͳ͍

    w3FBDU͚ͩͰ։ൃ͢ΔΑΓ΋εϐʔσΟ
    wग़དྷ্͕ͬͨΞϓϦέʔγϣϯ΋αΫαΫಈ͘

    View Slide

  51. FAQ: Firebaseͱൺ΂ͯͲ͏ʁ
    51
    wϑϩϯτΤϯυϞόΠϧΞϓϦΛ࡞Δͱ͍͏ҙຯͰ͸
    'JSFCBTF΋༗ྗީิ
    wҰํɺ"84*P5$PSFʹ૬౰͢ΔαʔϏε΍ػೳ͕ແ͍ҹ৅
    w($1*P5$PSF͸ศརͰ͸͋Δ͕
    'JSFTUPSFͱ࿈ܞ͢Δʹ͸
    $MPVE'VODUJPOT͕ඞཁͦ͏

    View Slide

  52. FAQ: ElasticsearchΛ࢖Θͳ͍ཧ༝
    52
    wऩू஋ͷՄࢹԽ͚ͩΛ࠷଎Ͱ࣮ݱ͢ΔͳΒ&MBTUJDTFBSDI͕࠷ద
    wݸผΧελϚΠζ͕೉͍͠
    wσόΠε؅ཧͷ࢓૊Έͷ௥Ճ͕೉͍͠
    wσβΠϯͷΧελϚΠζ͕೉͍͠
    wىಈ࣌ؒʹൺྫͯ͠ίετ͕͔͔Δ

    View Slide

  53. FAQ: Amazon Timestream͸Ͳ͏ͳͷ͔ʁ
    53
    wࢲ΋ؾʹͳΓ·͆͢
    w*P5$PSFˠ5JNFTUSFBNͷॻ͖ࠐΈ͸Մೳ
    w"QQ4ZODͱͷ࿈ܞ͕͓ͦΒ͘·ͩ ࿈ܞͯ͘͠ΕΔͱ͍͍ͳʜ

    View Slide

  54. FAQ: mockͷ୆਺Λ૿΍͢৔߹ɺઃఆ͕େมͰ͸ͳ͍͔ʁ
    54
    w$47ΠϯϙʔτͰҰׅઃఆՄೳ

    View Slide

  55. mockmock: ͜Μͳσʔλ΋ੜ੒Ͱ͖·͢ - όέοτόϦϡʔδΣωϨʔλ
    55
    w͍͔ͭ͘ͷσʔληοτΛ༻ҙͯ͠ɺͦͷ͏ͪͷҰͭΛબ୒
    wॱ൪ͷࢦఆ΍ϥϯμϜબ୒΋Մೳ

    View Slide

  56. mockmock: ͜Μͳσʔλ΋ੜ੒Ͱ͖·͢ - ҐஔδΣωϨʔλ
    56
    w஍ਤ্ͰҠಈϧʔτΛࢦఆ͠ɺҠಈମͷ࠲ඪ৘ใΛૹ৴

    View Slide