Slide 1

Slide 1 text

$MPVE fl BSF8PSLFST͸ָ͍͠ʂ $MPVE fl BSF8PSLFST.FFUVQCZ/05")05&-

Slide 2

Slide 2 text

!DPEFIFY !$PEF)FY w /05")05&-Ͱಇ͍͍ͯ·͢ w 1P$Λ࡞ͬͯɺӡ༻·Ͱ͍࣋ͬͯ͘ w ࣗಈԽɺ"*ΠϯςάϨʔγϣϯ w ͓٬༷޲͚ɺࣾ಺޲͚

Slide 3

Slide 3 text

IUUQTXPSLFSTUFDIDPOOQBTTDPNFWFOU

Slide 4

Slide 4 text

ʮ෼͔Γ΍͍͢ʯ͸ָ͍͠

Slide 5

Slide 5 text

ʮ෼͔Γ΍͍͢ʯ͸ָ͍͠ w ΞϓϦέʔγϣϯͷ։ൃ؀ڥΛ੔͑Δ w ։ൃͨ͠ػೳΛσϓϩΠͯ͠࢖ͬͯ΋Β͏

Slide 6

Slide 6 text

ΞϓϦέʔγϣϯͷ։ൃ؀ڥΛ੔͑Δ ίϯςφΛ࢖ͬͨ؀ڥͱͷൺֱ

Slide 7

Slide 7 text

ίϯςφ࣌୅ͷ։ൃ؀ڥ

Slide 8

Slide 8 text

ίϯςφ࣌୅ͷ։ൃ؀ڥ w ։ൃ؀ڥΛ੔͑Δͷ͸໘౗͍͘͞ʂ w 
 w 


Slide 9

Slide 9 text

ίϯςφ࣌୅ͷ։ൃ؀ڥ w ։ൃ؀ڥΛ੔͑Δͷ͸໘౗͍͘͞ʂ w %PDLFS fi MFͷهड़ɺΞϓϦΛಈ͔ͨ͢Ίͷઃఆ ϑΝΠϧͷهड़ɺ؀ڥม਺ͳͲ w 


Slide 10

Slide 10 text

ίϯςφ࣌୅ͷ։ൃ؀ڥ w ։ൃ؀ڥΛ੔͑Δͷ͸໘౗͍͘͞ʂ w %PDLFS fi MFͷهड़ɺΞϓϦΛಈ͔ͨ͢Ίͷઃఆ ϑΝΠϧͷهड़ɺ؀ڥม਺ͳͲ w %#ͩͬͨΓ2VFVFͩͬͨΓɺ$SPO+PCͳͲ ΛϩʔΧϧͰ༻ҙ͢Δͷ΋େม

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

֮͑Δ͜ͱ͕͍ͬͺ͍ʂʂ

Slide 13

Slide 13 text

$MPVE fl BSF8PSLFSTͷ৔߹

Slide 14

Slide 14 text

$MPVE fl BSF8PSLFSTͷ৔߹ w ։ൃ؀ڥ͸ςϯϓϨʔτΛ࢖ͬͯηοτΞοϓՄೳ w ։ൃ؀ڥͱσϓϩΠ؀ڥͷဃ཭͕গͳ͍ w ϥϯλΠϜͷXPSLFSE͸044 
 IUUQTHJUIVCDPNDMPVE fl BSFXPSLFSE w Πϯϑϥͷػೳ΋XPSLFSEΛܦ༝ͯ͠ར༻Ͱ͖Δ

Slide 15

Slide 15 text

ΞϓϦέʔγϣϯͷ։ൃ؀ڥΛ੔͑Δ $ npx create-cloudflare my-app --framework hono \ --deploy false

Slide 16

Slide 16 text

ΞϓϦέʔγϣϯͷ։ൃ؀ڥΛ੔͑Δ $ tree my-app --gitignore my-app ├── README.md ├── package.json ├── src │ └── index.ts ├── tsconfig.json 
 └── wrangler.toml

Slide 17

Slide 17 text

ΞϓϦέʔγϣϯͷ։ൃ؀ڥΛ੔͑Δ $ cd my-app && npm run dev 
 $ curl http://localhost:8787 
 Hello Hono!

