Slide 1

Slide 1 text

API Λ Firebase Realtime Database ʹҠߦͯ͠ؾ෇͍ͨ͜ͱ 2017/08/28 syamaoka GCPUG Firebase Realtime Database /meetup/1

Slide 2

Slide 2 text

ࣗݾ঺հ ໊લɿ ࢁԬ ਅ໵ (syamaoka) झຯɿ ɾ MMO RPG ɾ PC : Tales Weaver ɾ Mobile : Lineage 2 Revolution ɾ MoBA : VainGlory ୲౰ɿ ɾ iOS, όοΫΤϯυ (API, Batch)

Slide 3

Slide 3 text

୲౰தαʔϏεͰꙍ ֵአͭͼ͚Ρ䱛ᚆ • Realtime Database • Remote Config • Firebase Authentication • Analytics • App Indexing • Firebase Performance Monitoring

Slide 4

Slide 4 text

୲౰தαʔϏεͰꙍ ֵአͭͼ͚Ρ䱛ᚆ • Realtime Database <- ࠓ೔͸͜͜Λத৺ʹ࿩͠·͢ ! • Remote Config • Firebase Authentication • Analytics • App Indexing • Firebase Performance Monitoring

Slide 5

Slide 5 text

ΞδΣϯμ • API -> Firebase Realtime Database • ΞϓϦଆͷ࣮૷ • ηΩϡϦςΟϧʔϧʹ͍ͭͯ

Slide 6

Slide 6 text

Firebase ʹٻΊ͍ͯΔ͜ͱ • API ࡞੒޻਺ͷܰݮ • ύϑΥʔϚϯενϡʔχϯά͔Βͷ୤٫ • ΦϑϥΠϯ࣌ͷσʔλͷѻ͍΍͢͞ʢॲཧͷ؆୯͞ʣ

Slide 7

Slide 7 text

API -> Firebase Realtime Database

Slide 8

Slide 8 text

Ұ൪ࠔͬͨʢࠓ΋ෆ҆ʣͷ͸ɺ ੔߹ੑ !

Slide 9

Slide 9 text

݁࿦

Slide 10

Slide 10 text

ΞϓϦέʔγϣϯίʔυΛ৴͡ΔʢఘΊʣ Firebase ͸ RDB Ͱ͸ͳ͍ͨΊɺ֎෦Ωʔ੍໿͕ͳ͍ɻ ͦͷͨΊɺ݁߹͕ඞཁͳՕॴ͸ొ࿥͢ΔࡍʹίʔυͰ֬ೝɻ εΩʔϚϨε(Ұ؏ੑ͕ͳ͍)Ͱ΋ɺ݁߹͢΂͖͔൱͔Λ൑அ͠ɺ ࠷దͳઃܭΛ͍ͯ͘͠ͷ͕ॏཁɻ ! ΤϯδχΞͷ࿹ͷݟͤॴ !

Slide 11

Slide 11 text

ιʔτͷಛ௃ • ΩʔΛࢦఆͯ͠ঢॱͰऔಘ • ฦ٫͢Δσʔλͷॱ൪͸อূ͍ͯ͠ͳ͍

Slide 12

Slide 12 text

ιʔτͷಛ௃ • ΩʔΛࢦఆͯ͠ঢॱͰऔಘ • ฦ٫͢Δσʔλͷॱ൪͸อূ͍ͯ͠ͳ͍

Slide 13

Slide 13 text

ฦ٫͢Δσʔλͷॱ൪͸อূ͍ͯ͠ͳ͍ ྫ͑͹ created_at Ͱιʔτ͠ɺ ࠷৽σʔλΛ 10 ݅औಘͨ࣌͠ɺ ฦ٫͞ΕΔσʔλ͸࠷৽σʔλͷ 10 ͕݅ͩɺ ฦ٫͞ΕΔ JSON ͷฒͼॱ͸อূ͞Ε͍ͯͳ͍

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Q. ͭ·ΓΞϓϦଆ͸Ͳ͏͢Ε͹͍͍ʁ A. ฦ٫͞Εͨ஋Λιʔτ͠௚͢ɻ

Slide 16

Slide 16 text

߱ॱʹ͢Δʹ͸ʁ • created_at Λ - ͷ஋ʹͯ͠ɺ߱ॱʹͳΔ key Λੜ੒ https://stackoverflow.com/questions/34156996/firebase- data-desc-sorting-in-android/42572025#42572025 • શ݅औಘͯ͠ΞϓϦଆͰ߱ॱʹฒͼସ͑Δ • QueryLastTo Λ࢖ͬͯ࠷ޙͷσʔλ͔Βऔಘ͢Δ

