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
API を Firebase Realtime Database に移行して気付いたこと
Search
syamaoka
August 28, 2017
Technology
1
770
API を Firebase Realtime Database に移行して気付いたこと
syamaoka
August 28, 2017
Tweet
Share
More Decks by syamaoka
See All by syamaoka
API を Firebase Realtime Database に移行して気付いたこと ver2
bpyamasinn
1
500
Other Decks in Technology
See All in Technology
What's new in Go 1.24?
ciarana
1
110
脳波を用いた嗜好マッチングシステム
hokkey621
0
280
日経のデータベース事業とElasticsearch
hinatades
PRO
0
210
クラウドサービス事業者におけるOSS
tagomoris
4
1k
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
160
JavaにおけるNull非許容性
skrb
2
2.5k
スキルだけでは満たせない、 “組織全体に”なじむオンボーディング/Onboarding that fits “throughout the organization” and cannot be satisfied by skills alone
bitkey
0
160
短縮URLをお手軽に導入しよう
nakasho
0
140
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
230
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
7
620
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
480
Two Blades, One Journey: Engineering While Managing
ohbarye
4
1.8k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Embracing the Ebb and Flow
colly
84
4.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Designing for Performance
lara
604
68k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Fireside Chat
paigeccino
34
3.2k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
The Language of Interfaces
destraynor
156
24k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
Transcript
API Λ Firebase Realtime Database ʹҠߦͯ͠ؾ͍ͨ͜ͱ 2017/08/28 syamaoka GCPUG Firebase
Realtime Database /meetup/1
ࣗݾհ ໊લɿ ࢁԬ ਅ (syamaoka) झຯɿ ɾ MMO RPG ɾ
PC : Tales Weaver ɾ Mobile : Lineage 2 Revolution ɾ MoBA : VainGlory ୲ɿ ɾ iOS, όοΫΤϯυ (API, Batch)
୲தαʔϏεͰꙍ ֵአͭͼ͚Ρ䱛ᚆ • Realtime Database • Remote Config • Firebase
Authentication • Analytics • App Indexing • Firebase Performance Monitoring
୲தαʔϏεͰꙍ ֵአͭͼ͚Ρ䱛ᚆ • Realtime Database <- ࠓ͜͜Λத৺ʹ͠·͢ ! • Remote
Config • Firebase Authentication • Analytics • App Indexing • Firebase Performance Monitoring
ΞδΣϯμ • API -> Firebase Realtime Database • ΞϓϦଆͷ࣮ •
ηΩϡϦςΟϧʔϧʹ͍ͭͯ
Firebase ʹٻΊ͍ͯΔ͜ͱ • API ࡞ͷܰݮ • ύϑΥʔϚϯενϡʔχϯά͔Βͷ٫ • ΦϑϥΠϯ࣌ͷσʔλͷѻ͍͢͞ʢॲཧͷ؆୯͞ʣ
API -> Firebase Realtime Database
Ұ൪ࠔͬͨʢࠓෆ҆ʣͷɺ ߹ੑ !
݁
ΞϓϦέʔγϣϯίʔυΛ৴͡ΔʢఘΊʣ Firebase RDB Ͱͳ͍ͨΊɺ֎෦Ωʔ੍͕ͳ͍ɻ ͦͷͨΊɺ݁߹͕ඞཁͳՕॴొ͢ΔࡍʹίʔυͰ֬ೝɻ εΩʔϚϨε(Ұ؏ੑ͕ͳ͍)Ͱɺ݁߹͖͔͢൱͔Λஅ͠ɺ ࠷దͳઃܭΛ͍ͯ͘͠ͷ͕ॏཁɻ ! ΤϯδχΞͷͷݟͤॴ
!
ιʔτͷಛ • ΩʔΛࢦఆͯ͠ঢॱͰऔಘ • ฦ٫͢Δσʔλͷॱ൪อূ͍ͯ͠ͳ͍
ιʔτͷಛ • ΩʔΛࢦఆͯ͠ঢॱͰऔಘ • ฦ٫͢Δσʔλͷॱ൪อূ͍ͯ͠ͳ͍
ฦ٫͢Δσʔλͷॱ൪อূ͍ͯ͠ͳ͍ ྫ͑ created_at Ͱιʔτ͠ɺ ࠷৽σʔλΛ 10 ݅औಘͨ࣌͠ɺ ฦ٫͞ΕΔσʔλ࠷৽σʔλͷ 10 ͕݅ͩɺ
ฦ٫͞ΕΔ JSON ͷฒͼॱอূ͞Ε͍ͯͳ͍
None
Q. ͭ·ΓΞϓϦଆͲ͏͢Ε͍͍ʁ A. ฦ٫͞ΕͨΛιʔτ͢͠ɻ
߱ॱʹ͢Δʹʁ • created_at Λ - ͷʹͯ͠ɺ߱ॱʹͳΔ key Λੜ https://stackoverflow.com/questions/34156996/firebase- data-desc-sorting-in-android/42572025#42572025
• શ݅औಘͯ͠ΞϓϦଆͰ߱ॱʹฒͼସ͑Δ • QueryLastTo Λͬͯ࠷ޙͷσʔλ͔Βऔಘ͢Δ
ϩδοΫॱʹ͢Δʹʁ ϩδοΫʹΑΔฒͼॱɺ Firebase Realtime Database ͚ͩͰ͍͠ɻ
ιʔτ༻ͷσʔλΛ࡞ { "articleOrders": { "articleId1": 1, "articleId2": 2 } }
ϝϦοτ • ࠷খݶͷࢀর • ΞϓϦͷมߋͳ͠ʹཪଆͰॱ൪Λมߋग़དྷΔ ※ articles ͷதʹ order Λ༻ҙͨ͠߹ɺarticles
શͯΛಡ ΈࠐΉඞཁ͕͋ΓɺύϑΥʔϚϯε͕ѱ͍ ❌
σϝϦοτ • ߋ৽ִ͕ؒ͘ग़དྷͳ͍ • ̍࣌ؒຖʹߋ৽ͱ͔Ͱ͋Εେৎ͕ͩɺ5ຖͱ͔ͩͱ ͖ͬͱݫ͍͠ • ܭࢉରͷσʔλྔʹݶք͕͋Δ
Cloud Function ͱ͍ ͚Α͏ !
Rule ʹ͍ͭͯ
Rule େମҎԼͷ̐ͭ • Read and Write • Type • Require
• index
ܕͷࢦఆํ๏ { "article": { "title": { ".validate": "newData.isString()" }, "visible":
{ ".validate": "newData.isBoolean()" } } }
ඞਢύϥϝʔλͷࢦఆํ๏ { "article": { ".validate": "newData.hasChildren(['title','visible'])" } }
Index ͷࢦఆํ๏ { "article": { ".indexOn": [ "title" ] }
}
γϛϡϨʔλ͕͍͢͝ศར !
Demo
͔͠͠ɺ͜ΕΛखೖྗͰ શ෦ཧ͢Δͷେม !
None
⚠ 8/28 ࣌ β ver
Demo
ઃఆϑΝΠϧ https://gist.github.com/bpyamasinn/ c1f62153f0bea8a499c111f4f30c8546
Index ͷઃఆ͚ͩগ͔͍ͬ͠ Index Path Ͱࢦఆ͠ͳͪ͘Ό͍͚ͳ͍ͨΊɺ Type ʹهࡌग़དྷͳ͍ͨΊɺδΣωϦΫεΛͬͯఆٛͨ͠ࡍʹ ៉ྷʹॻ͚ͳ͍෦͕ग़ͯ͘Δ !
Client Side Join
σʔλྫ { "articles" : { "hogeId" : { "title" :
"λΠτϧ", "category" : "categoryID_1" } }, "categories" : { "categoryID_1" : { "name": "ήʔϜ" } } }
ํ๏ RxSwift ͷ zip Λ༻͍ͯϚʔδ͢Δ
݁߹ͷྲྀΕ 1. articles ͱ categories Λฒྻʹऔಘ 2. RxSwift ͷΦϖϨʔλ zip
Λ༻͍ͯɺ྆ํͷσʔλΛऔಘ͢Δ 3. ྆σʔλΛ݁߹͢Δ
ΞϓϦଆͰͷιʔτߜΓࠐΈ ެࣜυΩϡϝϯτʹهࡌ͞Ε͍ͯΔ௨Γɺ ΫϥΠΞϯταΠυͰͷιʔτϑΟϧλϦϯάਪ͞Εͯ ͍ͳ͍ ❌
ΞϓϦଆͰॲཧग़དྷͳ͍ͷɺ όονͰσʔλΛ༻ҙ͢Δ !
࣍·ͨϦϦʔεޙʹൃද͠·͢ !