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
800
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
510
Other Decks in Technology
See All in Technology
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
150
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
100
AI駆動開発を事業のコアに置く
tasukuonizawa
1
360
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
380
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
400
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
2
3.1k
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
570
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
140
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
600
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
99
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The untapped power of vector embeddings
frankvandijk
1
1.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
From π to Pie charts
rasagy
0
130
Building Applications with DynamoDB
mza
96
6.9k
The agentic SEO stack - context over prompts
schlessera
0
650
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
Making the Leap to Tech Lead
cromwellryan
135
9.7k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
94
エンジニアに許された特別な時間の終わり
watany
106
230k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
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. ྆σʔλΛ݁߹͢Δ
ΞϓϦଆͰͷιʔτߜΓࠐΈ ެࣜυΩϡϝϯτʹهࡌ͞Ε͍ͯΔ௨Γɺ ΫϥΠΞϯταΠυͰͷιʔτϑΟϧλϦϯάਪ͞Εͯ ͍ͳ͍ ❌
ΞϓϦଆͰॲཧग़དྷͳ͍ͷɺ όονͰσʔλΛ༻ҙ͢Δ !
࣍·ͨϦϦʔεޙʹൃද͠·͢ !