Slide 1

Slide 1 text

FirebaseΛ࢖ͬͨ੒௕͢ΔϞ όΠϧΞϓϦͷͨΊͷߴ଎ͳ ϓϩμΫτ։ൃ id:laiso

Slide 2

Slide 2 text

্ཱͪ͛ظͷϓϩμΫτ։ൃ ͷ଎౓Λ્֐͢Δ΋ͷ • ΑΓଟ͘ͷਓһͰ • ΑΓଟ͘ͷର৅Λ • มߋɺ؅ཧ͠ଓ͚Δ • ෆཁͳ΋ͷΛ։ൃ͠ͳ͍ɻର৅ΛߜΔ͜ͱͰ ߴ଎Խ͸Ͱ͖Δ

Slide 3

Slide 3 text

੒௕ظͷϓϩμΫτ։ൃͷ଎ ౓Λ્֐͢Δ΋ͷ • ͞ΒͳΔਓһ૿Ճɻ૿͍͑ͯ͘มߋɺ؅ཧ͠ ଓ͚Δର৅ͷγεςϜ • ্ཱͪ͛͸Ͱ͖Δ͕ஈ֊త੒௕Λड͚ೖΕΒ Εͳ͍γεςϜΞʔΩςΫνϟ • ։ൃ͢Δର৅ΛݮΒ͢͜ͱ͸Ͱ͖ͳ͍ͷͰε έʔϧ͢ΔΑ͏ϦΞʔΩςΫνϟϦϯά͢Δ

Slide 4

Slide 4 text

ΞʔΩςΫτతδϨϯϚ • ߴ଎ʹ্ཱͪ͛ΒΕͳ͍ͱ੒௕ͤͣʹϓϩμΫτ͕ऴྃͯ͠͠·͏ • ߴ଎ʹ্ཱͪ͛Δ͜ͱΛ໨ࢦͨ͠ΞʔΩςΫνϟ͕੒௕Λड͚ೖ ΕΒΕͳ͍ • ੒௕Λड͚ೖΕΔͨΊͷγεςϜվमͰ੒௕͕ࢭͬͯ͠·͏ɻͦ Ε͕ͲͷϓϩδΣΫτͰ΋ൃੜ͍ͯ͠Δ(࠶ݱੑͷ͋Δ໰୊) • ελʔτΞοϓ͸େ͖֦͘େ͢Δ͜ͱΛલఏʹ͍ͯ͠ΔͷͰߴ଎ʹ ্ཱͪ͛ͦͷ··େ͖͘੒௕͢Δ͜ͱΛݟӽͯ͠࠷ॳ͔Βઃܭ͠ ͍ͨ

Slide 5

Slide 5 text

FirebaseΛ࢖ͬͨ੒௕͢ΔϞ όΠϧΞϓϦͷͨΊͷߴ଎ͳ ϓϩμΫτ։ൃ

Slide 6

Slide 6 text

࡞͍ͬͯΔ΋ͷ • Ϣʔβʔ͕ࣸਅΛ౤ߘ͢ΔSNSͳϞόΠϧΞϓϦ • ౦ೆΞδΞͷϩʔΧϧࢢ৔޲͚ • iOS/AndroidΞϓϦ൛ɺWeb൛+όοΫΤϯυɺόο ΫΦϑΟε(؅ཧը໘)ͷ4ͭͷίʔυϕʔε͕͋Δ • ΤϯδχΞ͸1.5ਓ(͔͚΋ͪ)ɻϑΝʔετϦϦʔε (iOS)·Ͱͷظؒ͸60೔ɻ

Slide 7

Slide 7 text

