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

Firestoreを知る旅

Aipa
April 03, 2023

 Firestoreを知る旅

このイベントでLTしました。
https://flutter-okinawa.connpass.com/event/273193/

Aipa

April 03, 2023
Tweet

More Decks by Aipa

Other Decks in Technology

Transcript

  1. Flutter Okinawa LT
    #1 ͋ͭ·Εʔʂ
    2023/03/25 aipacommander@ఱٱʹ͋Δձࣾ

    View Slide

  2. ࣗݾ঺հ
    • ΞΠύʔୂ௕ͱ͍͍·͢ (@aipacommander)


    • CBcloudגࣜձࣾͰಇ͍͍ͯ·͢


    • ࠺ͱࢠೋਓͱݘ1ඖͱೣ1ඖͰ΄΅ຖ೔Welcome to Α͏ͦ͜͡ΌͺΓͺʔ͘ࠓ೔΋
    υολϯόολϯେ૽͍͗ͯ͠·͢


    • ʢࠓ͸ʣϑϩϯτΤϯδχΞͰ͢ʂ


    • GitHub CopilotʹڵຯΛ࣋ͪ࢝Ί·ͨ͠


    • VTuberʹͳͬͯ5000ສՔ͍ͩΒ൒೥͙Β͍ٳ৬͍ͨ͠

    View Slide

  3. ࠓ೔࿩͢͜ͱ

    View Slide

  4. ྩ࿨5೥͔Β࢝Ί
    ΔNoSQL
    Firestoreͷ࿩

    View Slide

  5. ઌʹ๻ͷ͜Ε·Ͱͷܦݧ
    • RDB͔͠࢖ͬͨ͜ͱͳ͍


    • Redis͕গʑɻɻɻηογϣϯΩʔͱ͔JobQueueΛ٧ΊΔ͙Β͍


    • DynamoDBʁΫΤϦ͸ୟ͚ΔΑɻԿ΋Θ͔Βͳ͍͚Ͳ


    • ਖ਼نԽʂਖ਼نԽʂʂਖ਼نԽʂʂʂʢͦΜͳܦݧ͕͋ΔΘ͚Ͱ΋ͳ͍͕ʣ


    • JSONܕʁΞϯνύλʔϯͩʂʢ๫࿦ʣ


    • ࣮ࡍ͸ͦ͏Ͱ΋ͳ͘ɺ·͡Ͱਖ਼نԽ͢Δͷ͕Ή͍ͣʂʂͬͯͳͬͨΒར༻͢Δ

    View Slide

  6. ྩ࿨5೥͔Β࢝ΊΔNoSQL
    • ࠷ۙFirebaseʢFirestoreʣΛϓϩδΣΫτʹಋೖ͠·ͨ͠


    • ΧδϡΞϧ͗ͯ͢ා͍


    • ਌ࢦոզ͓ͨ͠͡͞Μͷڭ͕͑ා͍


    • NoSQLΛ࢖ͬͨ݁Ռɺӡ༻Ͱࢮͳͳ͍Α͏ʹզʑ͸ϠϯόϧͷԞ஍
    ΁ͱาΈͩͨ͠ʂ

    View Slide

  7. ਌ࢦոզ͓ͨ͠͡͞Μͷڭ͑
    https://www.youtube.com/watch?v=v_hR4K4auoQ

    View Slide

  8. ਌ࢦոզ͓ͨ͠͡͞Μͷڭ͑ͷ1ྫ
    • Ϩετϥϯ → ϨϏϡʔ → ϨϏϡʔΛ౤ߘͨ͠Ϣʔβʔ৘ใͱ͍͏ؔ܎ͨ͠σʔλΛϞ
    σϦϯά͢Δ৔߹


    • Ϩετϥϯͷதʹ഑ྻͰϨϏϡʔΛ΋ͨͤΔɺϨετϥϯͱϢʔβʔ͸τοϓϨϕϧ
    ͰσʔλΛ࣋ͭʢ؆୯ʹઆ໌͢Δͱอଘ͢Δςʔϒϧʢҧ͏͚Ͳʣ͕ผʣ


    • ϨϏϡʔͷதʹMapʢJSONʣͰϢʔβʔ৘ใΛ΋ͨͤΔʢʁʂʣ


    • σʔλ͕ॏෳ͍ͯ͠ΔΜͰ͕͢ɾɾɾ


    • Cloud FunctionΛ࢖ͬͯ੔߹ੑ͋ΘͤΔͱ͔Ͱ͖Δ͔Βྑ͍ʢʁʂʣ


    • ͋ͱϢʔβʔϓϩϑΟʔϧͱ͔ͦΜͳ͔ΘΒͳ͍Ͱ͠ΐʁʢʁʂʣ

    View Slide

  9. ͋Β͔ͨ৘ใΛݟऴΘͬͨ͋ͱͷ๻ͷؾ࣋ͪ
    ࣗ༝͗͢Δ

    View Slide

  10. ͦ΋ͦ΋ɾɾɾ
    • NoSQLͬͯͳʹʁ


    • Firestoreͬͯͳʹʁ


    • FirestoreͰͰ͖Δ͜ͱɾͰ͖ͳ͍͜ͱͬͯ͋Δͷʁ


    • FirestoreͰσʔλϞσϦϯάͨ͠৔߹ɺϕετϓϥΫςΟεूతͳ͜
    ͱ͕஌Γ͍ͨ

    View Slide

  11. FirestoreΛ஌Δཱྀ

    View Slide

  12. FirestoreΛ஌Δཱྀ
    • ྉۚϓϥϯ


    • Ϋϥ΢υαʔϏεैྔ՝੍ۚ͸ഁ࢈͕ා͍


    • Ωϟογϡ


    • ຖճΞΫηε͢Δͱͦͷ౓՝ۚ͞ΕΔͷͰΩϟογϡΛ࢖͍͍ͨ


    • ςετ


    • CI/CD૸ΒͤΔͨͼʹ՝ۚ͞ΕΔͷʁͳΜ͔ݏ


    • ݕࡧ


    • ͍͋·͍ݕࡧ(LIKE)͸Ͱ͖ͳ͍ → !?


    • ू໿ؔ਺͕଍Γͳ͍


    • ORݕࡧͰ͖ͳ͍ → !?

    View Slide

  13. ྉۚϓϥϯ
    • ࢥ͍ͷ֎͍҆ɻԼه;ͨͭͷϖʔδͰ֓ͶࢼࢉͰ͖Δ


    • ྉۚϓϥϯ


    • ՝ۚͷྫ


    • Firestore͸อଘ͢Δσʔλྔͷແྉ࿮͸1GBͳͷͰɺ͙͢౸ୡͦ͠͏


    • ಡΈࠐΈ̑ສ݅/೔ɺॻ͖ࠐΈ2ສ݅/೔ແྉ͸ͱͯ΋ྑ͍

    View Slide

  14. Ωϟογϡ
    • Firebase SDKͳΔ΋ͷ͕͋Δɻ͍ͦͭΛ࢖͏ͱΩϟογϡΛѻ͑Δ
    ʢJavaScript Onlyʣ


    • த਎͸IndexedDB


    • IndexedDB API


    • ಉ͡ΫΤϦ͸1౓ୟ͘ͱΩϟογϡ͞ΕΔ


    • ϦΞϧλΠϜͷ৔߹͸ɺ௥Ճɾߋ৽ɾ࡟আ෼͸push͞ΕΔʢͱΜͰ͘Δʣ

    View Slide

  15. ςετ
    • CIͷͨͼʹΫϥ΢υୟ͘ͷ͸Α͘ͳ͍ʢ՝ۚ͞ΕΔʣ


    • Firebase Local Emulator Suite ͕͋Δ


    • JavaʢʁʂʣΛೖΕͨΒϩʔΧϧͰFirestoreͳͲ্ཱ͕͕ͪΔ


    • ͍ͭ͜Λ࢖ͬͯςετΛॻ͘


    • ΋ͪΖΜϩʔΧϧͰͷಈ࡞ݕূ΋ར༻Ͱ͖·͢


    • ؀ڥม਺ͱ࿈ܞͯ͠ɺΤϛϡϨʔλʔʹ੾Γସ͑ΔΑ͏ʹ͢Δͱ͔΋Ͱ͖Δ

    View Slide

  16. ݕࡧ
    • ͍͋·͍ݕࡧ͕Ͱ͖ͳ͍


    • ݫີʹ͸લํҰக͸Ͱ͖Δ͚ͲɺจࣈίʔυΛߟ্ྀͨ͠ͷݕࡧʹͳΔͷͰΊΜͲͦ͘͞͏


    • ू໿ؔ਺͕ऑ͍


    • Count͸Ͱ͖ͨ


    • Maxͱ͔Minͱ͔ͳ͍


    • ϑϩϯτΤϯυͰ͕Μ͹Δ


    • ORݕࡧ͕Ͱ͖ͳ͍


    • ·͔͡Α


    • TipsΛ࢖͏ͱ͍͚Δʢin, array-contains-anyʣ


    • Ͱ΋ɺOR৚݅ͷΩʔϫʔυ10ݸ·Ͱͱ͍͏੍ݶ͕͋Δ


    • ݕࡧ͸RDBͰΑ͋͘ΔϕʔγοΫͳݕࡧ΋ؚΊͯɺElasticSearchͳͲͷ֎෦ͷݕࡧΤϯδϯΛར༻͢Δͷ͕٢ͩͱࢥ͍·͢

    View Slide

  17. ݁࿦
    • Firestore͕ͪΐͬͱΘ͔ͬͨ


    • NoSQLͱ͍͏͔σʔλϕʔεͷΤϯδϯपΓͷ

    ΞʔΩςΫνϟΛ΋ͬͱ஌Γͨ͘ͳͬͨ


    • σʔλϞσϦϯάʹ͍ͭͯ΋ͬͱษڧ

    ͨ͘͠ͳͬͨ


    • ؾʹͳΔ͜ͱ͕ଟ͗ͯ͢VTuber΁ͷ

    ເ͕ԕ͘ɾɾɾɾɾ
    https://seiga.nicovideo.jp/seiga/im2331760

    View Slide

  18. ࢀߟURL&ࢀߟॻ੶
    • FirestoreυΩϡϝϯτ


    • matope/NoSQLσʔλϞσϦϯάٕ๏.markdown


    • NOSQLͷجૅ஌ࣝ (ϏοάσʔλΛ׆͔͢σʔλϕʔεٕज़)


    • ΠϛϡʔλϒϧσʔλϞσϦϯά


    • WEB+DB PRESS Vol.130

    View Slide