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
Workers を定期実行する方法は一つじゃない
Search
rokuosan
July 18, 2025
Programming
0
170
Workers を定期実行する方法は一つじゃない
Cloudflare Workers Tech Talks in Kyoto #1 LT
rokuosan
July 18, 2025
Tweet
Share
More Decks by rokuosan
See All by rokuosan
OpenNext + Hono on Cloudflare でイマドキWeb開発スタックを実現する
rokuosan
0
210
Kotlin で始める MCP 入門
rokuosan
0
110
【学内向け】主観でやるオレオレ RubyKaigi 2025 Recap
rokuosan
0
7
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
240
KC3 2024 Dockerで始める自宅サーバー入門
rokuosan
0
220
お手軽アウトプット環境を求めて
rokuosan
0
170
Kotlinを使ってマイクラ鯖をWebで管理するアプリケーションを作るつもりでギリギリ間に合う予定だったけど非同期処理に躓いて大失敗した話
rokuosan
0
170
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java with ASF in the Middle
ivargrimstad
0
130
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
520
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
240
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.9k
Design Foundational Data Engineering Observability
sucitw
3
200
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
160
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
24
12k
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
690
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
2.3k
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
890
Tool Catalog Agent for Bedrock AgentCore Gateway
licux
6
2.5k
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
230
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Writing Fast Ruby
sferik
628
62k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
What's in a price? How to price your products and services
michaelherold
246
12k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Facilitating Awesome Meetings
lara
55
6.5k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Making Projects Easy
brettharned
117
6.4k
Typedesign – Prime Four
hannesfritz
42
2.8k
How to train your dragon (web standard)
notwaldorf
96
6.2k
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