2019/01/12 に #kyotojs で発表したスライドです
2018 Firebase Λ͚ͬͨͲ2019 AWS Amplify Λ͓͏ͱࢥ͏2019.01.12 #kyotojs HANATANI Takuma(@potato4d)
View Slide
HANATANI Takuma(@potato4d)• p. at Elevenback / engineer at LINE corp.• Maintainer at• Vue.js JP Docs (Core maintainer) / Nuxt.js JP Docs (maintainer)• Web Application Developer• — Vue.js, Nuxt.js, Node.js(with TypeScript), Serverless• — User Interface, Micro Interaction, Product Development
ࠓ͍ͨ͜͠ͱ
Firebase ศར
Firebase ؆୯
Firebase ָ.
Firebase ࠷ߴ
ेମݧ͔ͨ͠ΒࠓAWS Amplify Ͱ࠷ߴʹͳΖ͏
Agenda1. جຊ࠷ߴͳ Firebase ͷ࠷ߴ͡Όͳ͍ͱ͜Ζ2. AWS ͷ Firebase ର߅അͱͳΔ "AWS Amplify"3. Ұ൪खܰʹ͑Δ Amplify Console ͚ͩͰಋೖͯ͠ΈΑ͏
جຊ࠷ߴͳ Firebase ͷ࠷ߴ͡Όͳ͍ͱ͜Ζ
Firebase ͷࠔͬͨ• ෳڥͷαϙʔτ໘͕Ͳ͏ͯ͠ऑ͍• ϗεςΟϯάຊ൪ڥͱͯ͠ Fastly Ͱศར͚ͩͲ DeployPreview ͕ͳ͔ͬͨΓͱෆศ• ͦͦෳͷ environment Λཧ͢ΔͨΊʹϓϩδΣΫτΛ environment ͷ͚ͩ༻ҙ͢Δඞཁ͕͋Δ• RTDB / Firestore Λ dev ڥͰςετϞʔυʹͰ͖ͨΓศརͳ෦ଟগ͋Δ͕……ɻ
Firebase ͷࠔͬͨ• Dev ͷαϙʔτखް͍ͷͷ Ops पΓ͕Ͳ͏ͯ͠ශऑ• CI / CD ڥଘࡏ͠ͳ͍(ࣗ CircleCI ʹҕͶ͍ͯΔ)• গ͠લ·Ͱ Firestore ͷόοΫΞοϓػೳ͕ͳ͔ͬͨ• ͦͷଞӡ༻্ͷ͕ੜͨ͡߹ͷରॲࡦ͕ऑ͔ͬͨ• ࠷ۙೝূใు͖ग़ͤΔΑ͏ʹͳ͓ͬͯΓվળͷ༗
Firebase ͷࠔͬͨ
Firebase ͷࠔͬͨhttps://medium.com/google-cloud-jp/firestore-backup-67327a74cd54
Firebase ͷࠔͬͨ• Cloud Functions Ͱ͑ͳ͍ʗΓͨ͘ͳ͍ͷͷಀ͛ઌ͕ͳ͍• ࣮ Cloud Functions ࠷Ұճ ࣮ߦ͞ΕΔ• ೋճ࣮ߦ͞ΕΔՄೳੑ͕͋Δ͜ͱΛߟ͑ͯΔඞཁੑ• (جຊBlazeϓϥϯͩͱࢥ͏͕) Blaze Ҏ֎ͩͱ OutBound ੍ݶ• Node ͔ͭ FaaS or Express ίʔυʹݶఆ• Google Β͘͠ Custom Runtime ͓Ζ͔ 1 ݴޠ
Firebase ͷࠔͬͨ• ͱͱ Mobile App ٭ͳͷͰ Web ͚ऑ͍• ΞφϦςΟΫεܥͯ͢ / ML Kit / ςεςΟϯά / ϨϙʔςΟϯά / Ad ͳͲ• શମͰ͍͏ͱఔͷػೳ͕ Web ʹͳ͍• ϝΠϯػೳ͋Δ͕ɺϫϯετοϓͱݴ͑ͳ͍
खૣ͘࡞Δͱ͖ʹ͏ͪΐͬͱॊೈͳAlternative ͕΄͍͠
AWS ͷ Firebase ର߅അͱͳΔ"AWS Amplify"
AWS Amplify• AWS ϞόΠϧ͚ϓϥοτϑΥʔϜͱɺͦͷͨΊͷ։ൃϑϨʔϜϫʔΫ• ͱͱ aws-sdk(2MB) + Cognito SDK Έ͍ͨʹཚཱ & ංେԽ͢Δ AWS ͷ JavaScript SDK Λ౷߹͢ΔͨΊʹ͡·ͬͨ JavaScriptϥΠϒϥϦͱͯ͠ͷϓϩδΣΫτ• ϥΠϒϥϦݱࡏͰ Web / React Native / iOS / Android ʹରԠ͢ΔϚϧνϓϥοτϑΥʔϜͳ Amplify Framework ͱมԽͨ͠• ͦͷޙखΛ͛ɺݱࡏͰ AWS ͷϞόΠϧ͚ϓϥοτϑΥʔϜશମΛࢦ͢Α͏ʹมԽ͍ͯ͘͠
AWS Amplify• ఏڙ͍ͯ͠Δػೳ܈ʢҰྫʣ• API ࿈ܞ(AppSync GraphQL / REST API Gateway)• Authentification (Cognito)• Hosting (CloudFront / S3)• File Storage (S3)• Analytics (Pinpoint & Kinesiss)• etc ...
AWS Amplify͍͍ͩͨ Firebase ͷϑϧ൛ + α
AWS Amplify ͷྑ͞• JavaScript ϑϨʔϜϫʔΫͱͷγʔϜϨεͳ࿈ܞ• React / Vue / Angular ͦΕͧΕͷઐ༻ SDK ͕ଘࡏ• ͦΕͧΕͷจԽʹ߹Θͤͨ API ͷެࣜͰͷఏڙ• SDK Λ৮ͬͯͰ͖Δ͜ͱશ࣮ͯݱՄೳ• αʔυύʔςΟϑϨʔϜϫʔΫଆͷ࿈ܞϥΠϒϥϦශऑͳ͜ͱׂ͕ͱଟ͍தɺAWSଆ͔ΒدΓఴ͍ͬͯΔͷͰڠྗ
AWS Amplify ͷྑ͞
AWS Amplify ͷྑ͞• DynamoDB On-Demand ͷొʹΑΔ࿈ܞͷ͢͠͞• ͜Ε·ͰAWS ಠࣗͷࢼࢉ(ಛʹDynamo)͕Ͳ͏ͯ͠ωοΫ• Φʔτεέʔϧ͋Δ͕ίετ໘ʗظͰΞΫηε͕Ͷͨ࣌ͷ͜ͱͳͲ• ڈͷय़͜ΕͰۤ࿑ͯ͠ Firebase Ͱྑ͔ͬͨࣄ͋ͬͨ• 2018 ͷ re:invent Ͱ͚ͬͨͩͷ DynamoDB ͕ొ• Firebase ϨϕϧͷϥΠτ͞Ͱ AWS Πϯϑϥͱͷଓ͕༰қʹ
AWS Amplify ͷྑ͞https://aws.amazon.com/jp/blogs/news/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing/
AWS Amplify ͷྑ͞• ޙΖ͕ී௨ͷ AWS ͳͷͰॊೈੑ͕͋Δ• Amplify Framework ͔Βଓ͍ͯ͠Δͷ࠷ऴతʹͲ͜ʹଐ͢Δ͔͕໌ه͞Ε͍ͯΔ• (ಛʹAPIͳͲ) Amplify ͔ͩΒͱ͍ͬͯಛʹԿ੍͔ݶ͕͋ΔΘ͚Ͱͳ͍ͷͰ෯Λͨͤͨ͘ͳͬͨ࣌ʹศར• ͦͷ Firebase ΑΓ͕ࣝඞཁͳؾ͕͢Δ
AWS Amplify ͷྑ͞https://aws-amplify.github.io/docs/js/analytics
AWS Amplify ͷྑ͞• ࠷ۙ CI / CD ͱϗεςΟϯά͕Ͱ͖Δ Amplify Console ͕Ͱͨ• Amplify Framework Λར༻͍ͯ͠Δ͔Ͳ͏͔ʹؔΘΒͣ͑Δ• Ϗϧυ → σϓϩΠ → ͕͋Εࠩ͠͠ͷجຊ͕Մೳ• Route 53 > CloudFront (w/ ACM) > S3 ͷఆܗ࡞ۀ͕Ϙλϯ1ͭ• ϒϥϯν͝ͱͷෳڥσϓϩΠΛαϙʔτ(ڥม)• ೝূΛ༩͢Δ͜ͱ͕Ͱ͖ɺ2019/01࣌Ͱ Basic ೝূΛαϙʔτ
AWS Amplify ͷྑ͞• Multi Environment ͷରԠ• શମతʹෳڥʹྗ͕ೖ͍ͬͯΔ• Console ɺ Amplify Framework ϕʔλͰ͋Δ͕ෳڥΛҙࣝͨ͠มߋ͕ಋೖ͞Ε͍ͯΔ• ॳճϦϦʔεΑΓઌ͔ͬ͠Γͱߟ͑ͭͭ։ൃ͢ΔͨΊͷ͕ Firebase ൺͰἧ͍ͬͯΔҹ
ମݧ Amplify Console
Amplify Console ͓͞Β͍• Amplify αʔϏεͷதͷҰͭͰ͋ΓɺσϓϩΠपΓ• ݱঢ় CI / CD ࣮ߦͱϗεςΟϯά͕ҰͭʹͳͬͨαʔϏε• Circle CI + Firebase ͋Δ͍ Netlify ͷڧԽ൛• ϒϥϯνࢦఆͰͷσϓϩΠϓϨϏϡʔ• 1ͰͰ͖Δ TLS ରԠ / CloudFront ʹΑΔΤοδΩϟογϡ• σϓϩΠϓϨϏϡʔ͝ͱͷΞΫηεೝূ༩
खॱ1. AWS ΞΧϯτͰϩάΠϯ ← ࠓ͙͢։ઃʂʂʂʂʂʂʂ2. https://aws.amazon.com/jp/amplify/console/ ʹΞΫηε3. ΞϝϦΧਓʹͳΔʢຊʹϦʔδϣϯ͕ͳ͍ͷͰʣ4. దʹαΠτΛ্ཱͪ͛ͯదͳ Git ϒϥϯνʹ push ͢Δ5. CI / CD ͕উखʹߦΘΕͯϒϥϯν͝ͱʹσϓϩΠ͞ΕΔ6. ϕʔγοΫೝূͳͲΛؾܰʹ༩Ͱ͖Δ(ϒϥϯν͝ͱՄ)
σϞͯ͠ΈΔ
Α͋͘Δ࣭• ๚ऀΞϝϦΧਓ͡Όͳ͍Μ͚ͩͲ• ࡞Δਓ͕ΞϝϦΧਓͳΒ CloudFront ͕ࣗಈͰט·͞ΕΔͷͰɺຊਓ͚ʹշదʹίϯςϯπΛఏڙͰ͖Δ• Netlify ͰΑ͘ͳ͍ʁ• Deploy Preview ʹ҆ՁͰϕʔγοΫೝূ΄͘͠ͳ͍……ʁ• ͦΕҎલʹ Production ͳΒ࠷େݶ҆ఆͯ͠΄͘͠ͳ͍……ʁ
Α͋͘Δ࣭• Firebase Hosting Fastly ͚ͩͲ• Θ͔Δ• ͜Ε͋Μ·Γ Amplify ຊମͱؔͳ͘ͳ͍ʁ• AWS ͷϞόΠϧ(Web)ΞϓϦέʔγϣϯ͚ͷαʔϏεू߹ମ͕ͦ͜ Amplify ͳͷͰ……• Ұ൪͙͢ʹҠߦͰ͖ͦ͏ͳ෦ͱͯ͠ɺ·ͨ Amplify ʹೖͬͯΒ͏ͱ͖ͬͭʹҰ൪ྑ͍ͱࢥ͏
Α͋͘Δ࣭• ݁ہ Amplify ࣗମීஈͬͯΔͷʁ• ϑϧ Amplify ΞϓϦέʔγϣϯͷ Production-in ·ͩɻ Console୯ମ͙͢ಋೖͰ͖ΔͷͰ Production ͍ͬͯ·͢ɻ• Hobby Use ͩͱׂͱ͍ͬͯΔͷͰ 2019 ಋೖ͍ͨ͠• AmplifyɺFirebase ͰΑ͘ͳ͍ʁ• FirebaseͰ͍͍ͳΒFirebaseͰྑ͍ɻΑ͘ͳ͍࣌ͷબࢶͱͯ͠ॏཁ• AWS ͷձࣾʗGCP ͷձࣾ໌֬ʹ͋ΔͷͰɺͦͷҙຯͰ
Α͋͘Δ࣭• Firebase ΛΘͳ͘ͳΓͦ͏ʁ• ͦΜͳ͜ͱͳ͍ɻґવͱͯܰ͠ྔͳ Web ΞϓϦέʔγϣϯͷ։ൃ Firebase Λ͍͍ͨ͠ɺ DB Firestore ͕༏ल• ҎԼͷγνϡΤʔγϣϯͰ͍͍ͨ• େ͖Ίͷ API Λ։ൃͯ͠ΨοπϦ࡞ΓࠐΈ͍ͨͱ͖• Firebase Hosting ࣺͯͯ Amplify Console ʹ͍ͨ͠• Firebase Auth MFA ͕ͳ͍ͷͰηΩϡΞͳೝূ Amplify
ઈର͏ͧ AWS Amplify 2019