Slide 18

Slide 18 text

w XSBOHMFSUPNMʹ͸σϓϩΠޙʹར༻͢Δ؀ڥม਺Λॻ͘ w EFWWBSTʹ͸ϩʔΧϧͰར༻͍ͨ͠؀ڥม਺Λॻ͘ ؀ڥม਺Λ੔͑Δ

Slide 19

Slide 19 text

؀ڥม਺Λ੔͑Δ $ echo "ENV = \"local\"" >> .dev.vars 
 $ ls .dev.vars .dev.vars

Slide 20

Slide 20 text

name = "my-app" compatibility_date = "2023-01-01" [vars] ENV = "development" ؀ڥม਺Λ੔͑Δ XSBOHMFSUPNM

Slide 21

Slide 21 text

import { Hono } from "hono"; const app = new Hono<{ Bindings: { ENV: string; }; }>(); app.get("/", (c) => c.text(c.env.ENV)); export default app; ؀ڥม਺Λ੔͑Δ JOEFYUT

Slide 22

Slide 22 text

؀ڥม਺Λ੔͑Δ $ cd my-app && npm run dev 
 $ curl http://localhost:8787 
 local

Slide 23

Slide 23 text

w XSBOHMFSίϚϯυΛར༻ͯ͠ϦιʔεΛ࡞੒ w ϦιʔεΛར༻͢ΔͨΊʹXSBOHMFSUPNM΁ઃఆΛهड़ w $MPVE fl BSF8PSLFSTͰར༻Ͱ͖Δϛυϧ΢ΣΞ͸ 
 جຊಉ͡ ϛυϧ΢ΣΞΛ੔͑Δ

Slide 24

Slide 24 text

ϛυϧ΢ΣΞΛ੔͑Δʢྫ,7ʣ $ npx wrangler kv:namespace create TEST_KV ⛅ wrangler 3.17.1 ------------------- 🌀 Creating namespace with title "my-app-TEST_KV" ✨ Success! Add the following to your configuration file in 
 your kv_namespaces array: { binding = "TEST_KV", id = "da56a0e3ee6641fabf26b726e60fa550" }

Slide 25

Slide 25 text

[[kv_namespaces]] binding = "TEST_KV" id = "da56a0e3ee6641fabf26b726e60fa550" XSBOHMFSUPNM ϛυϧ΢ΣΞΛ੔͑Δʢྫ,7ʣ

Slide 26

Slide 26 text

const app = new Hono<{ Bindings: { TEST_KV: KVNamespace } }>(); app.get("/counter", async (c) => { const key = c.req.query()["key"] || "defaultKey"; const count = Number(await c.env.TEST_KV.get(key)); const count = !isNaN(value) ? value + 1 : 1; await c.env.TEST_KV.put(key, String(count)); return c.text(String(count)); }); export default app; JOEFYUT ϛυϧ΢ΣΞΛ੔͑Δʢྫ,7ʣ

Slide 27

Slide 27 text

$ curl http://localhost:8787/counter 
 1 ϛυϧ΢ΣΞΛ੔͑Δʢྫ,7ʣ

Slide 28

Slide 28 text

։ൃͨ͠ػೳΛσϓϩΠ͢Δ εςʔδϯάͷ෼཭

Slide 29

Slide 29 text

σϓϩΠ͢Δ $ npx wrangler deploy src/index.ts 
 ⛅ wrangler 3.17.1 ------------------- Your worker has access to the following bindings: - KV Namespaces: - TEST_KV: da56a0e3ee6641fabf26b726e60fa550 Total Upload: 45.37 KiB / gzip: 10.97 KiB Uploaded my-app (0.93 sec) Published my-app (0.45 sec) https://my-app.example.workers.dev Current Deployment ID: 3fa11a11-bb8e-4442-bafb-4d16b157ee34

Slide 30

Slide 30 text

σϓϩΠ͢Δ $ curl https://my-app.example.workers.dev 
 development 
 $ curl https://my-app.example.workers.dev/counter 1

Slide 31

Slide 31 text

