Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
すぐ使える Cloudflare Workers!
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kei Kamikawa
March 09, 2024
3.9k
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
340
オレを救った Cline を紹介する
codehex
17
18k
どこでも使える Cloudflare Workers!
codehex
6
1.4k
htmx is fun!
codehex
3
450
Go to Cloudflare Workers
codehex
8
2.5k
AI Gateway 使っているよ!
codehex
2
2.3k
日時処理の新スタンダード: Synchro によるタイムゾーン安全、楽々開発
codehex
1
2.8k
Cloudflare Workers は楽しい!
codehex
9
3.5k
gRPC Client on Cloudflare Workers
codehex
2
7.5k
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Are puppies a ranking factor?
jonoalderson
2
4k
Designing for Timeless Needs
cassininazir
1
520
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
Ethics towards AI in product and experience design
skipperchong
2
420
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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 Γ͍ͨ͜ͱͷຊ࣭ʹूதͰָ͖͍ͯ͠ʂʂ