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
Workers を定期実行する方法は一つじゃない
Search
rokuosan
July 18, 2025
Programming
630
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Workers を定期実行する方法は一つじゃない
Cloudflare Workers Tech Talks in Kyoto #1 LT
rokuosan
July 18, 2025
More Decks by rokuosan
See All by rokuosan
internal/testlog で遊ぼう
rokuosan
0
610
発見!Ruby 9
rokuosan
0
63
CloudflareのBetaサービスでローカルなLLMを安全に公開する
rokuosan
0
510
OpenNext + Hono on Cloudflare でイマドキWeb開発スタックを実現する
rokuosan
0
740
Kotlin で始める MCP 入門
rokuosan
0
360
【学内向け】主観でやるオレオレ RubyKaigi 2025 Recap
rokuosan
0
56
Kotlin で Discord の絵文字コミュニケーションを盛り上げたい!
rokuosan
0
51
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
380
KC3 2024 Dockerで始める自宅サーバー入門
rokuosan
0
910
Other Decks in Programming
See All in Programming
パスワード再設定メールのURLについて知っておこう
uyuki234
0
180
気持ちぃ〜角丸 Squircle
ryu1013
0
340
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
210
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
1k
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
2.9k
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
150
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
190
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
130
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
100
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
170
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
200
最近”作らせてる” ローカルAIアプリの話
akit37
0
500
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
290
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Writing Fast Ruby
sferik
630
63k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
Why Our Code Smells
bkeepers
PRO
340
58k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Building AI with AI
inesmontani
PRO
1
1.3k
Google's AI Overviews - The New Search
badams
0
1.6k
Transcript
Workers を定期実行する方法は一つじゃない There's more than one way to Trigger It
on Worker Cloudflare Workers Tech Talks in Kyoto #1 2025/07/18 @rokuosan_dev id:rokuokun
60ページあります
間に合わせます
⾃⼰紹介 • rokuosan ◦ id: rokuokun ◦ @rokuosan_dev • 株式会社はてな
◦ アルバイト • 若さでバトルしてます • Kyoto.kt やってます ◦ 地域 Kotlin コミュニティ
Workersを定期実⾏したい Workers で定期実⾏といえば?
Event Trigger (Cron)
wrangler.jsonc に cron を書く
Scheduled Handler を書く
デプロイするとなんか出た
動く
完成
定期実⾏できた
終 制作‧著作 ━━━━━ ⓇⓀⓈ
よかったですね
ではなく
これ以外にもあります
Durable Objects
ここから本編
Durable Objects で定期実⾏やっていき
Durable Objects ?
詳しくはこれ読んでください
(素朴な疑問) Durable Objectsで 定期実⾏の仕組みって あったっけ?
None
これ
耐久性のある物体アラーム
Durable Objects Alarm(耐久性のある物体アラーム) • プログラムからスケジュールできる ◦ Cronはダッシュボードもしくは wrangler.{jsonc,toml}に設定 • Object
単位でスケジューリング可能 • 失敗時のリトライもしてくれる ◦ 2秒始まりの Exponential backoff で最⼤6回 • cron よりも柔軟に⾊々できる • 実装は DurableObject を継承したクラスを作る(次ページ)
DurableObject#alarm が Alarm によって呼び出される •
Alarm と Cron Trigger 登録制限 CPU 時間 経過実時間 wall-clock time
プログラムから の操作 エラー時のリトライ Cron Trigger Free: アカウントごとに 5 個 Paid: アカウントごとに 250 個 Free: 10ms Paid: 15min 15分 不可 なし Durable Object Alarm 制限なし ※ Durable Object のクラス数 (実装の数)は制限あり Free: 100 Paid: 500 デフォルト30秒 設定で5分まで引き 上げ可能 15分 可能 あり 2秒始まりの Exponential Backoff 最大6回 https://developers.cloudflare.com/workers/platform/limits/#worker-limits https://developers.cloudflare.com/durable-objects/platform/limits/
アラームの操作 • 提供されているAPI ◦ getAlarm(): number | null ◦ setAlarm(number):
void ◦ deleteAlarm(): void • 時間は ms で指定する • 次に実⾏するときのエポック時を setAlarm で渡す • https://developers.cloudflare.com/durable-objects/api/alarms/
再スケジュールできる機構を⽤意する
次のアラームをセット •
• Durable Object に値をセット 次のアラームをセット
• 現在のアラームの取得 次のアラームをセット
• 次回のアラームをセット 次のアラームをセット
• Durable Object から 設定読み取り 定期実⾏したいことを書く
• TIPS alarmInfo にリトライ情報があ る 定期実⾏したいことを書く
• したいことをする 定期実⾏したいことを書く
• 次のアラームをセット 定期実⾏したいことを書く
あっというまに出来上がり
wrangler.{jsonc,toml} • お馴染みの bindings を書く • migrations ◦ Durable Objects
は背後に SQLite が 潜んでいるのでその設定
さっき作った schedule を呼ぶだけ。 やり方は Durable Objects のRPC機能 と同じ。 スケジューラ登録くんを Hono
で書く
やってみる
動いた
よかったですね
直前までこれをやる予定だった
せっかくなのでAI
Workers AI 超⼿軽
None
AI Gateway も サッと組み込める
AI Gateway も サッと組み込める
AI や R2 などのBindingsにあるリソースも Durable Objects から扱える!
None
プロンプト書いて
10分おきに動くようにして
10分おきに嘘を教えてくる ホラ吹きずんだもんの完成
おわり
Workers Queuesでも同じことをができそう (未検証)
リポジトリ https://github.com/rokuosan/workers-schedule-example
終 制作‧著作 ━━━━━ ⓇⓀⓈ
Workers を定期実行する方法は一つじゃない There's more than one way to Trigger It
on Worker Cloudflare Workers Tech Talks in Kyoto #1 2025/07/18 @rokuosan_dev id:rokuokun