w XSBOHMFSUPNMʹ֤؀ڥʹ߹ΘͤͨઃఆΛهड़Ͱ͖Δ w Πϯϑϥ΋֤؀ڥ͝ͱʹ༻ҙՄೳ σϓϩΠ؀ڥΛෳ਺༻ҙ͢Δ

Slide 32

Slide 32 text

σϓϩΠ؀ڥΛෳ਺༻ҙ͢Δ name = "my-app-dev" 
 [[env.prd]] name = "my-app-prd" [env.prd.vars] ENV = "production" 
 
 [[env.prd.kv_namespaces]] binding = "TEST_KV" id = "6054ddfbe0bc4f00b1abaa74af92b413" XSBOHMFSUPNM

Slide 33

Slide 33 text

w هड़ͯͨ͠OBNFNZBQQΛNZBQQEFW΁मਖ਼ w ৽͘͠ຊ൪༻ͷઃఆΛ௥ه σϓϩΠ؀ڥΛෳ਺༻ҙ͢Δ

Slide 34

Slide 34 text

։ൃεςʔδ΁σϓϩΠ͢Δ $ npx wrangler deploy src/index.ts 
 ⛅ wrangler 3.17.1 ------------------- Your worker has access to the following bindings: - KV Namespaces: - TEST_KV: da56a0e3ee6641fabf26b726e60fa550 Total Upload: 45.37 KiB / gzip: 10.97 KiB Uploaded my-app-dev (0.93 sec) Published my-app-dev (0.45 sec) https://my-app-dev.example.workers.dev Current Deployment ID: 3fa11a11-bb8e-4442-bafb-4d16b157ee34

Slide 35

Slide 35 text

։ൃεςʔδ΁σϓϩΠ͢Δ $ curl https://my-app-dev.example.workers.dev 
 development 
 $ curl https://my-app-dev.example.workers.dev/counter 1

Slide 36

Slide 36 text

ຊ൪εςʔδ΁σϓϩΠ͢Δ $ npx wrangler deploy src/index.ts —-env prd 
 ⛅ wrangler 3.17.1 ------------------- Your worker has access to the following bindings: - KV Namespaces: - TEST_KV: 6054ddfbe0bc4f00b1abaa74af92b413 Total Upload: 45.37 KiB / gzip: 10.97 KiB Uploaded my-app-dev (0.93 sec) Published my-app-prd (0.45 sec) https://my-app-prd.example.workers.dev Current Deployment ID: 7219bd7f-e4d3-47d0-970b-5917523da603

Slide 37

Slide 37 text

ຊ൪εςʔδ΁σϓϩΠ͢Δ $ curl https://my-app-prd.example.workers.dev 
 production 
 $ curl https://my-app-prd.example.workers.dev/counter 1

Slide 38

Slide 38 text

