Slide 1

Slide 1 text

GFD@GVLVPLB !@UBLFTIJ@ /VYU$PNQPTJUJPO"1*ͱ 'JSFCBTFͷ࿩

Slide 2

Slide 2 text

w ࣗݾ঺հ w ձࣾ঺հ w ࡞ͬͨαʔϏε w /VYU$PNQPTJUJPO"1* w 'JSFTUPSFͷઃܭʹ͍ͭͯ w 'JSFCBTF࣮ઓಋೖͯ͠Α͔ͬͨ఺ࠔͬͨ఺ w ·ͱΊ GFD@GVLVPLB !@UBLFTIJ@ ໨࣍

Slide 3

Slide 3 text

/VYUKT'JSFCBTF 7VFKT3VCZ($1ϒϩοΫνΣʔϯ ελʔτΞοϓ෱ԬͰىۀ ম೑ԹઘΩϟϯϓཱྀߦ ੢෢࢙ ʹ͚ͨ͠͠ !@UBLFTIJ@ GFD@GVLVPLB !@UBLFTIJ@ ࣗݾ঺հ גࣜձࣾ0OF4NBMM4UFQ ୅දऔక໾$50 גࣜձࣾάϨʔτϏʔϯζࣾ֎$50

Slide 4

Slide 4 text

GFD@GVLVPLB !@UBLFTIJ@ ձࣾ঺հ ձ໊ࣾ גࣜձࣾ0OF4NBMM4UFQ ϫϯεϞʔϧεςοϓ ઃཱ ೥݄೔ ࣄۀ಺༰ w ڞײͰܨ͕ΔϚονϯάϓϥοτϑΥʔϜ'-"15"-,ͷ։ൃӡӦ w Ϩϯλϧ$50 w ΞϓϦ8FCαʔϏεͷडୗ։ൃ w άϥϑΟοΫσβΠϯ$(ϞσϦϯά ϝϯόʔ ໊ ΞϧόΠτؚΉ ˞೥݄೔࣌఺

Slide 5

Slide 5 text

GFD@GVLVPLB !@UBLFTIJ@ ࡞ͬͨαʔϏε ڞײͰະདྷͷ஥ؒͱܨ͕Δ ͚Ͳͳ͔ͳ͔ܨ͕Βͳ͍  ϚονϯάϓϥοτϑΥʔϜ '-"15"-, ϑϥοϓτʔΫ IUUQTqBQUBMLBQQ

Slide 6

Slide 6 text

GFD@GVLVPLB !@UBLFTIJ@ '-"15"-,ͱ͸ʁ ˞ݱࡏЋ൛ͷͨΊɺҰ෦ػೳ͸ະ࣮૷

Slide 7

Slide 7 text

GFD@GVLVPLB !@UBLFTIJ@ '-"15"-,ͱ͸ʁ ˞ݱࡏЋ൛ͷͨΊɺҰ෦ػೳ͸ະ࣮૷

Slide 8

Slide 8 text

$PNQPTJUJPO"1* GFD@GVLVPLB !@UBLFTIJ@

Slide 9

Slide 9 text

GFD@GVLVPLB !@UBLFTIJ@ $PNQPTJUJPO"1*ͱ͸ʁ w 7VFͰಋೖ͞Εͨඪ४ه๏ w 5ZQF4DSJQUͱͷ૬ੑ͕ྑ͍ w ؔ৺ࣄͰॲཧΛ·ͱΊΒΕΔ w ॊೈͳϓϩάϥϜߏ੒

Slide 10

Slide 10 text

