Slide 1

Slide 1 text

'JSFCBTFͰͭ͘ΔJ04ΞϓϦ 0UFNBDIJTXJGU !@NPHBNJOH

Slide 2

Slide 2 text

  ͜ͷࢿྉʹ͍ͭͯ ձ৔ʹ߹ΘͤͯɿͰ࡞͍ͬͯ·͢

Slide 3

Slide 3 text

w !@NPHBNJOHŹŜƄŶƃ w "QQMJDBUJPO&OHJOFFS!%F/"  J04 4XJGU "OESPJE ,PUMJO   3BJMT5ZQF4DSJQU(SBQI2-  'JSFCBTF ($1 "84 w αʔϏε࡞Δͷେ޷͖   "CPVU.F

Slide 4

Slide 4 text

  'JSFCBTF 'JSFCBTF࢖ͬͯ·͔͢

Slide 5

Slide 5 text

  'JSFCBTFͱ͸ Πϯϑϥ؅ཧෆཁͳ .PCJMF#BDLFOEBTB4FSWJDF N#BB4

Slide 6

Slide 6 text

  'JSFCBTFͱ͸ ӡ༻අΛ͋·Γ͔͚ͣʹ όοΫΤϯυͰ΍Γ͍ͨ͜ͱ͕ ͍͍ͩͨͰ͖Δศརͳ΍ͭ ένͳ΅͘ʻ

Slide 7

Slide 7 text

  'JSFCBTF Կ͕Ͱ͖Δͷʁ

Slide 8

Slide 8 text

w ೝূʢ"VUIFOUJDBUJPOʣ w σʔλอଘʢ'JSFTUPSFʣ w 8FC"1*'BB4ʢ$MPVE'VODUJPOTʣ w ϓογϡ௨஌ʢ$MPVE.FTTBHJOHʣ w 6OJWFSTBM-JOLTʢ%ZOBNJD-JOLTʣ   'JSFCBTFͰͰ͖Δ͜ͱʢҰ෦ʣ ͳͲͳͲ

Slide 9

Slide 9 text

  'JSFCBTFͷ׆༻ࣄྫ ࣮ࡍʹ'JSFCBTFΛ׆༻͍ͯ͠Δ αʔϏε͕͍͟͝·ͯ͠ʜ

Slide 10

Slide 10 text

֣։֥֍ EJGEMC ෳ਺ਓͰڞ༗Ͱ͖Δ νΣοΫϦετΞϓϦ

Slide 11

Slide 11 text

Ո଒Ͱʂ ίϛϡχέʔγϣϯ΋ ϥΫϥΫʂ

Slide 12

Slide 12 text

  DIFDLBͷը໘આ໌ νΣοΫϦετͷάϧʔϐϯά νΣοΫϦετ

Slide 13

Slide 13 text

  DIFDLB ͜ͷΞϓϦͰͷར༻ํ๏΋ࠞ͑ͯ͡ 'JSFCBTFΛͲͷΑ͏ʹ׆༻ͯ͠ ΞϓϦΛ࡞͍ͬͯ͘ͷ͔Λ͓࿩͠·͢

Slide 14

Slide 14 text

 σʔλอଘʢ'JSFTUPSFʣ  ೝূʢ"VUIFOUJDBUJPOʣ   ࠓճ঺հ͢Δػೳ

Slide 15

Slide 15 text

ಋೖ

Slide 16

Slide 16 text

  ಋೖํ๏ $PDPB1PETʹΑΔ؅ཧ pod 'Firebase/Core'

Slide 17

Slide 17 text

  4%,ͷॳظԽ import Firebase FirebaseApp.configure()

Slide 18

Slide 18 text

σʔλอଘ 'JSFCBTF'JSFTUPSF

Slide 19

Slide 19 text

  ಋೖํ๏ pod 'Firebase/Firestore'

Slide 20

Slide 20 text

w /P42-σʔλϕʔε  εΩʔϚϨε  .POHP%# %ZOBNP%#ͳͲ w ؆୯ͳΫΤϦɺτϥϯβΫγϣϯ͕࢖͑Δ w εέʔϥϒϧɺ௿ίετ  3FBE8SJUFͷྔʹԠͯ͡՝ۚ   ݅ಡΈऔΓͰ͘Β͍ʢ ݅೔͸ແྉʣ   'JSFCBTF'JSFTUPSFͱ͸ https://firebase.google.com/docs/firestore/?hl=ja

