Upgrade to Pro — share decks privately, control downloads, hide ads and more …

API を Firebase Realtime Database に移行して気付いたこと

syamaoka
August 28, 2017

API を Firebase Realtime Database に移行して気付いたこと

syamaoka

August 28, 2017
Tweet

More Decks by syamaoka

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. API -> Firebase
    Realtime Database

    View Slide

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

    View Slide

  9. ݁࿦

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. Cloud Function ͱ࢖͍
    ෼͚Α͏ !

    View Slide

  22. Rule ʹ͍ͭͯ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. Demo

    View Slide

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

    View Slide

  30. View Slide

  31. ⚠ 8/28 ࣌఺ β ver

    View Slide

  32. Demo

    View Slide

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

    View Slide

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

    View Slide

  35. Client Side Join

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide