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
540
RubyKaigi 2025でプロポーザルが初めて採択されるまでにやったこと
yuuu
1
420
地方企業の強みを活かす!AWSを活用したIoTシステムの開発事例とその裏側
yuuu
0
79
あの重機は今どこにある?- 重機管理IoTプロダクトのバックエンドをAWSで構築した話 -
yuuu
0
840
mruby-esp32におけるペリフェラルAPIの実装検討
yuuu
1
700
育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
yuuu
4
4.6k
committee-railsとOpenAPI Generatorでスキーマ駆動なAPI開発をする
yuuu
0
880
mrubyでマイコンの世界に足を踏み入れる
yuuu
2
1.9k
mruby on IoT devices.
yuuu
4
2.5k
Other Decks in Technology
See All in Technology
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5k
C++26アップデート 2025-03
faithandbrave
0
1.2k
Microsoft Fabric vs Databricks vs (Snowflake) -若手エンジニアがそれぞれの強みと違いを比較してみた- "A Young Engineer's Comparison of Their Strengths and Differences"
reireireijinjin6
1
130
読んで学ぶ Amplify Gen2 / Amplify と CDK の関係を紐解く #jawsug_tokyo
tacck
PRO
1
300
もう難しくない!誰でもカンタンDocker入門 〜30分であなたのPCにアプリを立ち上げる〜
devops_vtj
0
180
クラウドネイティブ環境の脅威モデリング
kyohmizu
1
290
LLM アプリケーションのためのクラウドセキュリティ - CSPM の実装ポイント-
osakatechlab
0
160
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
coconala_engineer
0
190
「経験の点」の位置を意識したキャリア形成 / Career development with an awareness of the “point of experience” position
pauli
4
130
勝手に!深堀り!Cloud Run worker pools / Deep dive Cloud Run worker pools
iselegant
4
620
Twelve-Factor-Appから学ぶECS設計プラクティス/ECS practice for Twelve-Factor-App
ozawa
3
160
3D生成AIのための画像生成
kosukeito
2
580
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
KATA
mclloyd
29
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
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ਤ্ͰҠಈϧʔτΛࢦఆ͠ɺҠಈମͷ࠲ඪใΛૹ৴