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
今日から始めるFirestoreのテスト
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
oliver
August 24, 2019
Programming
2
12k
今日から始めるFirestoreのテスト
「Firebase Hands-on @BEENOS」にて登壇した発表資料です。
https://firebase-community.connpass.com/event/140369/
oliver
August 24, 2019
Tweet
Share
More Decks by oliver
See All by oliver
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
1.5k
Cacheable Presigned URL with Cloudflare Workers
oliver_diary
2
8.6k
テキストエディタのブラウザ実装 / tokyo_study
oliver_diary
0
340
迫り来る絶望的状況からの脱却物語 / #CEDEC2021
oliver_diary
7
17k
PWAとクラウドゲーミングの現状そしてPWAとOOParts
oliver_diary
3
12k
OOPartsによるPWA事例紹介
oliver_diary
2
10k
クラウドゲーミング最新開発事例 - #CEDEC2020
oliver_diary
6
18k
クラウドゲーミング時代のPWA
oliver_diary
0
13k
OOPartsが切り開く クラウドゲーミング ✖︎ PWA
oliver_diary
4
17k
Other Decks in Programming
See All in Programming
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
790
SourceGeneratorのススメ
htkym
0
200
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
高速開発のためのコード整理術
sutetotanuki
1
410
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
140
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
Raku Raku Notion 20260128
hareyakayuruyaka
0
360
Featured
See All Featured
New Earth Scene 8
popppiees
1
1.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
WENDY [Excerpt]
tessaabrams
9
36k
エンジニアに許された特別な時間の終わり
watany
106
230k
KATA
mclloyd
PRO
34
15k
Side Projects
sachag
455
43k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
Amusing Abliteration
ianozsvald
0
100
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
We Have a Design System, Now What?
morganepeng
54
8k
Between Models and Reality
mayunak
1
190
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
Transcript
ࠓ͔Β࢝ΊΔFirestoreͷςετ ͓Γʔʢ@oliver_diaryʣ
ࣗݾհ
ࣗݾհ # Daiki Minakawa ( @oliver_diary ) - ৽ଔ1 -
ݸਓͰRailsͬͯͨΓ ৬ͰElm৮ͬͯͨΓ - αʔόʔαΠυϝΠϯ͕ͩͬͨͣ࠷ۙͰϑϩϯτΛ৮Δ͜ͱ͕ଟ͍… - झຯΧϝϥͱԻήʔͱΞχϝ
ͲΜͳ͜ͱ͢ʁ • Firestoreʹ͍ͭͯͬ͟ͱ • FirestoreΛͬͨҰྫ • FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • CircleCIͰςετΛճͦ͏ʂ •
͓ΘΓʹ
Firestoreʹ͍ͭͯͬ͟ͱ
Firestoreʹ͍ͭͯͬ͟ͱ • ެࣜʹʮRealtime Database ΑΓଟ࠼ͰߴͳΫΤϦͱߴੑೳͳε έʔϦϯά͕ಛʯͱॻ͔Ε͍ͯΔ • https://firebase.google.com/docs/database/rtdb-vs-firestore • ཁ͢Δʹʮ͛͢ʔ͍͘͢ʯͯʮ͛͢ʔߴʯͰʮ͛͢ʔεέʔϦϯά
͢ΔʯNoSQLσʔλϕʔε • σʔλϞσϧͱͯ͠ʮσʔλΛυΩϡϝϯτͷίϨΫγϣϯͱͯ͠อ ଘʯ͍ͯ͠Δ
FirestoreΛͬͨҰྫ
FirestoreΛͬͨҰྫ • Έͳ͞ΜFirestoreΛͬͨ͜ͱ͋Γ·͔͢ʁ • ͬͨ͜ͱ͕͋ΔͷͰ͋ΕɺςετΛॻ͍ͨ͜ͱ͋Γ·͢ ͔ʁ
FirestoreΛͬͨҰྫ • Ұྫ • UserίϨΫγϣϯ͕ଘࡏ͠ɺΞΧϯτొ࣌ʹυΩϡϝ ϯτʹEmailͱName͕ɺͦΕͧΕ࠷খ4จࣈɺ࠷େ256จ ࣈͰอଘ͞ΕΔ • ͦͷ༷ͰA͞Μ͕·ͣRuleΛॻ͍ͨ
FirestoreΛͬͨҰྫ • Rules of A͞Μ • A͞Μ͕هड़ͨ͠Rule (ࡉ͔͍෦ࠓճؾʹ͠ͳ͍)
FirestoreΛͬͨҰྫ • Ұྫ • ޙ͔ΒNameΛ࠷খ4จࣈɺ࠷େ16จࣈʹ͍ͨ͠ͱ͍͏ཁ ͕͖ͨ • B͞Μ͕Ҿ͖ܧ͍ͰRuleΛߋ৽ͨ͠
FirestoreΛͬͨҰྫ • Rules of B͞Μ • B͞Μ͕มߋͨ͠Rule (validateStringͷதΛมߋ)
FirestoreΛͬͨҰྫ • ͪΖΜ͜ΕͩͱɺEmailͷจࣈ্ݶ·Ͱ16จࣈʹͳͬͯ ͠·͍ɺ͜ͷঢ়ଶͰϦϦʔε͞ΕͨΒେมͳ͜ͱʹ • ݩͷRuleΛॻ͍ͨA͞Μ͕ѱ͍ͷ͔ʁ • ͦΕͱΑ͘νΣοΫΛͯ͠ͳ͔ͬͨB͞Μ͕ѱ͍ͷ͔ʁ
FirestoreΛͬͨҰྫ • ίʔυͷྑ͠ѱ͠ͱ͔͘ͱͯ͠ɺ ςετΛॻ͍͓͚ͯɺ࠷ѱͳঢ়ଶʢόά͕ଘࡏͨ͠ঢ়ଶʣ ͰͷϦϦʔεආ͚ΒΕͨͣ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • FirestoreͷςετϩʔΧϧʹΤϛϡϨʔλΛཱͯͯςετͰ͖Δʂ • ͳͷͰɺผ్FirestoreͷϓϩδΣΫτΛ࡞Δඞཁͳ͠ʂ • ΈΜͳผʑͷΤϛϡϨʔλΛར༻͢ΔͷͰɺςετ͕յΕΔ͜ͱͳ ͠ʂ • CIͰςετ͕؆୯ʹͰ͖ΔʂʢޙʑͷষͰʣ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • લ४උͱͯ͠ɺfirebase-toolsͱemulatorͷΠϯετʔϧɾى ಈΛ͓ͤͯ͘͞ • npm i firebase-tools --save •
node_modules/.bin/firebase setup:emulators:firestore • node_modules/.bin/firebase serve --only firestore • ΤϛϡϨʔλͷىಈ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • npm i mocha --save • test༻ͷϥΠϒϥϦΛՃ • npm
i @firebase/testing --save • FirebaseΛͬͨςετΛॻ͘ͱ͖ʹඞཁ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • A͞Μͷfirestore.rules ϑΝΠϧ Λ࡞
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • ςετΛ test/test.js ʹهड़͍ͯ͘͠
• A͞Μͷ࣮࣌Ͱͷςετέʔε FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
• A͞Μͷ࣮࣌Ͱͷςετέʔε FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
• ςετ࣮ߦʂ FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • B͞Μͷfirestore.rules ϑΝΠϧ Λ࡞
• B͞Μͷ࣮࣌Ͱͷςετέʔε FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
• ςετ࣮ߦʂ FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ • ςετ͕མͪͨͷͰɺਖ਼͍͠firestore.rules Λهड़͍ͯ͘͠ • ͬͱ͍͍Ruleͷॻ͖ํɺEmailͷࡉ͔͍ όϦσʔγϣϯͱ͔Ұ୴ແࢹͰ
• ςετ࣮ߦʂ FirestoreͷςετΛॻ͍ͯΈΑ͏ʂ
CircleCIͰςετΛճͦ͏ʂ
CircleCIͰςετΛճͦ͏ʂ • ϩʔΧϧͰΤϛϡϨʔλΛཱͯͯςετΛ͖ͯͨͬͯ͜͠ͱ ɺCIͰ͑Δͣ…! • ͱ͍͏͜ͱͰɺCircleCIͰಈ͔ͯ͠ΈΑ͏ʂ • ؆୯ʹͰ͖ΔͷͰɺίʔυ͚ͩͬ͟ͱઆ໌͠·͢
CircleCIͰςετΛճͦ͏ʂ • Ωϟογϡઓུͱ͔Կͯ͠ͳ͍ ͚Ͳڐͯ͠ • ಛච͖͢ɺΤϛϡϨʔλʹ java͕ඞཁͳͷͰimageʹ Λࢦఆͯ͠Δ͘Β͍Ͱ͢ circleci/openjdk:stretch-node-browsers-legacy
͓ΘΓʹ
͓ΘΓʹ • Firestore؆୯ʹ࣮Ͱ͖ɺ؆୯ʹར༻Ͱ͖Δ໘ɺ͔ͬ͠Γͱ RuleΛॻ͔ͳ͚Εɺσʔλ͕յΕͯ͠·͏͜ͱΛೝࣝ͠ͳ͍ͱ ͍͚ͳ͍ • ͜ͷεϥΠυͰհ͖͠Εͳ͔ͬͨFirestoreͷػೳͨ͘͞Μ͋ Γ·͕͢ɺ·ͨػձ͕͋Ε͝հ͍ͨ͠ͱࢥ͍·͢ ʢFieldValueͱ͔Firebase AuthͷCustomClaimͱͷ࿈ܞͱ͔…ʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