Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS AmplifyとmockmockでIoTバックエンドをスピーディに構築する
Search
Y_uuu
October 07, 2020
Technology
2
1k
AWS AmplifyとmockmockでIoTバックエンドをスピーディに構築する
Serverless Meetup Japan Virtual #7 での登壇資料です
https://serverless.connpass.com/event/188880/
Y_uuu
October 07, 2020
Tweet
Share
More Decks by Y_uuu
See All by Y_uuu
Porting PicoRuby to Another Microcontroller: ESP32
yuuu
4
770
RubyKaigi 2025でプロポーザルが初めて採択されるまでにやったこと
yuuu
1
490
地方企業の強みを活かす!AWSを活用したIoTシステムの開発事例とその裏側
yuuu
0
97
あの重機は今どこにある?- 重機管理IoTプロダクトのバックエンドをAWSで構築した話 -
yuuu
0
960
mruby-esp32におけるペリフェラルAPIの実装検討
yuuu
1
760
育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
yuuu
4
4.7k
committee-railsとOpenAPI Generatorでスキーマ駆動なAPI開発をする
yuuu
0
910
mrubyでマイコンの世界に足を踏み入れる
yuuu
2
2k
mruby on IoT devices.
yuuu
4
2.5k
Other Decks in Technology
See All in Technology
LLM拡張解体新書/llm-extension-deep-dive
oracle4engineer
PRO
23
6.3k
“日本一のM&A企業”を支える、少人数SREの効率化戦略 / SRE NEXT 2025
genda
1
270
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
18k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.7k
AIでテストプロセス自動化に挑戦する
sakatakazunori
1
530
AI エージェントと考え直すデータ基盤
na0
20
7.9k
Transformerを用いたアイテム間の 相互影響を考慮したレコメンドリスト生成
recruitengineers
PRO
2
440
How to Quickly Call American Airlines®️ U.S. Customer Care : Full Guide
flyaahelpguide
0
240
CDKコード品質UP!ナイスな自作コンストラクタを作るための便利インターフェース
harukasakihara
2
240
ClaudeCode_vs_GeminiCLI_Terraformで比較してみた
tkikuchi
1
1.2k
TLSから見るSREの未来
atpons
2
310
第64回コンピュータビジョン勉強会「The PanAf-FGBG Dataset: Understanding the Impact of Backgrounds in Wildlife Behaviour Recognition」
x_ttyszk
0
240
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Code Review Best Practice
trishagee
69
19k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
The Cult of Friendly URLs
andyhume
79
6.5k
The Language of Interfaces
destraynor
158
25k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Faster Mobile Websites
deanohume
308
31k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Bash Introduction
62gerente
613
210k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
AWS AmplifyͱmockmockͰ IoTόοΫΤϯυΛεϐʔσΟʹߏங͢Δ 2020-10-07(Wed) Serverless Meetup Japan Virtual #8 ઌਐٕज़෦*P5νʔϜΤϯδχΞ
Ԭቌ༤ฏ 1
ࣗݾհ Ԭቌ ༤ฏ Okazaki Yuhei ‣ ID - @yuuu @Y_uuu
‣ ࣗݾհ wઌਐٕज़෦*P5νʔϜΤϯδχΞ w"84ɾ3BJMTΛͬͨडୗɾαʔϏε։ൃΛ୲ wԬࡏॅ ຊԬ͔Β͓ૹΓ͍ͯ͠·͢ ‣ Skill 2 image
ຊ͢͜ͱ 3 1.IoT x 2.IoT x *P5όοΫΤϯυΛεϐʔσΟʹߏஙʂ
*P5Y
AWS Amplifyͱ 5 w ϞόΠϧ͓ΑͼϑϩϯτΤϯυͷΣϒσϕϩούʔ͕ "84Λར༻ͯ҆͠શͰεέʔϥϒϧͳϑϧελοΫΞϓϦέʔγϣϯΛ ߏஙͰ͖ΔΑ͏ʹ͢ΔπʔϧͱαʔϏεͷηοτ w ӈਤͷΑ͏ͳΞϓϦέʔγϣϯɾΠϯϑϥΛ ؆୯ʹߏஙͰ͖Δ
AWS Amplifyͷྑ͍ͱ͜Ζ 6 w ϑϩϯτΤϯυΞϓϦέʔγϣϯΛ؆୯ʹߏஙͰ͖Δ w (SBQI2-εΩʔϚΛϕʔεʹόοΫΤϯυ͓Αͼ ϑϩϯτΤϯυͷΫϥΠΞϯτΛࣗಈੜ͢Δ w $*$%؆୯ʹηοτΞοϓͰ͖Δ
(JU)VC࿈ܞՄ
"NQMJGZͱ*P5ʹԿͷ͕ؔʜʁ
ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ 8 σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ ੳ ϑΟʔυόοΫ
ྫ: ΦϑΟεͷԹࢹγεςϜ 9 ΦϑΟεʹ ԹηϯαΛઃஔ (ηϯαͷཧ) ԹΛ ఆظతʹऩू ԹΛ σʔλϕʔεʹอଘ
ԹΛάϥϑͰ ՄࢹԽ ԹͷมಈཁҼΛ ੳ(ఱؾɺ࣌ؒɺ ਓͳͲ) ۭௐઃఆΛ ࠷దԽ͠ ίετΛݮ ੳ ϑΟʔυόοΫ σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ
ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ 10 σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ ଟ͘ͷΫϥΠΞϯτ ੳɾϑΟʔυόοΫ͢ΔͨΊͷԼ͕͍ͬͯͳ͍ ˠʮ·ͣऩूʙՄࢹԽʯͱ͍͏ґཔ͕ଟ͍ ੳ
ϑΟʔυόοΫ
ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ 11 σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ ཧγεςϜΛࣗ࡞ PS ❓
IoTγεςϜͱRDSͷ૬ੑ͕͋·Γྑ͘ͳ͍ 12 w εέʔϧΞτ͕ۤख w γεςϜͷʹͭΕσόΠεͷ૿͑Δ w $16ϝϞϦσΟεΫ*0ͷ͍ͣΕ͔͕ރׇ͢Δ w 71$ͷதʹஔ͞ΕΔͷͰ*P5$PSF͔ΒΞΫηεͮ͠Β͍
w 3%41SPYZΛ͏ͱͯ͠-BNCEB͕ඞཁ w 3%4Ͱͳ͘%ZOBNP%#͕σʔλετΞͷୈީิͱͳΔ
ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ 13 σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ ཧγεςϜΛࣗ࡞ PS ❓
DynamoDBͷΛಡΈग़͢ͷ͕໘ 14 w -BNCEBͷίʔυΛॻ͘ͷ͕໘ w "1*(BUFXBZपΓͷઃఆ໘ ೝূ͕བྷΜͰ͘Δͱಛʹ
AmplifyΛͬͯGraphQL APIΛఆٛ 15 w 4DIFNBΛهड़͢Δ͚ͩͰ"1*ɾΫϥΠΞϯτίʔυ͕ࣗಈੜ͞ΕΔ w $PHOJUPೝূ؆୯ʹ࿈ܞͰ͖Δ
ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ 16 σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ ཧγεςϜΛࣗ࡞ PS
ݱࡏIoTγεςϜʹٻΊΒΕ͍ͯΔ͜ͱ 17 σόΠεཧ σʔλऩू σʔλੵ ՄࢹԽ ཧγεςϜΛࣗ࡞ PS ΅͕͔͘Μ͕͍͖͑ͨ͞ΐ͏ͷαʔϏεߏ
શମߏ 18 w *P5$PSFͷ"$5ϧʔϧΛͬͯ "NQMJGZͷόοΫΤϯυ %ZOBNP%# σʔλΛॻ͖ࠐΉ w "NQMJGZͰ%ZOBNP%#ʹอଘͨ͠σʔλΛ
͍͍ײ͡ʹՄࢹԽ͢ΔΞϓϦΛߏங
"NQMJGZʹΑΔ*P5όοΫΤϯυ ߏங࣌ͷϙΠϯτ
جຊతͳखॱ 20 DSFBUFOFYUBQQ ϓϩδΣΫτ࡞ɺݸਓతʹXJUIUZQFTDSJQUFTMJOUKFTUָ͕ BNQMJGZJOJU "NQMJGZͷॳظԽ
BNQMJGZBEEIPTUJOH ϗεςΟϯάͷՃ BNQMJGZBEEBVUI ೝূͷՃ BNQMJGZBEEBQJ "1*ͷՃ ࢀরʮ/FYUKT 5ZQF4DSJQU "84"NQMJGZ 3FDPJMͰ5P%PϦετΛ࡞Δʯ ɹIUUQT[FOOEFWZ@VVVBSUJDMFTBCDCF
Next.jsΛͬͨΞϓϦͷCI/CD 21 ੩తϖʔδͷ&YQPSUઌͱσϓϩΠઌΛ߹ΘͤΔඞཁ͕͋Δ ࢀরʮ"84"NQMJGZͰIPTUJOHͨ͠/FYUKTͷ41"͕ʮ"DDFTT%FOJFEʯͱͳͬͨͱ͖ͷରॲ๏ʯ ɹIUUQTRJJUBDPN:@VVVJUFNTBGBDEDGBE
εΩʔϚઃܭ 22 w TDIFNBHSBQIRMʹεΩʔϚ 㲈ςʔϒϧઃܭ Λهड़͢Δ w σόΠεͷใ%ZOBNP%#ʹอ࣋ w !DPOOFDUJPOσΟϨΫςΟϒͰIBTNBOZͷؔ࿈ΛఆٛͰ͖Δ
w !BVUIσΟϨΫςΟϒͰݖݶೝূՃͰ͖Δ
εΩʔϚઃܭ 23 w !LFZͰ(4*Λఆٛ͠ɺύʔςΟγϣϯΩʔEFWJDF*E ιʔτΩʔUJNFTUBNQʹ w !DPOOFDUJPOͰCFMPOHTUPͷؔ࿈Λఆٛ
ΧελϜΧςΰϦ 24 w "NQMJGZͰΧςΰϦ୯ҐͰػೳΛՃ͢Δ͜ͱ͕Ͱ͖Δ
ΧελϜΧςΰϦ 25 w "1* (SBQI2- ɺೝূɺϗεςΟϯά "NQMJGZ$-*Λͬͯ؆୯ʹՃͰ͖Δ w *P5$PSFΧςΰϦͱͯ͠ՃͰ͖ͳ͍ ˠΧελϜΧςΰϦΛ࡞
ΧελϜΧςΰϦ 26 w $GOςϯϓϨʔτΛࣗ࡞͢Δ͜ͱͰɺଞΧςΰϦͱಉ༷ʹཧͰ͖Δ w BNQMJGZBEEJPUFOEQPJOUͱίϚϯυΛୟ͘͜ͱͰόοΫΤϯυͷػೳΛՃ
IoT Core→DynamoDB 27 w *P5$PSFͰϧʔϧΛ࡞͠ɺ42-ͱΞΫγϣϯΛఆٛ͢Δ͜ͱͰ ଞαʔϏεड৴σʔλΛड͚͢
IoT Core→DynamoDB 28 w "NQMJGZͰੜ͞ΕΔ(SBQI2-ͷ্༷ɺJEඞਢͳͷͰ OFXVVJE ͱ͍͏'VODUJPOΛͬͯੜ
IoT Core→DynamoDB 29 w ಉ༷ʹDSFBUFE"UɺVQEBUFE"Uඞਢ w ࣌ࠁͷจࣈྻΛ͍͍ײ͡ʹੜ͢Δ'VODUJPO͕ແͦ͞͏ͳͷͰμϛʔͷΛࢦఆ
GraphQLͷݺͼग़͠ 30 w "NQMJGZ$-*͕TDIFNBHSBQIRMʹରԠͨ͠ΫϥΠΞϯτΛࣗಈੜͯ͘͠ΕΔ w ݺͼग़͚ͩ͢ͰόοΫΤϯυ͔ΒใΛऔಘͰ͖Δ
ग़དྷ্͕ͬͨը໘ 31 w /FYUKT .BUFSJBM6*ͰσόΠεͷ$36%ը໘Λߏங w άϥϑSFBDUDIBSUKTΛ༻
*P5Y
IoTόοΫΤϯυͷಈ࡞֬ೝʹσόΠε͕ඞཁ 33 w%FWJDF͕σʔλΛૹ৴͠ͳ͍ͱ %ZOBNP%#͕ۭͬΆͷ··
σόΠεΛ༻ҙ͢Δͷେม 34 wσόΠεࣗମͷௐୡʹ͕͔͔࣌ؒΔ wσόΠεͷ։ൃʹ͕͔͔࣌ؒΔ wΘΓʹγϛϡϨʔλΛ࡞Δʁ wेͳ͕࣌ؒऔΕͣยखؒʹͳΓ͕ͪ wࡉ͔݅͘Λม͑ΒΕΔ͔ʁ
mockmockͱ 35 w *P5։ൃʹ͓͚ΔςετΛࢧԉ͢ΔαʔϏε w σόΠεͷΘΓʹԾσόΠε NPDL ͕όοΫΤϯυσʔλΛૹ৴͢Δ w NPDL࠷େສ·ͰىಈՄೳ
Ͱݕࡧͯ͠Έ͍ͯͩ͘͞ NPDLNPDL ৄࡉ
mockmockΛ͏ͱσόΠεແ͠Ͱಈ࡞֬ೝ͕Ͱ͖Δ 36 wNPDLNPDL͔ΒσʔλΛૹ৴͢Δ͜ͱͰ &&ͰγεςϜͷಈ࡞Λ֬ೝͰ͖Δ
NPDLNPDLͰσʔλΛૹ৴͢Δखॱ
ૹ৴ઌΛઃఆ͢Δ 38 w*P5$PSFͷΤϯυϙΠϯτʹ.255ͰσʔλΛૹ৴͢Δ w9ূ໌ॻʹରԠ
ૹΔσʔλΛઃఆ͢Δ 39 wηϯαͷΛ࠶ݱ͢ΔάϥϑΛඳ͘ w࣮ࡍͷηϯαΒ͘͠ɺʹΏΒ͗Λ࣋ͨͤΔ͜ͱՄೳ
ૹ৴ઌͷTopicૹ৴සΛઃఆ 40 w5PQJDNPDLຖʹม͍͑ͨͷͰɺมΛຒΊࠐΉ wૹ৴සҙʹઃఆՄೳ ࠓճඵݻఆ
mockΛىಈ 41 wNPDLΛىಈ͢Δͱσʔλૹ৴͕։࢝ wҰఆ࣌ؒܦաޙʹࣗಈఀࢭ
άϥϑͷத͕දࣔ 42 wNPDLNPDLͰઃఆͨ͠άϥϑͱɺΞϓϦͰදࣔͨ͠άϥϑ͕Ұக ˠਖ਼͘͠ද͍ࣔͯ͠Δ͜ͱ͕֬ೝͰ͖ͨʂ
mockmockΛར༻͢ΔϝϦοτ: IoTγεςϜͷෛՙࢼݧ͕Ͱ͖Δ 43 w༗ྉϓϥϯͰ࠷େສ·ͰNPDLΛ૿ͤΔͷͰෛՙࢼݧʹ͑Δ w%ZOBNP%#ͷΩϟύγςΟෆ"VUP4DBMJOHͷಈ࡞Λӡ༻લʹݕग़Ͱ͖Δ
mockmockΛར༻͢ΔϝϦοτ: ՄࢹԽํ๏ͷଥੑΛ֬ೝͰ͖Δ 44 wຊʹ͍ۙσʔλ͕ଘࡏ͢Δঢ়ଶͰը໘Λ֬ೝ͢Δͱɺؾ͖͕ಘΒΕ͍͢ wͦͦંΕઢάϥϑͰྑ͍ͷ͔ʁ wଞͷηϯαͷΛಉ͡ը໘Ͱ֬ೝͰ͖ΔͱΘ͔Γ͍͢ͷͰʁ
"NQMJGZͱNPDLNPDLͰ *P5όοΫΤϯυΛεϐʔσΟʹߏஙͰ͖ͨʂ
·ͱΊ 46 w "NQMJGZΛ͏͜ͱͰεϐʔσΟʹ*P5γεςϜΛߏஙͰ͖Δ w NPDLNPDLΛ͏͜ͱͰεϐʔσΟʹςετͰ͖Δ w Έͳ͞·ͥͻ͓ࢼ͍ͩ͘͠͞ʂ *P5Y Y
͝ਗ਼ௌ͍͖ͨͩ͋Γ͕ͱ͏͍͟͝·ͨ͠ Thank You We are Hiring ! https://recruit.fusic.co.jp/
⚡ "QQFOEJY
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
FAQ: Next.jsΛͬͨײ 50 wࠓճ3FBDUͷϑϨʔϜϫʔΫͱ͍͏Ґஔ͚ͮͰ͍ͬͯΔ wSFBDUSPVUFSͷಋೖઃఆΛ؆ུԽͰ͖Δ w443ʹରԠ ࠓճ͍ͬͯͳ͍ w".1ରԠ ࠓճ͍ͬͯͳ͍
w18"ରԠ ࠓճ͍ͬͯͳ͍ w3FBDU͚ͩͰ։ൃ͢ΔΑΓεϐʔσΟ wग़དྷ্͕ͬͨΞϓϦέʔγϣϯαΫαΫಈ͘
FAQ: FirebaseͱൺͯͲ͏ʁ 51 wϑϩϯτΤϯυϞόΠϧΞϓϦΛ࡞Δͱ͍͏ҙຯͰ 'JSFCBTF༗ྗީิ wҰํɺ"84*P5$PSFʹ૬͢ΔαʔϏεػೳ͕ແ͍ҹ w($1*P5$PSFศརͰ͋Δ͕ 'JSFTUPSFͱ࿈ܞ͢Δʹ $MPVE'VODUJPOT͕ඞཁͦ͏
FAQ: ElasticsearchΛΘͳ͍ཧ༝ 52 wऩूͷՄࢹԽ͚ͩΛ࠷Ͱ࣮ݱ͢ΔͳΒ&MBTUJDTFBSDI͕࠷ద wݸผΧελϚΠζ͕͍͠ wσόΠεཧͷΈͷՃ͕͍͠ wσβΠϯͷΧελϚΠζ͕͍͠ wىಈ࣌ؒʹൺྫͯ͠ίετ͕͔͔Δ
FAQ: Amazon TimestreamͲ͏ͳͷ͔ʁ 53 wࢲؾʹͳΓ·͆͢ w*P5$PSFˠ5JNFTUSFBNͷॻ͖ࠐΈՄೳ w"QQ4ZODͱͷ࿈ܞ͕͓ͦΒ͘·ͩ ࿈ܞͯ͘͠ΕΔͱ͍͍ͳʜ
FAQ: mockͷΛ૿͢߹ɺઃఆ͕େมͰͳ͍͔ʁ 54 w$47ΠϯϙʔτͰҰׅઃఆՄೳ
mockmock: ͜ΜͳσʔλੜͰ͖·͢ - όέοτόϦϡʔδΣωϨʔλ 55 w͍͔ͭ͘ͷσʔληοτΛ༻ҙͯ͠ɺͦͷ͏ͪͷҰͭΛબ wॱ൪ͷࢦఆϥϯμϜબՄೳ
mockmock: ͜ΜͳσʔλੜͰ͖·͢ - ҐஔδΣωϨʔλ 56 wਤ্ͰҠಈϧʔτΛࢦఆ͠ɺҠಈମͷ࠲ඪใΛૹ৴