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
750
RubyKaigi 2025でプロポーザルが初めて採択されるまでにやったこと
yuuu
1
490
地方企業の強みを活かす!AWSを活用したIoTシステムの開発事例とその裏側
yuuu
0
96
あの重機は今どこにある?- 重機管理IoTプロダクトのバックエンドをAWSで構築した話 -
yuuu
0
960
mruby-esp32におけるペリフェラルAPIの実装検討
yuuu
1
750
育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
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
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
340
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
120
LLM時代の検索
shibuiwilliam
1
140
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
Claude Code に プロジェクト管理やらせたみた
unson
6
4k
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
260
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
380
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
27k
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
510
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
160
スタートアップに選択肢を 〜生成AIを活用したセカンダリー事業への挑戦〜
nstock
0
180
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
We Have a Design System, Now What?
morganepeng
53
7.7k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Statistics for Hackers
jakevdp
799
220k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
740
Adopting Sorbet at Scale
ufuk
77
9.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Building Adaptive Systems
keathley
43
2.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
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ਤ্ͰҠಈϧʔτΛࢦఆ͠ɺҠಈମͷ࠲ඪใΛૹ৴