Slide 1

Slide 1 text

ClaspͱTypescriptͰ Google Apps ScriptΛಈ͔͢ Serverless Meetup Kobe vol1 2020/01/25 #serverlesskobe

Slide 2

Slide 2 text

About: Hidetaka Okamoto גࣜձࣾσδλϧΩϡʔϒ "MFYB$IBNQJPOT 3FBDU5ZQF4DSJQU"84 #serverlesskobe

Slide 3

Slide 3 text

About: Hidetaka Okamoto גࣜձࣾσδλϧΩϡʔϒ "MFYB$IBNQJPOT 3FBDU5ZQF4DSJQU"84 #serverlesskobe

Slide 4

Slide 4 text

#serverlesskobe

Slide 5

Slide 5 text

Agenda ΍Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛ࢖ͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe

Slide 6

Slide 6 text

Agenda ΍Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛ࢖ͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe

Slide 7

Slide 7 text

΍Γ͔ͨͬͨ͜ͱ ؆୯ͳCPUʢ-*/&PS"MFYBΛ૝ఆʣ (PPHMFΧϨϯμʔ΁ͷ༧ఆ௥ՃΛτϦΨʔʹ͢Δ มߋ͞Εͨ಺༰Λνϟοτ΍76*Ͱ௨஌͢Δ ࢖͍׳Εͨ5ZQF4DSJQUΛ࢖͍͍ͨ #serverlesskobe

Slide 8

Slide 8 text

