# Cloudflare Workersを使ってラップタイマー共有サービスを作る macopy a.k.a @mackee_w --- ## 何を作ったか * 「ラップタイマー」を複数デバイスで共有するサービス * 「ラップタイム」ではない * 計時しているラップタイマーを他の端末に共有しつつ、リアルタイムで状態を共有する --- ## デモ https://lapshare.triplepoint.workers.dev/ --- ## 動機 * ミニ四駆大会を社内で開催している * 元はと言えば自社サービスのドッグフーディング目的 * コースが短いので、同時に走らせるのではなくラップタイムで競っている --- # 動機 * ラップタイマーをスマホアプリにしていたが、その間スマホが使えなくて不便 * ラップタイマーを作ろう(ハードウェア) * => 画面が小さいからインターネット経由で同期してでかい画面で見れるようにしよう --- ## 構成 * Cloudflare Workers * 同期のためにWebSocketを使用 * データストアはDurable Objects * フレームワーク: Hono * フロントエンド: preact --- ## SWR * 当初はAPIで`@vercel/swr`使用していた * 5秒毎にポーリング * これでもだいぶ実用 --- ## Workers KVとDurable Objects * Workers KV: エッジに分散されているKV * 全然同期されなくて困った * 仕組み考えると当たり前 * ローカルのwranglerだと同期される * $5払ってDurable Objectsを使うようにした * 雑にいうとActor Modelみたいなやつ * ちゃんと同期取れるようになった ---
{"metaMigratedAt":"2023-06-17T17:20:24.834Z","metaMigratedFrom":"YAML","title":"Cloudflare Workersを使ってラップタイマー共有サービスを作る","breaks":true,"contributors":"[{\"id\":\"f7561040-5378-4401-a849-a5d48adc0602\",\"add\":864,\"del\":7}]"}
    180 views