·ͣ࠷ॳʹFirebaseΛ࢖͏͜ͱ ΛܾΊͨ • ੲ͔ΒBaaSͷݚڀΛ͍ͯͯ͠1ਓͰ࡞Γ͖ΔͳΒ͜Ε͕࠷ڧͩͳʙͱ͍͏ؾ͕࣋ͪ ͋ͬͨ • ϞόΠϧΞϓϦͷόοΫΤϯυ(Web API)ʹಛԽͨ͠αʔϏεͷ·ͱΊ http:// iphone-dev.g.hatena.ne.jp/laiso/20120223/1330007695 • ෆ࣮֬ੑͷߴ͍΋ͷΛߴ଎ʹ։ൃ͢Δखஈͱͯ͠Railsʹ͍ۙࢥ૝Λײ͍ͯͨ͡ • ʮRuby on Rails ͸ɺۃগਓ਺(ཧ૝͸Ұਓ) ͕αʔϏε։ൃ͢Δͷʹཧ૝తͳϑ ϨʔϜϫʔΫͰ͋ΓɺͦΕΛ໨ࢦ͠ଓ͚͍ͯΔͱߟ͍͑ͯΔɻRuby on Rails ͷෑ ͔ΕͨϨʔϧʹ৐Δ͜ͱͰɺҰؾʹ໨త஍ʹ౸ୡ͢Δ͜ͱ͕Ͱ͖Δɻʯ • Ruby on Rails ͷັྗͱࢥ૝ https://www.bokukoko.info/entry/2018/03/28/221026

Slide 8

Slide 8 text

ٕज़બఆͷީิʢϞόΠϧΞ ϓϦʣ • React Native • Flutter • PWA • → ࠷ऴతʹϞόΠϧΞϓϦ͸iOS/Android SDKʹ

Slide 9

Slide 9 text

iOS/Android SDKʹͨ͠എܠ • νʔϜ͕׳Εֶͯͯशίετ΋௿͍ • Ұ൪ෆ࣮֬ੑͷߴ͍৔ॴͳͷͰΑΓγϯϓϧ ʹมߋͰ͖ΔΑ͏ʹ͍ͨ͠ • λϕϦʔ΍KomercoͷࣄྫͳΜ͔΋ࢀߟʹ

Slide 10

Slide 10 text

ٕज़બఆͷީิʢαʔόʔα Πυʣ • AWS/Ruby on Rails/MySQL/ίϯςφαʔϏε • GAE/Go/Datastore • Heroku/Django/PostgreSQL • → લ໘ͷFirebase+αʔόʔϨε͔Βઃܭ͢Δ͜ͱͰ ͜ͷϨΠϠʔͷܾఆΛޙճ͠ʹͰ͖Δʢ࣮ࡍ͸Cloud Functionsͷίʔυͱͷڞ༗ͱ͍͏ࢹ఺͕͋ͬͨʣ

Slide 11

Slide 11 text

αʔόʔϨεΞʔΩςΫνϟ • αʔόʔαΠυ։ൃ͸͋Δʂ • ৗ࣌Քಇ͢ΔαʔόʔϦιʔε͕ͳ͍͚ͩ • ैདྷͷαʔόʔ͕୲͏໾ׂΛϚωʔδυαʔϏ ε͕੥͚ෛ͏ • εχϖοτ୯ମͷ࣮ߦ؀ڥͰ͋ΔFaaS͸ͦͷγ ϯϓϧͳར༻ྫ

Slide 12

Slide 12 text

Functionத৺ͷಈ࡞؀ڥ • αʔόʔͷঢ়ଶʹΑΔ෭࡞༻ͷͳ͍ؔ਺࣮ߦ • ίʔυ͕มΘͬͯͳ͚Ε͹ಉ͡Α͏ʹಈ࡞͠ ଓ͚Δ • ো֐ରԠ༻ͷMacbookΛ࣋ͬͯόΧϯεʹߦ ͔ͳ͍͍ͯ͘ʂ

Slide 13

Slide 13 text

ٕज़બఆʢϑϩϯτΤϯυʣ • Next.js(React) • SSR on Cloud Functions(Express/Node.js) • Firebase Hosting(ϦόʔεϓϩΩγ)

Slide 14

Slide 14 text

ϑϩϯτΤϯυ(Web൛) • SNSγΣΞɺSEOྲྀೖͳͲͷ໨తͰ࠷ޙʹ௥Ճͨ͠ • ඞཁे෼Λຬͨͤ͹͍͍ͷͰWebαʔόʔΛཱͯͣʹSSRͰ࣮ݱ • όοΫΤϯυͷ1 Function͕SSRͯ͠ɺͦΕ͕Firebase Hosting ܦ༝Ͱެ։͞Ε͍ͯΔͱ͍͏ମ੎ • ͷͪʹWordPressͰߏஙͨ͠CMSͱ౷߹ͨ͘͠ͳΓɺ͜ͷ༻్ ͩͱFirebase HostingΑΓNetlifyͷ͕খճΓ͕ޮ͖ͦ͏ͩͱߟ͑ ͸͡Ίͨ