Slide 21

Slide 21 text

  $PMMFDUJPOͱ%PDVNFOU w $PMMFDUJPO  3%#Ͱ͍͏5BCMF  ೚ҙͷ਺ͷ%PDVNFOUΛ࣋ͭ w %PDVNFOU  3%#Ͱ͍͏3FDPSE  $PMMFDUJPOʹඞͣଐ͢Δ

Slide 22

Slide 22 text

  'JSFTUPSFͷσʔλߏ଄ ڊେͳͭͷ+40/͕ͭͷ%BUBCBTF Έ͍ͨͳΠϝʔδ

Slide 23

Slide 23 text

  +40/ͷΠϝʔδ { "users": { "user1": { "name": "΋͕", "posts": { "post1": { "title": "ݽߴͷiOSΤϯδχΞ" } } }, "user2": { "name": "Ί͕Ͷ", "posts": { "post1": { "title": "ਖ਼͍͠ϝΨωͷ১͖ํ" } } } } } υΩϡϝϯτ ίϨΫγϣϯ

Slide 24

Slide 24 text

  'JSFTUPSF΁ͷॻ͖ࠐΈ import FirebaseFirestore Firestore.firestore() .collection("users") // ίϨΫγϣϯ໊ .document() // υΩϡϝϯτ .setData(["name": "moga"]) { error in // error handling }

Slide 25

Slide 25 text

  'JSFTUPSF͔ΒͷίϨΫγϣϯಡΈऔΓ import FirebaseFirestore Firestore.firestore() .collection("users") .whereField("age", isEqualTo: 20) // where .getDocuments { snapshot, error in let users = snapshot!.documents.map { $0.data() } users // ϢʔβʔҰཡऔಘ [[String: Any]] }

Slide 26

Slide 26 text

  'JSFTUPSF΁ͷϦΞϧλΠϜมߋ௨஌ import FirebaseFirestore Firestore.firestore() .collection("users") .addSnapshotListener { snapshot, error in let users = snapshot!.documents.map { $0.data() } // มߋ͕͋Δͨͼʹݺ͹ΕΔ } DIFDLBͰ͸͜͜Ͱड͚औͬͨ಺༰Λ ࠩ෼ߋ৽ϥΠϒϥϦʹͿΜ౤͍͛ͯ·͢

Slide 27

Slide 27 text

σʔλߏ଄ྫ #PBSE 5BTL (SPVQ

Slide 28

Slide 28 text

  σʔλߏ଄ྫɿ3%# Groups Boards Tasks σʔλ֊૚͸ฒྻ 5BCMF 5BCMF 5BCMF +0*/ +0*/

Slide 29

Slide 29 text

w 'JSFTUPSF্Ͱͷ+0*/͕Ͱ͖ͳ͍  $MJFOU4JEF+PJO·ͨ͸3FBE༻σʔλͷ༻ҙͰରԠ͢Δ  ʢ/P42-͸ͦ͏͍͏΋ͷʣ w σʔλߏ଄ͷઃܭʹ׳Ε͕ඞཁ  3%#ͷৗࣝ͸ࣺͯΔඞཁ͕͋Δ w ΫΤϦ੍͕ݶ͞Ε͍ͯΔ  03͕࢖͑ͳ͍ɺ͕࢖͑ͳ͍   'JSFTUPSFͰ஫ҙ͍ͨ͜͠ͱ

Slide 30

Slide 30 text

  σʔλߏ଄ྫɿ'JSFTUPSF Group1 Board1 Task1 σʔλ֊૚ʹ͸਌ࢠؔ܎Λ΋ͨͤΔ 3%#.4ͷΑ͏ʹߏ଄Λฒྻʹ͢Δ͜ͱ΋Ͱ͖Δ͕ σʔλ3FBEͷύϑΥʔϚϯεͱηΩϡϦςΟతʹ΍Βͳ͍΄͏͕Αͦ͞͏ Board2 Task2 Task3 Task4 Task5 Task6 (SPVQT #PBSET 5BTLT

