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
すぐ使える Cloudflare Workers!
Search
Kei Kamikawa
March 09, 2024
3.8k
15
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
すぐ使える Cloudflare Workers!
Kei Kamikawa
March 09, 2024
More Decks by Kei Kamikawa
See All by Kei Kamikawa
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
310
オレを救った Cline を紹介する
codehex
17
18k
どこでも使える Cloudflare Workers!
codehex
6
1.4k
htmx is fun!
codehex
3
440
Go to Cloudflare Workers
codehex
8
2.5k
AI Gateway 使っているよ!
codehex
2
2.2k
日時処理の新スタンダード: Synchro によるタイムゾーン安全、楽々開発
codehex
1
2.7k
Cloudflare Workers は楽しい!
codehex
9
3.5k
gRPC Client on Cloudflare Workers
codehex
2
7.2k
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
500
Code Review Best Practice
trishagee
74
20k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
440
Building a Scalable Design System with Sketch
lauravandoore
463
34k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Crafting Experiences
bethany
1
230
Six Lessons from altMBA
skipperchong
29
4.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Transcript
͙͑͢Δ$MPVE fl BSF8PSLFSTʂ $MPVE fl BSF.FFUVQ0LJOBXB7PM
!DPEFIFY !$PEF)FY w /05")05&-Ͱಇ͍͍ͯ·͢ w 1P$Λ࡞ͬͯɺӡ༻·Ͱ͍࣋ͬͯ͘ w ࣗಈԽɺ"*ΠϯςάϨʔγϣϯ w ͓٬༷͚ɺ͚ࣾ
͙͢ʹָ͍͑ͯ͠ʂ
͙͢ʹָ͍͑ͯ͠ʂ w σϓϩΠ͢Ε͙͢ʹ͑Δʂ w ؆୯ͳ+BWB4DSJQUͷίʔυ͚ͩͰ͑Δʂ w ࢝ΊΔͨΊʹ֮͑Δ͜ͱ͕গͳ͍ʂ w ૣ͍ʂʂ
IUUQTTQFBLFSEFDLDPNDPEFIFYDMPVE fl BSFXPSLFSTIBMFTJJ
ΞϓϦέʔγϣϯͷ։ൃڥΛ͑Δ ίϯςφΛͬͨڥͱͷൺֱ
ίϯςφ࣌ͷ։ൃڥ
ίϯςφ࣌ͷ։ൃڥ w ։ൃڥΛ͑Δͷ໘͍͘͞ʂ w w
ίϯςφ࣌ͷ։ൃڥ w ։ൃڥΛ͑Δͷ໘͍͘͞ʂ w %PDLFS fi MFͷهड़ɺΞϓϦΛಈ͔ͨ͢Ίͷઃఆ ϑΝΠϧͷهड़ɺڥมͳͲ w
ίϯςφ࣌ͷ։ൃڥ w ։ൃڥΛ͑Δͷ໘͍͘͞ʂ w %PDLFS fi MFͷهड़ɺΞϓϦΛಈ͔ͨ͢Ίͷઃఆ ϑΝΠϧͷهड़ɺڥมͳͲ w %#ͩͬͨΓ2VFVFͩͬͨΓɺ$SPO+PCͳͲ
ΛϩʔΧϧͰ༻ҙ͢Δͷେม
None
֮͑Δ͜ͱ͕͍ͬͺ͍ʂʂ
$MPVE fl BSF8PSLFSTͷ߹
$MPVE fl BSF8PSLFSTͷ߹ w ։ൃڥςϯϓϨʔτΛͬͯηοτΞοϓՄೳ w ։ൃڥͱσϓϩΠڥͷဃ͕গͳ͍ w ϥϯλΠϜͷXPSLFSE044
IUUQTHJUIVCDPNDMPVE fl BSFXPSLFSE w ΠϯϑϥͷػೳXPSLFSEΛܦ༝ͯ͠ར༻Ͱ͖Δ
ΞϓϦέʔγϣϯͷ։ൃڥΛ͑Δ $ npx create-cloudflare my-app --framework hono \ --deploy false
ΞϓϦέʔγϣϯͷ։ൃڥΛ͑Δ $ tree my-app --gitignore my-app ├── README.md ├── package.json
├── src │ └── index.ts ├── tsconfig.json └── wrangler.toml
ΞϓϦέʔγϣϯͷ։ൃڥΛ͑Δ $ cd my-app && npm run dev $
curl http://localhost:8787 Hello Hono!
w XSBOHMFSUPNMʹσϓϩΠޙʹར༻͢ΔڥมΛॻ͘ w EFWWBSTʹϩʔΧϧͰར༻͍ͨ͠ڥมΛॻ͘ ڥมΛ͑Δ
ڥมΛ͑Δ $ echo "ENV = \"local\"" >> .dev.vars $
ls .dev.vars .dev.vars
name = "my-app" compatibility_date = "2023-01-01" [vars] ENV = "development"
ڥมΛ͑Δ XSBOHMFSUPNM
import { Hono } from "hono"; const app = new
Hono<{ Bindings: { ENV: string; }; }>(); app.get("/", (c) => c.text(c.env.ENV)); export default app; ڥมΛ͑Δ JOEFYUT
ڥมΛ͑Δ $ cd my-app && npm run dev $
curl http://localhost:8787 local
w XSBOHMFSίϚϯυΛར༻ͯ͠ϦιʔεΛ࡞ w ϦιʔεΛར༻͢ΔͨΊʹXSBOHMFSUPNMઃఆΛهड़ w $MPVE fl BSF8PSLFSTͰར༻Ͱ͖ΔϛυϧΣΞ جຊಉ͡
ϛυϧΣΞΛ͑Δ
ϛυϧΣΞΛ͑Δʢྫ,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" }
[[kv_namespaces]] binding = "TEST_KV" id = "da56a0e3ee6641fabf26b726e60fa550" XSBOHMFSUPNM ϛυϧΣΞΛ͑Δʢྫ,7ʣ
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ʣ
$ curl http://localhost:8787/counter 1 ϛυϧΣΞΛ͑Δʢྫ,7ʣ
ͪΐͬͱͨ͠Ϣʔεέʔε /05")05&-ͷ߹
$034ͷϔομՃ
$034ͷϔομՃ
$034ͷϔομՃ
͍߹ΘͤͷϝλใՃ
w ΞϓϦ͔Β;FOEFTLͷ͍߹ΘͤϑΥʔϜͷ ಋઢ͕༻ҙ͞Ε͍ͯΔ w ϩάΠϯதͷͲͷ͓٬༷͔Βͷ͓͍߹Θ͔ͤ Ѳ͍ͨ͠ w ؔ࿈͢ΔใΓ͍ͨ
͍߹ΘͤͷϝλใՃ
͍߹ΘͤͷϝλใՃ
w ΞϓϦ͔Βͷಋઢશͯ$MPVE fl BSF8PSLFSTͷ 63-Λࢦఆ͢Δ w ϝλใ63-ΫΤϦύϥϝʔλʔʹηοτ͢Δ w 8PSLFS্ͰΫΤϦύϥϝʔλʔͱҰக͢Δ
νέοτϑΟʔϧυ൪߸ࠩ͠ସ͑Δ UG@ ͍߹ΘͤͷϝλใՃ
ϝϯςφϯεϞʔυ
ϝϯςφϯεϞʔυ IUUQTTQFBLFSEFDLDPNDPEFIFYHSQDDMJFOUPODMPVE fl BSFXPSLFST
$IBU(151SPYZ
w (15TͷΞΫγϣϯ͔Β/05")05&-"1*Λ ར༻͢ΔͨΊͷ1SPYZ w $IBU(150"VUIೝূΛఏڙ͍ͯ͠ΔͷͰ ϩάΠϯ͕Ͱ͖Ε/")"1*Λ͑Δ w "1*ͱ0"VUIαʔόʔಉ͡3PPU63-͡Όͳ͍ͱ
ར༻Ͱ͖ͳ੍͍ݶ͕͋ΔͨΊ $IBU(151SPYZ
$IBU(151SPYZ w BVUIPSJ[BUJPOͱUPLFOΛఏڙ w 4DPQF'JSFCBTF"VUIͰඞཁͳ ༰Λೖྗ͢Δ
$IBU(151SPYZ
%ZOBNJD-JOLT
w 'JSFCBTFͰఏڙ͞Ε͍ͯΔػೳ w %ZOBNJD-JOLTഇࢭ༧ఆ w ϢχόʔαϧϦϯΫͷ༷ʹԊͬͯ։ൃ͢Δඞ ཁ͕͋ͬͨ w ϦϯΫΛ։͘ͱɺରԠ͢ΔΞϓϦ͕ىಈ ͞Εɺͦͷը໘Λ։͘͜ͱ͕Ͱ͖Δ
w ͪΖΜϓϨϏϡʔը໘͋Δ %ZOBNJD-JOLT
%ZOBNJD-JOLT w ॖ63-Λൃߦ͢ΔΠϝʔδ w 63-ʹ͏จࣈྻ͕ඃΒͳ͍Α͏ʹ %VSBCMF0CKFDUTͷτϥϯβΫγϣϯΛར༻ w )POPΛͬͯɺϓϨϏϡʔը໘ͱࣝผࢠͷใΛؚ Ίͨ+40/ϑΝΠϧʢ"TTFU-JOL
fi MFʣΛฦ͢
ΧελϚΠζ ֎෦ͷσʔλετϨʔδΛ͏
ίϯγΣϧδϡϓϥοτϑΥʔϜ
֎෦ͷϩάج൫Λ͏ ($1$MPVE-PHHJOH
ʜͷલʹ-PH1VTIͷհ
-PH1VTI
w $MPVE fl BSFʹؔ࿈ͨ͠ϩάΛ࿈ܞͰ͖Δ ετϨʔδϩάΛૹΓ͚ͭΔػೳ w $MPVE fl BSF8PSLFSTͷ߹DPOTPMFMPHͷ
தΛ1VTIͰ͖Δ -PH1VTI
-PH1VTI
-PH1VTI
-PH1VTI
-PH1VTI
-PH1VTI
ࣗͰϩάΛૹΔ
w ͓ͦΒ͘།Ұͷऑ w $MPVE fl BSFͷΈͩͱϩάΛ୳͢ͷʹۤ࿑͢Δ w ͏ͪͷϢʔεέʔεͩͱ$MPVE-PHHJOHΛܦ༝ͯ͠ ૹΔํ͕͍҆
ࣗͰϩάΛૹΔ
2VFVFͰϩάΛૹ৴͢Δ
w ($1ͷ$MPVE-PHHJOHૹ৴͢Δ w ࠓͩͱ5BJM8PSLFSTΛར༻͢Δͷ͕Φεεϝ͔ 2VFVFͰϩάΛૹ৴͢Δ
2VFVFͰϩάΛૹ৴͢Δ w 4DPQFΛهड़ w $MPVE-PHHJOHͷ"1* ϦΫΤετ͢Δ
2VFVFͰϩάΛૹ৴͢Δ w -PHHFS$MBTT w ྻΛ࣋ͭϓϩύςΟ FOUSJFT w "1*ϋϯυϥͰ ͜ͷϝιουΛݺͼग़͢
2VFVFͰϩάΛૹ৴͢Δ w "1*ͷॲཧͷ࠷ޙʹ FOUSJFTΛΩϡʔʹૹ৴͢Δ w όοναΠζͷ্ݶ NFTTBHFT
2VFVFͰϩάΛૹ৴͢Δ w $POTVNFSͰϝοηʔδΛ ड৴͢Δ w $MPVE-PHHJOHૹ৴
֎෦ͷΩϡʔΛ͏ $MPVE5BTLTͷซ༻
8PSLFST2VFVF CFUB ͕ෆ҆ఆ
8PSLFST2VFVF͕ෆ҆ఆ ͨ·ʹΩϡʔ͕٧·Δ
8PSLFST2VFVF͕ෆ҆ఆ αʔόʔ͔ΒͷλΠϜΞτͳ͍
w $MPVE fl BSF8PSLFST্ʹඇಉظ͚ͷ ΤϯυϙΠϯτΛ࡞͢Δ w 8PSLFSTܦ༝Ͱ5BTLΛ࡞͢Δ w ࡞͞Εͨ5BTLΛͱʹ$MPVE5BTLTܦ༝Ͱ
ΤϯυϙΠϯτ͕ୟ͔ΕΔ $MPVE5BTLTΛ͏
$MPVE5BTLTΛ͏
͙͢ʹָ͍͑ͯ͠🔥
͙͢ʹָ͍͑ͯ͠🔥 w ։ൃͨ͠ΞϓϦΛ୭͔ʹͬͯΒ͏·Ͱͷ εςοϓ͕͘ͳͬͨ w ։ൃˠϦϦʔεˠϑΟʔυόοΫʢϧʔϓʣ w Γ͍ͨ͜ͱͷຊ࣭ʹूதͰָ͖͍ͯ͠ʂʂ