Slide 15

Slide 15 text

ٕज़બఆʢόοΫΦϑΟεʣ • AngularΛ࢖ͬͨSPA + Firebase Hosting • Cloud Functions/Cloud Tasks/Cloud Scheduler • Google App Engine(Node.js) FunctionsͰෆ଍ ͢Δ෦෼͚ͩϗετ

Slide 16

Slide 16 text

؅ཧը໘ʢόοΫΦϑΟεʣ • ʮαʔόʔαΠυͷίʔυʯͷதʹؙͬͱೖΕΔैདྷͷ ։ൃํ๏͸ආ͚͔ͨͬͨ • ؅ཧը໘ͷγεςϜͷӨڹ͕ΞϓϦέʔγϣϯଆʹग़ͨ Γɻݖݶ؅ཧ͕೉͘͠ͳͬͨΓ • ؅ཧը໘Ͱ࢖͏DBΛಠཱ͍ͤͨ͞ • ઐ༻ͷFirebaseϓϩδΣΫτԽͯ͠ϚϧνFirestoreߏ੒ ʹͨ͠

Slide 17

Slide 17 text

FirebaseΛ࢖ͬͨαʔόϨε ΞʔΩςΫνϟͷ֓ཁ • Firebaseͷ࣮ଶ͸GCP͓·͔ͤίʔε • ශऀͷҝͷϚΠΫϩαʔϏεΞʔΩςΫνϟ • ఏڙ͞ΕΔίϯϙʔωϯτ͸GCPͰDIY͢Δ͜ͱ ΋Մೳ • େ͖͘੒௕͢Ε͹GCPΛ࢖ͬͨຊ֨తͳϚΠΫϩ αʔϏεΞʔΩςΫνϟʹҭͯΔ

Slide 18

Slide 18 text

Firestore SDK Λ࢖ͬͯྑ͔ͬ ͨ͜ͱ • Web API։ൃ͕ෆཁ • ΞϓϦͰAPIΫϥΠΞϯτϞδϡʔϧͷ࣮૷͕ ෆཁ • Ωϟογϡ͕ڧྗͰΦϑϥΠϯϑΝʔετͳ UI͕࡞ΕΔ

Slide 19

Slide 19 text

ΞϓϦ࣮૷ϑϩʔ • iOS/AndroidͲͪΒ޲͚ʹػೳΛ։ൃ͢Δͷ͔ ܾΊΔ • ͻΒ͢ΒUI࣮૷ • αʔόʔαΠυͷ͜ͱ͸͋·Γߟ͑ͳ͍ͯ͘ ͍

Slide 20

Slide 20 text

αʔόʔαΠυ࣮૷ϑϩʔ • ͓΋ΉΖʹNode.jsͰFirestoreΛࢀরૢ࡞͢Δ ίʔυΛॻ͖࢝ΊΔ • ͋Δఔ౓ݕূͨ͠ΒCloud Functionsʹ৐ͤͯ ςετΛॻ͘ • σϓϩΠ

Slide 21

Slide 21 text

όοΫΦϑΟε։ൃϑϩʔ • جຊతʹ࠷ॳʹઐ༻UIΛߏங͠ͳ͍(ఆܕۀ຿ͱͯ͠ཁ݅ ͕ఆ·͍ͬͯͳ͍͔Β) • εϓϨουγʔτɺFirebaseίϯιʔϧ௚ૢ࡞ɺNode.js εΫϦϓτ࣮ߦ(BOTԽؚΉ)Λ׆༻ • ຖ೔ಉ͡εΫϦϓτΛ࣮ߦ͠͸͡ΊͨΒࣗಈԽˠϢʔ βʔ͕ଈ࣌ೖྗ͢Δ஋͕͋Ε͹؅ཧUIԽ • ϓϩμΫτ։ൃ͚ͩʹϑΥʔΧε͢Δ࢓૊Έ

Slide 22

Slide 22 text

࣮ݱͨ͠ϓϩμΫτ։ൃϑ ϩʔ • िͷ͸͡Ίʹେ୾ͳػೳมߋΛࢥ͍ͭ͘ • 2, 3೔ͰαʔόʔαΠυɾΫϥΠΞϯταΠυ ࣮૷͠ϦϦʔε • ि຤͔Βར༻͞Ε͸͡Ί࣍ͷिʹৼΓฦΔ

