Open8

Cloudflareにハンズオン

TSUBOI ShotaroTSUBOI Shotaro

npm create cloudflare@latestで初期化。
本の内容に逆らって、Typescriptでやってみる。
src/index.tsに色々書いてあるけど、実行時のKey-Valueがあったり、Durable Object?があるみたい。

	// Example binding to KV. Learn more at https://developers.cloudflare.com/workers/runtime-apis/kv/
	// MY_KV_NAMESPACE: KVNamespace;
	//
	// Example binding to Durable Object. Learn more at https://developers.cloudflare.com/workers/runtime-apis/durable-objects/
	// MY_DURABLE_OBJECT: DurableObjectNamespace;

KVはともかく、Durable Objectってどんな感じに動作するんだろ。
ワーカーって同時にも動くわけでしょ?

TSUBOI ShotaroTSUBOI Shotaro

npm run deployでデプロイした。
URLにアクセスしても何も見えないけど、時間経てば解決する?

TSUBOI ShotaroTSUBOI Shotaro

とりあえず、curlはcurl: (6) Could not resolve host:になる。
だけど、携帯からアクセスするといけるな…
登録してるDNSがダメ?

TSUBOI ShotaroTSUBOI Shotaro

↑DNS変えたら成功した。
TSとJSではプログラムがちょっと違って見えるけどService Worker APIの仕様に従ってるらしいので、どっちも許容範囲内なのかな?それともJSにコンパイルされた結果で見てるのかな?

TSUBOI ShotaroTSUBOI Shotaro

request: リクエストの中身
env: 環境変数とか、他サービスへの接続とか
ctx: handlerの中で特別な処理をしたいときに呼び出す関数とか

ctxの型定義はこんな感じになってた

declare interface ExecutionContext {
  waitUntil(promise: Promise<any>): void;
  passThroughOnException(): void;
}
TSUBOI ShotaroTSUBOI Shotaro

いろんなHandlerがあるみたい。
メールとか定期実行とかキューとか。
キューについてはうっかりループにしちゃうと破産しそう。