GFD@GVLVPLB !@UBLFTIJ@ $PNQPTJUJPO"1* import Vue, { PropOptions } from 'vue' export default Vue.extend({ name: 'Sample', props: { prop: { type: String, required: true } as PropOptions<String> }, data: () => ({ sample: 'sample' }), computed: { computed() { return {} } }, mounted() {}, methods: { sampleEmit() { this.$emit('sampleEmit', this.sample) } } }) import { defineComponent, reactive, SetupContext } from '@vue/composition-api' type Props = { sample: string } type State = { sample: string } export default defineComponent({ name: 'Sample', props: { Prop: { type: String, required: true } }, setup(props: Props, context: SetupContext) { const state = reactive<State>({ sample: 'sample' }) const sampleEmit = () => { context.emit('sampleEmit', props.sample) } return { state, props, sampleEmit } } })

Slide 11

Slide 11 text

'JSFTUPSF GFD@GVLVPLB !@UBLFTIJ@

Slide 12

Slide 12 text

GFD@GVLVPLB !@UBLFTIJ@ 'JSFTUPSFͱ͸ʁ w (PPHMF͕ఏڙ͢Δ#BB4'JSFCBTFͷ/P42-σʔλϕʔε w όοΫΤϯυෆཁͰɺϑϩϯτΤϯυ͔Β4%,Ͱ௚઀ૢ࡞ w ैྔ՝ۚ w 'JSFCBTFͷ/P42-͸'JSFTUPSFͱ3FBMUJNF%BUBCBTFͷͭ

Slide 13

Slide 13 text

GFD@GVLVPLB !@UBLFTIJ@ 'JSFTUPSFͱ͸ʁ w ϨΠςϯγ͕ඇৗʹ௿͍ w සൟͳঢ়ଶಉظʹ࠷ద w ΫΤϦ͕ශऑ w ෳࡶͳσʔλʹ͸ෆ޲͖ w ଳҬ෯ͱετϨʔδʹͷΈ՝ۚ w 3FBMUJNF%BUBCBTFʹൺ΂ɺ ॊೈͳΫΤϦ w ෳࡶͳσʔλʹରԠ w ΦϖϨʔγϣϯ ಡΈऔΓॻ͖ࠐΈ࡟আ ɺ ଳҬ෯ɺετϨʔδʹ՝ۚ

Slide 14

Slide 14 text

GFD@GVLVPLB !@UBLFTIJ@ 'JSFTUPSFͷ σʔλઃܭ  ඇਖ਼نԽ  4VC$PMMFDUJPO  ΩʔࢀরϞσϧ  3FGFSFODFܕ σʔλઃܭͷϙΠϯτ

Slide 15

Slide 15 text

GFD@GVLVPLB !@UBLFTIJ@ ඇਖ਼نԽ VTFST 㸉<6TFS*%> 㸉OBNFlʹ͠z 㸉BHF 㸉QSFGFDUVSFl෱Ԭݝz *E OBNF BHF QSFGFDUVSF@JE  ʹ͠   *E OBNF  ෱Ԭݝ VTFSTςʔϒϧ QSFGFDUVSFTςʔϒϧ

Slide 16

Slide 16 text

GFD@GVLVPLB !@UBLFTIJ@ 4VC$PMMFDUJPO VTFST 㸉<6TFS*%> 㸉OBNFlʹ͠z 㸉BHF 㸉EJBSJFT 㸉<%JBSZ*%> c㸉UJUMFlλΠτϧz c㸉DPOUFOUlຊจɻຊจɻz 㸉<%JBSZ*%> c㸉UJUMFlλΠτϧz c㸉DPOUFOUlຊจɻຊจɻz wσʔλͷؔ܎͕Θ͔Γ΍͍͢ɻ w ֊૚͕ਂ͍ͱΘ͔Γʹ͘͘ͳΔɻ

Slide 17

Slide 17 text