Slide 23

Slide 23 text

໰୊ൃੜ

Slide 24

Slide 24 text

ൃੜͨ͠໰୊ • ϦϦʔεޙ2,3ϲ݄ͨ͋ͨ͠ΓͰϢʔβʔ͕૿Ճ • ͩΜͩΜΞϓϦͷը໘ඳը·ͰͷԠ౴଎౓͕མ͍ͪͯ͘ • σόοάͯ͠ΈΔͱFirestoreͷ௨৴෦෼ʹ͔ͳΓͷ࣌ؒΛ࢖ͬ ͍ͯΔ • ௨৴஗ԆΛى఺ͱͨ͠୺຤Ϧιʔε(CPU/ϝϞϦ)ͷ઎༗ • ௨৴ͷϦΞϧλΠϜੑΛظ଴࣮ͯ͠૷͍ͯ͠ΔΑ͏ͳ෦෼ά Ϧονͯ͠͠·͏

Slide 25

Slide 25 text

Firestore(US region)ͷԠ౴଎౓ ໰୊ • ։ൃ࣌ʹ͸ڐ༰Ͱ͖Δ଎౓ͩͬͨ • ઀ଓස౓ͱDBͷσʔλ૯ྔ͕૿͑ɺΞϓϦཁ݅΋ඇಉظ ઀ଓ͕૿͖͑ͯͨ͋ͨΓͰݦࡏԽ • Ϣʔβʔͷଟ͍ԤถͰ͸͜ͷ໰୊ͷιϦϡʔγϣϯ͸ඞཁ ͳ͘ɺWebݕࡧͯ͠΋ग़ͯ͜ͳ͍ͷͰࣗྗͰղܾ͢Δඞཁ ͕͋Δ • Firebase SDKʹύονΛ౰ͯͯͻͨ͢ΒϓϩϑΝΠϦϯά

Slide 26

Slide 26 text

Firestore(US region)ͷԠ౴଎౓ ໰୊ • ΞϓϦͰ͸ৗ͍࣌ͭ͘΋ͷυΩϡϝϯτऔಘ௨৴(gRPC) ͕૸͓ͬͯΓɺ݁ՌΛΫϥΠΞϯταΠυδϣΠϯͯ͠UI Λߏ੒͢ΔͷͰ͢΂ͯͷ௨৴׬ྃΛ଴ͪड͚Δඞཁ͕͋ͬ ͨ • ࢼ͠ʹΞϓϦͷ֎Ͱطଘͷ1υΩϡϝϯτ͚ͩऔಘͯ͠΋ ݁ߏ஗͍(TTFB 2-3ඵ) • Firestore SDKͷίωΫγϣϯͷ਺ΛݮΒ͢͜ͱ͕ൈຊత ͳରࡦʹͳΔͱ൑அ͢Δ

Slide 27

Slide 27 text

Firestore SDKͷίωΫγϣϯ ͷ਺ΛݮΒͨ͢Ίͷઓུ • ΞϓϦ্Ͱ૸ΔFirestoreͷΫΤϦຊ਺Λ࠷খ ݶʹ͢Δ(ΫϥΠΞϯταΠυͷ࠷దԽ) • ݱࡏද͍ࣔͯ͠ͳ͍ը໘ͷίωΫγϣϯ͕ όοΫάϥ΢ϯυͰ૸Βͳ͍Α͏ʹ • ΫϥΠΞϯταΠυΩϟγϡͷಋೖ

Slide 28

Slide 28 text

ը໘ߋ৽͕஗Ԇ͠ͳ͍࢓૊Έ • ΠϯϝϞϦʹڞ༗ঢ়ଶΦϒδΣΫτΛอ࣋ɻFirestoreυ ΩϡϝϯτΛ௚઀ೖΕΔ(ྫ users/ID) • ϓϨθϯςʔγϣϯ૚͔Β͸ঢ়ଶΦϒδΣΫτΛ؂ࢹ͢Δ • UIͷૢ࡞࣌఺Ͱ௨৴։࢝+ΩϟογϡΛߋ৽ͯ͠ը໘൓ө ͢Δ • ௨৴͕׬ྃͨ͠Β௨஌ͯ͠ঢ়ଶΦϒδΣΫτΛ্ॻ͖ɻࣦ ഊͨ͠ΒΤϥʔ௨஌ͯ͠revert