w Ϗϧυ࣌ؒͱH[JQѹॖ࣌ؒͰ͕͔͔࣌ؒΔ͕ɺͦΕͰ΋ 
 ෼ະຬͰ׬͍ྃͯ͠Δ w σϓϩΠ͸ϏϧυࡁΈͷ+BWB4DSJQUϑΝΠϧΛΞοϓ ϩʔυ͢Δײ͡ͳͷͰ଎͍ʂ σϓϩΠ࣌ؒ

Slide 39

Slide 39 text

ʮؾܰʹ࢖͑Δʯ͸ָ͍͠

Slide 40

Slide 40 text

ʮؾܰʹ࢖͑Δʯ͸ָ͍͠ w ͪΐͬͱͨ͠ϓϩΩγαʔόʔ w جຊ41"͚ͩͲɺগ͠ͷॲཧͰόοΫΤϯυ 
 αʔόʔ͕ཉ͍͠ w ؆୯ʹ༻ҙ͍ͨ͠

Slide 41

Slide 41 text

ͪΐͬͱͨ͠Ϣʔεέʔε /05")05&-ͷ৔߹

Slide 42

Slide 42 text

$034ͷϔομ௥Ճ

Slide 43

Slide 43 text

$034ͷϔομ௥Ճ

Slide 44

Slide 44 text

$034ͷϔομ௥Ճ

Slide 45

Slide 45 text

໰͍߹Θͤͷϝλ৘ใ௥Ճ

Slide 46

Slide 46 text

w ΞϓϦ͔Β;FOEFTLͷ໰͍߹ΘͤϑΥʔϜ΁ͷ 
 ಋઢ͕༻ҙ͞Ε͍ͯΔ w ϩάΠϯதͷͲͷ͓٬༷͔Βͷ͓໰͍߹Θ͔ͤ 
 ೺Ѳ͍ͨ͠ w ؔ࿈͢Δ৘ใ΋஌Γ͍ͨ 
 ໰͍߹Θͤͷϝλ৘ใ௥Ճ

Slide 47

Slide 47 text

໰͍߹Θͤͷϝλ৘ใ௥Ճ

Slide 48

Slide 48 text

w ΞϓϦ͔Βͷಋઢ͸શͯ$MPVE fl BSF8PSLFSTͷ 
 63-Λࢦఆ͢Δ w ϝλ৘ใ͸63-ΫΤϦύϥϝʔλʔʹηοτ͢Δ w 8PSLFS্ͰΫΤϦύϥϝʔλʔͱҰக͢Δ 
 νέοτϑΟʔϧυ൪߸΁ࠩ͠ସ͑Δ UG@ ໰͍߹Θͤͷϝλ৘ใ௥Ճ

Slide 49

Slide 49 text

ϝϯςφϯεϞʔυ

Slide 50

Slide 50 text

ϝϯςφϯεϞʔυ IUUQTTQFBLFSEFDLDPNDPEFIFYHSQDDMJFOUPODMPVE fl BSFXPSLFST

Slide 51

Slide 51 text

ʮΧελϚΠζʯ͸ָ͍͠

Slide 52

Slide 52 text

ʮΧελϚΠζʯ͸ָ͍͠ w ඞͣ͠΋$MPVE fl BSF8PSLFSTͷੈք͚ͩʹ 
 ด͡ͳͯ͘΋ྑ͍ʂ w ֎෦ͷσʔλετϨʔδΛ࢖͏ w ֎෦ͷϩάج൫Λ࢖͏

Slide 53

Slide 53 text

֎෦ͷσʔλετϨʔδΛ࢖͏ /05")05&-ͷέʔε

Slide 54

Slide 54 text

ίϯγΣϧδϡϓϥοτϑΥʔϜ

Slide 55

Slide 55 text

4VQBCBTF1PTUHSF42-

Slide 56

Slide 56 text

w 1PTUHSF42-Λఏڙ͍ͯ͠Δ w 
 w 
 4VQBCBTF1PTUHSF42-

Slide 57

Slide 57 text

w 1PTUHSF42-Λఏڙ͍ͯ͠Δ w %#͚ͩͰͳ͘ίωΫγϣϯϓʔϧΛߦ͏ 
 ϓϩΩγ΋ఏڙͯ͘͠ΕΔ 4VQBWJTPS w 
 4VQBCBTF1PTUHSF42-

Slide 58

Slide 58 text

w 1PTUHSF42-Λఏڙ͍ͯ͠Δ w %#͚ͩͰͳ͘ίωΫγϣϯϓʔϧΛߦ͏ 
 ϓϩΩγ΋ఏڙͯ͘͠ΕΔ 4VQBWJTPS w /05")05&-ͷ৔߹͸-*45&//05*':΋ 
 ࢖༻͍ͯ͠Δ 4VQBCBTF1PTUHSF42-

Slide 59

Slide 59 text

w 1PTUHSF42-Λఏڙ͍ͯ͠Δ w %#͚ͩͰͳ͘ίωΫγϣϯϓʔϧΛߦ͏ 
 ϓϩΩγ΋ఏڙͯ͘͠ΕΔ 4VQBWJTPS w /05")05&-ͷ৔߹͸-*45&//05*':΋ 
 ࢖༻͍ͯ͠Δ 4VQBCBTF1PTUHSF42-

Slide 60

Slide 60 text

)ZQFSESJWF IUUQTCMPHDMPVE fl BSFDPNIZQFSESJWFNBLJOHSFHJPOBM EBUBCBTFTGFFMEJTUSJCVUFE

Slide 61