GFD@GVLVPLB !@UBLFTIJ@ 4VC$PMMFDUJPO const snapshot = await app.firestore() .collectionGroup("diaries") .where() .get() wDPMMFDUJPO(SPVQͰ4VC$PMMFDUJPOΛԣஅతʹݕࡧՄೳɻ

Slide 18

Slide 18 text

GFD@GVLVPLB !@UBLFTIJ@ ΩʔࢀরϞσϧ VTFST 㸉<6TFS*%> 㸉OBNFlʹ͠z 㸉BHF EJBSJFT 㸉<%JBSZ*%> c㸉VTFS*E c㸉UJUMFlλΠτϧz c㸉DPOUFOUlຊจɻຊจɻz 㸉<%JBSZ*%> c㸉VTFS*E c㸉UJUMFlλΠτϧz c㸉DPOUFOUlຊจɻຊจɻz

Slide 19

Slide 19 text

 ୯७ͳ਌ࢠؔ܎ͩͬͨΒɺ4VC$PMMFDUJPO  ݕࡧͷύλʔϯ͕ෳ਺͋Ε͹ɺ,FZࢀরϞσϧ  ֊૚͕ਂ͘ͳΔ΋ͷ͸ɺ,FZࢀরϞσϧ 4VC$PMMFDUJPOͱ,FZࢀরϞσϧͲͪΒΛ࢖͏͔ʁ ൑அج४͸ʁʁ ࢲͷ൑அج४ GFD@GVLVPLB !@UBLFTIJ@ Ͳ͏࢖͍෼͚Δʁ

Slide 20

Slide 20 text

GFD@GVLVPLB !@UBLFTIJ@ 3FGFSFODFܕ EJBSJFT 㸉<%JBSZ*%> c㸉UJUMFlλΠτϧz c㸉DPOUFOUlຊจɻຊจɻz c㸉VTFSVTFST 㸉<%JBSZ*%> c㸉UJUMFlλΠτϧz c㸉DPOUFOUlຊจɻຊจɻz c㸉VTFSVTFST w/ͷ਌ࢠؔ܎ͷσʔλͰ͸3FGFSFODFܕΛར༻ɻ

Slide 21

Slide 21 text

GFD@GVLVPLB !@UBLFTIJ@ / ໰୊ w ໾৬໊ͳͲ਺͕ݶఆతͳσʔλ͸ϧʔϓͷલʹऔಘͯ͠อ͓࣋ͯ͠ ͍ͯɺϧʔϓ಺ͰϚʔδɻ w ໊ࣾͳͲ΄ͱΜͲมߋ͞Εͳ͍σʔλ͸ඇਖ਼نԽ͓ͯ࣋ͬͯ͘͠ɻ มߋ͕͋ͬͨ৔߹͸ɺόονॲཧͰߋ৽ɻ db.collection(“diaries”).get() .then(function(snapshot) { snapshot(function(diary) { diary.data().user.get() }) }) / ໰୊ɻϧʔϓ͝ͱʹϦΫΤετɻ ˠύϑΥʔϚϯε௿Լɻ

Slide 22

Slide 22 text

GFD@GVLVPLB !@UBLFTIJ@ ηΩϡΞͳσʔλઃܭ ྫ Ϣʔβʔͷࢯ໊ɺॅॴɺ࿈བྷઌͳͲͷݸਓ৘ใͱɺχοΫωʔ ϜɺϓϩϑΟʔϧࣸਅͳͲͷެ։৘ใΛ࣋ͭσʔλ VTFST 㸉<6TFS*%> 㸉OJDLOBNFlʹ͠z 㸉QSPpMFlYYYYYYYKQHz 㸉OBNFl੢෢࢙z 㸉BEESFTTl෱Ԭࢢ౦۠ɾɾɾz 㸉FNBJMlUBLFTIJ!IPHFIPHFDPNz  ϑΟʔϧυ୯ҐͰηΩϡϦςΟϧʔϧઃఆ Ͱ͖ͳ͍ͷͰɺެ։͞Εͯ͠·͏ʂʂ

Slide 23

Slide 23 text

GFD@GVLVPLB !@UBLFTIJ@ ηΩϡΞͳσʔλઃܭ VTFST 㸉<6TFS*%> 㸉OJDLOBNFlʹ͠z 㸉QSPpMFlYYYYYYYKQHz @VTFST 㸉<6TFS*%> 㸉OBNFl੢෢࢙z 㸉BEESFTTl෱Ԭࢢ౦۠ɾɾɾz 㸉FNBJMlUBLFTIJ!IPHFIPHFDPNz  DPMMFDUJPOΛ෼͚Δɻ

Slide 24

Slide 24 text

GFD@GVLVPLB !@UBLFTIJ@ ઃܭํ๏ ESBXJPΛར༻ 4VC$PMMFDUJPOͳͷ͔ 3FGFSFODFͳͷ͔ શһͰڞ௨ೝࣝ ผίϨΫγϣϯͰ΋ ಉҰͷ৘ใΛѻ͏৔߹ ಉҰͷ*%Ͱ؅ཧ

Slide 25

Slide 25 text

GFD@GVLVPLB !@UBLFTIJ@ ηΩϡϦςΟϧʔϧͷઃఆ service cloud.firestore { match /databases/{database}/documents { match /users/{userId} { allow read; allow create: if request.auth.uid != null; allow update, delete: if request.auth.uid == userId; } ɹ} } جຊతʹϑϩϯτΤϯυ͔Β௚઀ૢ࡞Ͱ͖ΔͷͰɺϑϩϯτΤ ϯυଆͰ6TFS*%Λِ૷Մೳɻ 'JSFTUPSFͷηΩϡϦςΟϧʔϧͰݖݶͳͲΛ੍ݶɻ

Slide 26

Slide 26 text

GFD@GVLVPLB !@UBLFTIJ@ ࣮ࡍ࢖ͬͯΈͯͲ͏͔ʁ ϝϦοτ w গਓ਺Ͱεϐʔυ։ൃ w ΞϓϦͷ։ൃʹूதͰ͖Δ w αʔόʔͷ؅ཧ͕ෆཁ w ͍҆ʂ

Slide 27

Slide 27 text

GFD@GVLVPLB !@UBLFTIJ@ ྉۚ͸ʁ

Slide 28

Slide 28 text

GFD@GVLVPLB !@UBLFTIJ@ ྉۚ͸ʁ

Slide 29

Slide 29 text

GFD@GVLVPLB !@UBLFTIJ@ ࣮ࡍ࢖ͬͯΈͯͲ͏͔ʁ σϝϦοτ w ϦϦʔεޙόʔδϣϯΞοϓͨ͠ࡍͷɺաڈσʔλͷϦΧόϦ ͕େม w %#؅ཧπʔϧ͕ඞཁ࠷௿ݶ w ϨΠςϯγ w %#ઃܭ͕ΩϞʹͳΔ w /P42-΁ͷෆ׳Εʢ3%#೴ʣ

Slide 30

Slide 30 text

GFD@GVLVPLB !@UBLFTIJ@ ࣮ࡍ࢖ͬͯΈͯͲ͏͔ʁ 'JSFCBTFམͪͪΌͬͨɾɾɾ

Slide 31

Slide 31 text

ࠓ೔ͷ࿩͕͋ͳͨͷখ͞ͳҰาʹ ͭͳ͕Γ·͢Α͏ʹɻ

Slide 32

Slide 32 text

!@UBLFTIJ@ ڞײͰະདྷͷ஥ؒͱܨ͕Δ
 (͚Ͳͳ͔ͳ͔ܨ͕Βͳ͍)SNS FLAPTALKα൛ެ։த એ఻ a࠙਌ձ͸Ͱ͖ͳ͍͚Ͳɺ aࢀՃऀಉ࢜Ͱܨ͕Ζ͏ʂ

Slide 33

Slide 33 text

ΤϯδχΞืू '-"15"-,ͷ։ൃडୗ։ൃ ࣗࣾͷlదࣾϨίϝϯυzΞϓϦ։ൃ