Slide 31

Slide 31 text

  ͳͥ਌ࢠؔ܎Λ΋ͨͤΔͷ͔ ͳͥ਌ࢠؔ܎Λ΋ͨͤΔඞཁ͕͋Δͷ͔

Slide 32

Slide 32 text

  ͳͥ਌ࢠؔ܎Λ΋ͨͤΔͷ͔  'JSFTUPSFͷσʔλΞΫηεࢥ૝  ηΩϡϦςΟཁ݅ͷ࣮ݱ

Slide 33

Slide 33 text

  'JSFTUPSFͷࢥ૝ iOS App WebServer Database ैདྷͷΞϓϦέʔγϣϯ iOS App Firestore 'JSFTUPSFͷࢥ૝ ΫϥΠΞϯτ͕௚઀σʔλͷಡΈॻ͖Λ͢Δ

Slide 34

Slide 34 text

  'JSFTUPSFͷࢥ૝ͷΑ͞ 'JSFTUPSFͷࢥ૝ʹϝϦοτ͸͋Δͷ͔

Slide 35

Slide 35 text

  'JSFTUPSFͷࢥ૝ͷΑ͞ %#ͷಡΈॻ͖ॲཧΛΞϓϦଆͰ׬݁Ͱ͖Δ όοΫΤϯυͷ࣮૷͕΄΅ෆཁʂ

Slide 36

Slide 36 text

  ͳʹ͕خ͍͠ ຊ౰ʹ࣮૷εϐʔυ͕͕͋Γ·͢

Slide 37

Slide 37 text

  ͍΍͍΍͍΍͍΍ ⚠ͪΐͬͱ଴ͬͨ⚠

Slide 38

Slide 38 text

  ΫϥΠΞϯτ͕௚઀%#Λ৮Δʜʁ ΫϥΠΞϯτ͕
 %#Λ௚઀৮ΔͳΜͯةݥͰ͸ ŦŘŴŖ

Slide 39

Slide 39 text

  ΫϥΠΞϯτ͕௚઀%#Λ৮Δʜʁ ηΩϡϦςΟϧʔϧͱ͍͏΋ͷ͕͋Γ·͢ https://firebase.google.com/docs/firestore/security/overview?hl=ja

Slide 40

Slide 40 text

  ηΩϡϦςΟϧʔϧͱ͸ w σʔλͷΞΫηεݖݶΛهड़͢Δ  SFBE HFUMJTU XSJUF DSFBUFVQEBUFEFMFUF  w +BWB4DSJQUΈ͍ͨͳಠࣗݴޠΛ࢖͏

Slide 41

Slide 41 text

  σʔλߏ଄ྫɿ'JSFTUPSF service cloud.firestore { match /databases/{database}/documents { match /users/{userID} { // {userID}͸PathParameterΈ͍ͨͳ΋ͷ allow get, list; // ୭Ͱ΋ಡΈऔΓՄ allow create, update: if request.auth != null // ೝূࡁΈϢʔβʔ && request.auth.uid == userID // ϦΫΤετϢʔβʔͱσʔλ͕Ұக } } } σʔλߏ଄্ͷҐஔ ແ৚݅ʹಡΈऔΓڐՄ ࣗ਎ͷσʔλͷΈมߋՄ ϓϩϑΟʔϧ͸୭Ͱ΋ݟ͍͍͚ͯͲฤू͸ࣗ෼ͷΈ0,ͷྫ

Slide 42

Slide 42 text

  σʔλߏ଄ྫɿ'JSFTUPSF service cloud.firestore { match /databases/{database}/documents { match /users/{userID} { // {userID}͸QueryParameterΈ͍ͨͳ΋ͷ allow get, list; // ୭Ͱ΋ಡΈऔΓՄ allow create, update: if request.auth != null // ೝূࡁΈϢʔβʔ && request.auth.uid == userID // ϦΫΤετϢʔβʔͱσʔλ͕Ұக } } } ͜ΕΛ'JSFTUPSFʹઃఆ͓͚ͯ͠͹ ҙਤ͠ͳ͍ಡΈॻ͖Λ੍ޚ͢Δ͜ͱ͕Ͱ͖Δ

Slide 43