Slide 61 text

)ZQFSESJWF IUUQTEFWFMPQFSTDMPVE fl BSFDPNIZQFSESJWFMFBSOJOHDPOOFDUUP QPTUHSFTUSBOTBDUJPOBOETUBUFNFOUTVQQPSU αϙʔτ͞Εͯͳ͍ʂ

Slide 62

Slide 62 text

ͦͷ··4VQBWJTPSΛར༻

Slide 63

Slide 63 text

4VQBWJTPSΛར༻ w DPOOSFRલఏ w ,ZTFMZΛ࢖͏ w ઃఆ͸NBY 
 NBY6TFT IUUQTUXJUUFSDPNDPEFIFYTUBUVT T

Slide 64

Slide 64 text

֎෦ͷϩάج൫Λ࢖͏ /05")05&-ͷέʔε

Slide 65

Slide 65 text

ϩάج൫͕ඍົ

Slide 66

Slide 66 text

w ͓ͦΒ͘།Ұͷऑ఺ w $MPVE fl BSFͷΈͩͱϩάΛ୳͢ͷʹۤ࿑͢Δ w -PHQVTIΛ࢖͑͹֎෦ͷϩάج൫΁ૹͬͯ͘ΕΔ w ରԠ͍ͯ͠Δج൫͕গͳ͍ɺ੍໿͋Γ w 5BJM8PSLFST 2VFVF࢖ͬͯૹΔ෦෼Λ 
 ࣗલͰ࣮૷͢Δ ϩάج൫͕ඍົ

Slide 67

Slide 67 text

w ͓ͦΒ͘།Ұͷऑ఺ w $MPVE fl BSFͷΈͩͱϩάΛ୳͢ͷʹۤ࿑͢Δ w -PHQVTIΛ࢖͑͹֎෦ͷϩάج൫΁ૹͬͯ͘ΕΔ w ରԠ͍ͯ͠Δج൫͕গͳ͍ɺ੍໿͋Γ w 5BJM8PSLFST 2VFVF࢖ͬͯૹΔ෦෼Λ 
 ࣗલͰ࣮૷͢Δ ϩάج൫͕ඍົ

Slide 68

Slide 68 text

2VFVFͰϩάΛૹ৴͢Δ

Slide 69

Slide 69 text

w ($1ͷ$MPVE-PHHJOH΁ૹ৴͢Δ w ࠓͩͱ5BJM8PSLFSTΛར༻͢Δͷ͕Φεεϝ 2VFVFͰϩάΛૹ৴͢Δ

Slide 70

Slide 70 text

2VFVFͰϩάΛૹ৴͢Δ w 4DPQFΛهड़ w $MPVE-PHHJOHͷ"1*΁ ϦΫΤετ͢Δ

Slide 71

Slide 71 text

2VFVFͰϩάΛૹ৴͢Δ w -PHHFS$MBTT w ഑ྻΛ࣋ͭϓϩύςΟ FOUSJFT w "1*ϋϯυϥͰ͸ 
 ͜ͷϝιουΛݺͼग़͢

Slide 72

Slide 72 text

2VFVFͰϩάΛૹ৴͢Δ w "1*ͷॲཧͷ࠷ޙʹ 
 FOUSJFTΛΩϡʔʹૹ৴͢Δ w όοναΠζͷ্ݶ͸ 
 NFTTBHFT

Slide 73

Slide 73 text

2VFVFͰϩάΛૹ৴͢Δ w $POTVNFSͰϝοηʔδΛ 
 ड৴͢Δ w $MPVE-PHHJOH΁ૹ৴ 


Slide 74

Slide 74 text

ʮָ͍͠ʯͷ࠶དྷ🔥

Slide 75

Slide 75 text

ʮָ͍͠ʯͷ࠶དྷ🔥 w ։ൃͨ͠ΞϓϦΛ୭͔ʹ࢖ͬͯ΋Β͏·Ͱͷ 
 εςοϓ͕୹͘ͳͬͨ w ։ൃˠϦϦʔεˠϑΟʔυόοΫʢϧʔϓʣ w ΍Γ͍ͨ͜ͱͷຊ࣭ʹूதͰָ͖͍ͯ͠ʂʂ