࣮૷ͨ͠΋ͷ (PPHMF"QQT4DSJQUͰ࣮૷ (PPHMFΧϨϯμʔΛτϦΨʔʹ࣮ߦ -*/&ͷ.FTTBHF"1*ʹ1045ϦΫΤετ #serverlesskobe

Slide 9

Slide 9 text

Agenda ΍Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛ࢖ͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe

Slide 10

Slide 10 text

GOOGLE APPS SCRIPT HTTPS://DEVELOPERS.GOOGLE.COM/APPS-SCRIPT?HL=JA #serverlesskobe

Slide 11

Slide 11 text

• Google͕ఏڙ͢ΔFaaS • 6෼ఔ౓ͷScript͕࣮ߦՄೳ • ੍ݶࣄ߲͸G Suite Planґଘ • script.google.comͰ؅ཧ • GUIͰ΋ίʔυΛฤूՄೳ • Google Appsͱͷ਌࿨ੑ #serverlesskobe

Slide 12

Slide 12 text

• Google͕ఏڙ͢ΔFaaS • 6෼ఔ౓ͷScript͕࣮ߦՄೳ • ੍ݶࣄ߲͸G Suite Planґଘ • script.google.comͰ؅ཧ • GUIͰ΋ίʔυΛฤूՄೳ • Google Appsͱͷ਌࿨ੑ #serverlesskobe

Slide 13

Slide 13 text

GUI্Ͱ࣮૷ɾ؅ཧͨ͘͠ͳ͍ʂ #serverlesskobe

Slide 14

Slide 14 text

npm I -g @google/ clasp C ommand L ine A pps S cript P roject #serverlesskobe

Slide 15

Slide 15 text

claspͱ͸ (PPHMF͕ϦϦʔε͍ͯ͠Δ("4޲͚$-*πʔϧ σϓϩΠ΍ෳ੡ɺεςʔλεͷ֬ೝͳͲͷૢ࡞͕Մೳ DMBTQMPHJOͰϩάΠϯ͢ΔͱɺDMBTQSDKTPOʹೝূ৘ใΛه࿥ ("4Λ։ൃ͢ΔͳΒ$MBTQҰ୒ʢඪຊ਺ʣ #serverlesskobe

Slide 16

Slide 16 text

Google Apps Script APIΛ༗ޮԽ͓ͯ͘͠ https://script.google.com/home/usersettings #serverlesskobe

Slide 17

Slide 17 text

$ clasp loginͰ ϩάΠϯը໘͕ ্ཱ͕ͪΔ #serverlesskobe

Slide 18

Slide 18 text

͍Ζ͍Ζͱݖݶ͸ ཁٻ͞ΕΔ Serverless Framework͕ AdministratorAccessཁٻ͢Δͷʹ ͍ۙΑ͏ͳҹ৅ #serverlesskobe

Slide 19

Slide 19 text

$ cat ~/.clasprc.json tokenͳͲ͸࿙Β͞ͳ͍Α͏ʹ஫ҙ͢Δ #serverlesskobe

Slide 20

Slide 20 text

$ clasp createͰϓϩδΣΫτΛ࡞੒͢Δ https://github.com/google/clasp#create #serverlesskobe

Slide 21

Slide 21 text

createޙʹpullͰ entrypointΛऔಘ Code.jsʹίʔυΛॻ͍ͯ push͢Ε͹OK #serverlesskobe

Slide 22

Slide 22 text

claspͰͰ͖Δ͜ͱʢҰ෦ʣ DMBTQQVTIͰσϓϩΠ DMBTQWFSTJPOlzͰόʔδϣϯઃఆ DMBTQWFSTJPOTͰόʔδϣϯҰཡऔಘ DMBTQMPHTͰ࣮ߦϩάͷදࣔʢGSPN4UBDL%SJWFSʣ #serverlesskobe

Slide 23

Slide 23 text

claspΛ࢖ͬͯϩʔΧϧͰGAS։ൃ ެࣜπʔϧͷ҆৺ײ όʔδϣχϯά΍$MPOFͳͲ΋͋Γखް͍ ("4ͳΒͰ͸ϓϩύςΟʹ͍ͭͯ͸ࣗྗͰௐ΂Δඞཁ͋Γ ͠ΐ͏͖͡ΊΜͲ͍͘͞ #serverlesskobe

Slide 24

Slide 24 text

Agenda ΍Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛ࢖ͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe

Slide 25

Slide 25 text

ͳͥTypeScriptΛ࢖͍͍ͨͷ͔ (PPHMF"QQT͔Β͘Δσʔλͷܕ͕஌Γ͍ͨ ("4Ͱར༻Ͱ͖Δάϩʔόϧม਺ܥΛ஌Γ͍ͨ ("4ʹ͸'FUDI΍"QQT઀ଓܥͷಠࣗม਺ɾΫϥε͕ଟ਺͋Δ Կ͕͋Δͷ͔ɺͲ͏࢖͑͹͍͍ͷ͔ΛάάΓͨ͘ͳ͍ ܕ͕ͳ͍··ॻ͍ͨࣗ෼ͷίʔυΛ৴༻Ͱ͖ͳ͍ #serverlesskobe

Slide 26

Slide 26 text

clasp͸TypeScript ϑϨϯυϦʔ #serverlesskobe

Slide 27

Slide 27 text

ܕ৘ใͷऔಘɿnpm install --save @types/google-apps-script #serverlesskobe

Slide 28

Slide 28 text

Clasp push࣌ʹτϥϯεύΠϧͯ͘͠ΕΔͷͰɺͦͷ··pushͰ͖Δ #serverlesskobe

Slide 29

Slide 29 text

Google AppsܥͷAPIʹର͢Δೖྗิ׬΋ڧྗ #serverlesskobe

Slide 30

Slide 30 text

GoogleΧϨϯμʔ͔ΒͷΠϕϯτσʔλΛ੔ܗ͢Δαϯϓϧ #serverlesskobe

Slide 31

Slide 31 text

LINEͷMessage APIܦ༝ͰϝοηʔδΛૹ৴͢Δαϯϓϧ #serverlesskobe

Slide 32

Slide 32 text

Claspͷ஫ҙ఺ 3FRVJSFJNQPSU͸࢖Θͳ͍ʢ࢖͏ͳΒXFCQBDLͳͲͰϏϧυʣ ॏ͍ͨ4%,ΛCVOEMF͢ΔͱΞοϓϩʔυͰ͖ͳ͍͜ͱ͕͋Δ -*/&4%,͕μϝͩͬͨͷͰ1045PS"1*(8௥ՃͰରԠͨ͠ (PPHMFͷυΩϡϝϯτͷάάϥϏϦςΟ͕௿͍ ʮ("4Ͱۀ຿ޮ཰Խʂʯܥهࣄʹຒ΋ΕͯΔͷͰݕࡧͭΒ͍ #serverlesskobe

Slide 33

Slide 33 text

ݸਓతGAS(Clasp)࢖͍ॴ (PPHMFܥαʔϏεͷΠϕϯτϒϦοδͱͯ͠ͷ("4 "84ͷΠϕϯτ͸&WFOU#SJEHF(PPHMF"QQT͸("4 ۩ମతͳॲཧܥΛ୲͏"1*΍'BB4Λ༻ҙ͢Δ ("4ͰΠϕϯτσʔλΛ੔ཧͯ͠ɺॲཧܥʹ౤͚͛ͭΔ (PPHMF"QQTܥͷσʔλऩूʹઐ೦͢Δͷ΋Ұͭ #serverlesskobe

Slide 34

Slide 34 text

Agenda ΍Γ͔ͨͬͨ͜ͱ (PPHMF"QQT4DSJQUͷίʔυΛϩʔΧϧͰ։ൃ͢Δ 5ZQF4DSJQUΛ࢖ͬͯ։ൃΛΑΓศརʹ͢Δ ͓ΘΓʹ #serverlesskobe

Slide 35

Slide 35 text

͓ΘΓʹ (PPHMF"QQTܥΛτϦΨʔʹ͢ΔͳΒ("4 (PPHMF"QQT4DSJQU $MBTQΛ࢖͑͹ϩʔΧϧͰॻ͍ͨίʔυΛσϓϩΠͰ͖Δ 5ZQF4DSJQUͰͷ࣮૷΋؆୯ ͨͩ͠༰ྔ੍ݶ͕͋ΔͷͰ%JTQBDIFSҎ্ͷ༻్͸ผ'BB4Λ #serverlesskobe