Slide 17

Slide 17 text

ϩδοΫॱʹ͢Δʹ͸ʁ ϩδοΫʹΑΔฒͼॱ͸ɺ Firebase Realtime Database ͚ͩͰ͸೉͍͠ɻ

Slide 18

Slide 18 text

ιʔτ༻ͷσʔλΛ࡞੒ { "articleOrders": { "articleId1": 1, "articleId2": 2 } }

Slide 19

Slide 19 text

ϝϦοτ • ࠷খݶͷࢀর • ΞϓϦͷมߋͳ͠ʹཪଆͰॱ൪Λมߋग़དྷΔ ※ articles ͷதʹ order Λ༻ҙͨ͠৔߹ɺarticles શͯΛಡ ΈࠐΉඞཁ͕͋ΓɺύϑΥʔϚϯε͕ѱ͍ ❌

Slide 20

Slide 20 text

σϝϦοτ • ߋ৽ִ͕ؒ୹͘ग़དྷͳ͍ • ̍࣌ؒຖʹߋ৽ͱ͔Ͱ͋Ε͹େৎ෉͕ͩɺ5෼ຖͱ͔ͩͱ ͖ͬͱݫ͍͠ • ܭࢉର৅ͷσʔλྔʹݶք͕͋Δ

Slide 21

Slide 21 text

Cloud Function ͱ࢖͍ ෼͚Α͏ !

Slide 22

Slide 22 text

Rule ʹ͍ͭͯ

Slide 23

Slide 23 text

Rule ͸େମҎԼͷ̐ͭ • Read and Write • Type • Require • index

Slide 24

Slide 24 text

ܕͷࢦఆํ๏ { "article": { "title": { ".validate": "newData.isString()" }, "visible": { ".validate": "newData.isBoolean()" } } }

Slide 25

Slide 25 text

ඞਢύϥϝʔλͷࢦఆํ๏ { "article": { ".validate": "newData.hasChildren(['title','visible'])" } }

Slide 26

Slide 26 text

Index ͷࢦఆํ๏ { "article": { ".indexOn": [ "title" ] } }

Slide 27

Slide 27 text

γϛϡϨʔλ͕͍͢͝ศར !

Slide 28

Slide 28 text

Demo

Slide 29

Slide 29 text

͔͠͠ɺ͜ΕΛखೖྗͰ શ෦؅ཧ͢Δͷ͸େม !

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

⚠ 8/28 ࣌఺ β ver

Slide 32

Slide 32 text

Demo

Slide 33

Slide 33 text

ઃఆϑΝΠϧ https://gist.github.com/bpyamasinn/ c1f62153f0bea8a499c111f4f30c8546

Slide 34

Slide 34 text

Index ͷઃఆ͚ͩগ͠΍͔͍ͬ Index ͸ Path Ͱࢦఆ͠ͳͪ͘Ό͍͚ͳ͍ͨΊɺ Type ʹهࡌग़དྷͳ͍ͨΊɺδΣωϦΫεΛ࢖ͬͯఆٛͨ͠ࡍʹ ៉ྷʹॻ͚ͳ͍෦෼͕ग़ͯ͘Δ !

Slide 35

Slide 35 text

Client Side Join

Slide 36

Slide 36 text

σʔλྫ { "articles" : { "hogeId" : { "title" : "λΠτϧ", "category" : "categoryID_1" } }, "categories" : { "categoryID_1" : { "name": "ήʔϜ" } } }

Slide 37

Slide 37 text

ํ๏ RxSwift ͷ zip Λ༻͍ͯϚʔδ͢Δ

Slide 38

Slide 38 text

݁߹ͷྲྀΕ 1. articles ͱ categories Λฒྻʹऔಘ 2. RxSwift ͷΦϖϨʔλ zip Λ༻͍ͯɺ྆ํͷσʔλΛऔಘ͢Δ 3. ྆σʔλΛ݁߹͢Δ

Slide 39

Slide 39 text

ΞϓϦଆͰͷιʔτ΍ߜΓࠐΈ ެࣜυΩϡϝϯτʹهࡌ͞Ε͍ͯΔ௨Γɺ ΫϥΠΞϯταΠυͰͷιʔτ΍ϑΟϧλϦϯά͸ਪ঑͞Εͯ ͍ͳ͍ ❌

Slide 40

Slide 40 text

ΞϓϦଆͰॲཧग़དྷͳ͍΋ͷ͸ɺ όονͰσʔλΛ༻ҙ͢Δ !

Slide 41

Slide 41 text

࣍͸·ͨϦϦʔεޙʹൃද͠·͢ !