Slide 43 text

  'JSFTUPSFͷ஫ҙ఺ w σʔλߏ଄ͷઃܭ͸׳ΕΔ·Ͱຊ౰ʹ೉͍͠  αʔϏεཁ݅ʹ߹ΘͤΔඞཁ͕͋Δ w ࠓճ঺հͰ͖͍ͯͳ͍ςΫχοΫΛ࢖͏ඞཁ͕͋Δ ৔߹΋Ͱͯ͘Δ  ಡΈऔΓ༻σʔλͷ࡞੒ w ΅͘Ͱྑ͚Ε͹͍ͭͰ΋5XJUUFS͔Β͝૬ஊ͍ͩ͘͞  ͓࢓ࣄͷґཔ΋͓଴͍ͪͯ͠·͢,

Slide 44

Slide 44 text

  'JSFTUPSFͰࢀߟʹͳΔ63- w ެࣜυΩϡϝϯτ  IUUQTpSFCBTFHPPHMFDPNEPDTpSFTUPSF IMKB  'JSFCBTF͸ެࣜυΩϡϝϯτ͕݁ߏॆ࣮͍ͯ͠·͢ w $MPVE'JSFTUPSFͷצॴύʔτ  IUUQTNFEJVNDPNHPPHMFDMPVEKQpSFTUPSFBBDE  ΊͪΌͪ͘ΌΘ͔Γ΍͘͢ɺશମײ΍ؾΛ͚ͭΔ΂͖ͱ͜Ζ͕೺ѲͰ͖ ·͢ɻࣗ෼͸Կճ΋ಡΈ·ͨ͠ɻ

Slide 45

Slide 45 text

ೝূ 'JSFCBTF"VUIFOUJDBUJPO

Slide 46

Slide 46 text

  ಋೖํ๏ pod 'Firebase/Auth'

Slide 47

Slide 47 text

  'JSFCBTF"VUIFOUJDBUJPOͱ͸ ϢʔβʔೝূαʔϏε https://firebase.google.com/docs/auth/?hl=ja

Slide 48

Slide 48 text

w ಗ໊ೝূ w ϝʔϧΞυϨεೝূ w ి࿩൪߸ೝূ w 4/4ೝূʢ(PPHMF'BDFCPPL5XJUUFS(JU)VCʣ w ΧελϜೝূ   "VUIFOUJDBUJPOͷೝূखஈ

Slide 49

Slide 49 text

w ։ൃऀ͕6*Λ࣮૷͠ඞཁͳ৘ใΛ4%,ʹΘͨ͢ w 6*΋4%,΍ΒͤΔ   "VUIFOUJDBUJPOͷ࣮૷खஈ

Slide 50

Slide 50 text

  "VUIFOUJDBUJPO͸؆୯ ͲΕ΋؆୯ʹར༻͢Δ͜ͱ͕Ͱ͖·͢ ʢ֤4/4αʔϏεͰඞཁͳઃఆΛ͢Δ΄͏͕ΊΜͲ͍͘͞ʣ

Slide 51

Slide 51 text

  DIFDLBͰ͸ DIFDLBͰ͸ಗ໊ೝূΛ࢖͍ͬͯ·͢ ௥ʑ4/4ೝূ΋ಋೖ༧ఆͰ͕͢ݱঢ়͸े෼

Slide 52

Slide 52 text

  ಗ໊ೝূ import FirebaseAuth Auth.auth().signInAnonymously { result, error in print(result?.user.uid) } ΞϓϦΛΞϯΠϯετʔϧ͢ΔͳͲ͠ͳ͍ݶΓ͸ಉ͡6TFSʹͳΔ ʢυΩϡϝϯτ͕͋ͬͨ͸ͣͳΜͰ͕͢ݟ౰ͨΒͣʜʣ

Slide 53

Slide 53 text

  ·ͱΊ w 'JSFCBTF͸ͱͬͯ΋ศར w 'JSFTUPSFʹ͸ଟগͷ׳Ε͕ඞཁ͕ͩඇৗʹڧྗ☄ w ࠓޙͷΞοϓσʔτʹ΋ظ଴Ͱ͖ΔͷͰΨγΨγ
 ࢖͍͖͍ͬͯͨ♻