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
960
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
あの重機は今どこにある?- 重機管理IoTプロダクトのバックエンドをAWSで構築した話 -
yuuu
0
650
mruby-esp32におけるペリフェラルAPIの実装検討
yuuu
1
550
育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
yuuu
4
4.4k
committee-railsとOpenAPI Generatorでスキーマ駆動なAPI開発をする
yuuu
0
740
mrubyでマイコンの世界に足を踏み入れる
yuuu
2
1.8k
mruby on IoT devices.
yuuu
4
2.2k
SORACOM ArcでオフィスのIoT化を進行中です⭐
yuuu
1
1k
AWSのIoTサービスをおさらいしよう
yuuu
1
260
mrubyを1300円のボードで動かそう
yuuu
0
570
Other Decks in Technology
See All in Technology
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
110
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.5k
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
2
650
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
230
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
190
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
850
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
360
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.4k
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
200
C++26 エラー性動作
faithandbrave
2
780
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Optimising Largest Contentful Paint
csswizardry
33
3k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Visualization
eitanlees
146
15k
Gamification - CAS2011
davidbonilla
80
5.1k
Making Projects Easy
brettharned
116
5.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Become a Pro
speakerdeck
PRO
26
5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Into the Great Unknown - MozCon
thekraken
33
1.5k
A Philosophy of Restraint
colly
203
16k
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ਤ্ͰҠಈϧʔτΛࢦఆ͠ɺҠಈମͷ࠲ඪใΛૹ৴