Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
࣍·ͨϦϦʔεޙʹൃද͠·͢ !