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

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

syamaoka
October 20, 2017

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

iOSDC 2017 Reject Conference days2

syamaoka

October 20, 2017
Tweet

More Decks by syamaoka

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ ໊લɿ ࢁԬ ਅ໵ ( syamaoka ) झຯɿ ɾ MoBA

    : VainGlory ୲౰ɿ ɾ iOS, όοΫΤϯυ
  2. ஫ҙ ⚠ ͜ͷൃද͸ Firebase Realtime Database 8ׂ, iOS 2ׂͷߏ੒Ͱ ͢

    iOS͕ςʔϚͰ͕͢ɺ ࠓճ͸ Realtime Database (ҎԼRTDB) ʹ͍ͭͯͲΜͲΜޠͬ ͍͖ͯ·͢ʂ
  3. ୲౰தαʔϏεͰꙍ ֵአͭͼ͚Ρ䱛ᚆ • Realtime Database <- ͜͜த৺!ʢFirestore ࢖͍͍ͨ"ʣ • Remote

    Config • Firebase Authentication • Analytics • App Indexing • Firebase Performance Monitoring
  4. ΞδΣϯμ • API -> RTDB • Client Side Join •

    RTDB ͷ௨৴ྔ֬ೝํ๏ • API, RTDB, Firestore ͷൺֱ
  5. RTDB ͷ৔߹ let articleId: String // primary key let categoryId:

    String // foreign key let title: String // ͦͷଞͷϑΟʔϧυ { "articles" : { "articleId1" : { "title" : "λΠτϧ", "category" : "categoryId1" } }, "categories" : { "categoryId1" : { "name": "ήʔϜ" } } }
  6. RTDB ͷ৔߹ let articleId: String // primary key let categoryId:

    String // foreign key let title: String // ͦͷଞͷϑΟʔϧυ { "articles" : { "articleId1" : { "title" : "λΠτϧ", "category" : "categoryId1" <- ͜Ε͕ category Ͱ͋Δͱ͍͏อূ͸ग़དྷͳ͍ ! } }, "categories" : { "categoryId1" : { "name": "ήʔϜ" } } }
  7. Firestore ͷ৔߹ let articleId: String // primary key let categoryId:

    DocumentReference // foreign key let title: String // ͦͷଞͷϑΟʔϧυ
  8. RTDB { "articles" : { "hogeId" : { "title" :

    "λΠτϧ", "category" : "categoryID_1" } }, "categories" : { "categoryID_1" : { "name": "ήʔϜ" } } }
  9. ݁߹ͷྲྀΕ 1. articles ͱ categories ͷ Observable Λ༻ҙ 2. RxSwift

    ΦϖϨʔλ zip Λར༻ Observable.zip(articles, categories)ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ 1. ྆σʔλΛ݁߹͠ɺม׵ॲཧΛ͔͚Δ Observable.zip(articles, categories) {($0, $1)}.map(Translator())
  10. ํ๏ 3ͭ • Xcode Ͱ௨৴ྔΛݟΔ • Charles Ͱ௨৴ྔΛݟΔ • Firebase

    CLI ͷ profile Ͱ௨৴ྔΛݟΔ <- ͜͜ͷ͓࿩Λ͠· ͢
  11. ࢖͍ํ 1. https://firebase.google.com/docs/cli/?hl=ja ͷಋೖखॱʹै ͏ 2. iPhone γϛϡϨʔλΛ্ཱͪ͛Δ 3. firebase

    database:profile --project {ϓϩδΣΫτID} Λ λʔϛφϧͰ࣮ߦ 4. iPhone γϛϡϨʔλͰܭଌ͍ͨ͠खॱͰಈ͔͢
  12. Firestore ͕༏Ε͍ͯΔ఺ • API ͷ։ൃ͕ෆཁ • RTDB ͱൺ΂ͯ ΦϑϥΠϯରԠָ͕ •

    RTDB ͱൺ΂ͯ order, query ͕༏Ε͍ͯΔ • ࠓޙͲΜͲΜ৽͍͠ػೳ͕௥Ճ͞Ε͍ͯ͘༧ఆ • ՝ۚϞσϧ͕௨৴ྔͰ͸ͳ͘ɺࢀরճ਺ͳͷͰઅ໿͠΍͍͢
  13. Firestore ͕༏Ε͍ͯΔ఺ • API ͷ։ൃ͕ෆཁ • RTDB ͱൺ΂ͯ ΦϑϥΠϯରԠָ͕ •

    RTDB ͱൺ΂ͯ order, query ͕༏Ε͍ͯΔ • ࠓޙͲΜͲΜ৽͍͠ػೳ͕௥Ճ͞Ε͍ͯ͘༧ఆ • ՝ۚϞσϧ͕௨৴ྔͰ͸ͳ͘ɺࢀরճ਺ͳͷͰઅ໿͠΍͍͢ ....( RTDB ͱൺֱ͍͍ͯ͠ॴ͸ଞʹ΋͋Δ ! )
  14. ·ͱΊ • RTDB ͸ૉ੖Β͍͠ɻͨͩɺFirestore ͸΋ͬͱૉ੖Β͍͠ ! • σʔλͷ݁߹ΛΞϓϦଆͰߦ͏࣌͸ RxSwift ͷ

    zip Λ࢖͏ͱ ؆୯ʹ࣮૷͕Մೳ • API -> RTDB, Firestore ΁ͷҠߦ͸ߟྀ͢Δ఺͕ͱͯ΋ଟ͍ ʢಛʹඅ༻໘ʣͷͰɺ Ҡߦ͢Δࡍ͸ྉۚͱ޻਺ͷݟੵ΋ΓΛೖ೦ʹߦ͍·͠ΐ͏ ʢռΊʣ