Slide 29

Slide 29 text

ΦʔέετϨʔγϣϯ૚ • ΫϥΠΞϯταΠυδϣΠϯ͕ඞཁͷͳ͍read onlyͳσʔλߏ ଄ΛΠϕϯτۦಈͳFunctionͰੜ੒ • શϢʔβʔ͕ը໘͝ͱʹಉ͡σʔλΛಡΈࠐΈ͍ͨέʔεͰ1υ Ωϡϝϯτʹ·ͱΊΔ • Function -> Firestore ͸ US -> US ͳͷͰظ଴͢Δ൓ө଎౓͕ ͋ͬͨ • ͜ΕͰ΋ 1υΩϡϝϯτ͋ͨΓͷԠ౴଎౓(TTFB 2-3ඵ)͸͋ͬͨ

Slide 30

Slide 30 text

AlgoliaΛ࢖ͬͨதؒαʔόʔͷ ಋೖ • શจݕࡧͷΈͳΒͣΫϥΠΞϯταΠυδϣ ΠϯͷࠐΈೖͬͨΫΤϦʹͳΔ෦෼Λந৅Խ ͢Δ • ΞδΞʹAPIαʔόʔ͕͋ΓԠ౴଎౓͸ൈ܈ • Firestore SDKͱ͸ಠཱͨ͠ϞδϡʔϧͳͷͰ ΦϑϥΠϯΩϟγϡͳͲ͸ޮ͔ͳ͍

Slide 31

Slide 31 text

Cloud Firestore REST API • JS SDK(ϒϥ΢β޲͚)ͷ಺෦࣮૷ΛಡΜͰͯώϯ τΛಘͨ • Firestore SDK಺ͷgRPCΫϥΠΞϯτΛ௨ͣ͞ʹ ௚઀RESTࢀর͢Δ • DBͷυΩϡϝϯτΛͦͷ··ಡΈࠐΉ͚ͩͳΒ͜ Ε͕γϯϓϧɻϖʔδϯά༻ͷύϥϝʔλ΋͋Δ

Slide 32

Slide 32 text

࠷దԽΛ͕Μ͹ͬͨ݁Ռ • ઀ଓܦ࿏͕෼ࢄ͞ΕFirestoreΛ௚ͰಡΈࠐΜ Ͱ͍Δ෦෼ͷ஗Ԇ΋ؾʹͳΒͳ͍଎౓ʹ • ΞϓϦΤϯδχΞ/αʔόʔαΠυΤϯδχΞ ͕׬શʹ෼ۀ͍ͯ͠ΔνʔϜͩͱ໰୊ղফ͸ ݫ͔ͬͨ͠ͷ͔΋ɾɾ(ΞϓϦͰσόοΫ͠ͳ ͕ΒαʔόʔαΠυͷίʔυΛॻ͖׵͑ͯݕ ূ͢Δඞཁ͕͋ͬͨ)

Slide 33

Slide 33 text

͔͠͠ʂ • Cloud Firestore GAʹͳͬͯAsiaϦʔδϣϯ΋ Ͱ͖ͨͷͰࠓޙ͸ؾʹ͠ͳͯ͘Α͘ͳΓͦ͏

Slide 34

Slide 34 text

·ͱΊ • FirebaseͰαʔόϨεΞʔΩςΫνϟΛߏ੒ͨ͜͠ͱͰ։ൃ޻਺ ͕൒෼ҎԼʹͳΓɺߴ଎ʹϓϩμΫτ։ൃ͕Ͱ͖ΔΑ͏ʹͳͬͨ • Firebaseͷج൫͸GCPͰ͋ΓɺϓϩμΫτͷ੒௕ͱͱ΋ʹ௧Έ͕ গͳ͘ஈ֊తʹϚΠΫϩαʔϏεΞʔΩςΫνϟʹ͍ͯ͘͜͠ͱ ͕Մೳ • Cloud Firestore ಛ༗ͷ᠘΋͕͋ͬͨΤϯδχΞϦϯάͰղܾͨ͠ • ਖ਼ࣜ൛͕ϦϦʔε͞ΕFirestoreͱCloud Functions͕౦ژϦʔδϣ ϯʹདྷͨͷͰΑΓ࢖͍΍͘͢ͳΓࠓޙ͞Βʹࣄྫ͕૿͑Δ͸ͣ