$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Workers を定期実行する方法は一つじゃない
Search
rokuosan
July 18, 2025
Programming
0
340
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
400
Kotlin で始める MCP 入門
rokuosan
0
230
【学内向け】主観でやるオレオレ RubyKaigi 2025 Recap
rokuosan
0
13
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
290
KC3 2024 Dockerで始める自宅サーバー入門
rokuosan
0
480
お手軽アウトプット環境を求めて
rokuosan
0
190
Kotlinを使ってマイクラ鯖をWebで管理するアプリケーションを作るつもりでギリギリ間に合う予定だったけど非同期処理に躓いて大失敗した話
rokuosan
0
190
Other Decks in Programming
See All in Programming
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
900
AIコーディングエージェント(Gemini)
kondai24
0
280
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
180
Vibe codingでおすすめの言語と開発手法
uyuki234
0
130
AIコーディングエージェント(Manus)
kondai24
0
220
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
200
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
AIエージェントの設計で注意するべきポイント6選
har1101
5
2.4k
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
4k
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
980
AtCoder Conference 2025
shindannin
0
640
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
190
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
65
Information Architects: The Missing Link in Design Systems
soysaucechin
0
720
How to Ace a Technical Interview
jacobian
281
24k
The Limits of Empathy - UXLibs8
cassininazir
1
190
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Accessibility Awareness
sabderemane
0
24
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
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