Closed8

Cloudflareスタックを使ってみたかった

ちぢちぢ

Cloudflareの主にPagesとWokersとD1を使ってWeb&モバイルアプリケーションを作りたかった

開発体験も重視

ちぢちぢ

前提としてクライアントにWebだけでなくモバイルも対応させたいため、Pages Functionsではなく、独立したバックエンドサーバーを建てる必要があった。

つまりWorkersでサーバーを建てる

ちぢちぢ

まず、Honoを触った。
感触はとても良かったが、一つ問題が発生する。

モバイル対応しながらEnd-to-Endな型安全開発を実現するためには、honoのRPCモードやtRPCではなく、OpenAPIかGraphQL(gRPCは開発体験が無理)を使う必要があった。

そこでHonoのZod OpenAPIを使った。

しかし、ParamとBodyを同時に取得できなかった謎のバグ?だけでなく、OpenAPIをほぼ生で書いていく必要があったため、そもそもの開発体験がうーんという感じだった。

理想はFastAPIやNestJSの開発体験だった。

ちぢちぢ

そこで、HonoをやめてCloudflareのitty-router-openapiを使ってみるもそもそも型安全じゃなかったり。。。

Cloudflare WorkersでDXの良い型安全なOpenAPI開発はまだ時期尚早であったことを認識し、GraphQLを使うことに決める。

しかし今度は過去の開発経験から、「せっかくGraphQL使うならDBスキーマからCRUD自動生成くらいしてほしい」という欲が出てきてしまった。(RESTではそうならない)

ちぢちぢ

そう、DrizzleからDrismaにする必要が出てきたのだ。

そもそもDrizzleのクエリの仕方は癖がありPrisma育ちの自分からすると少し書きづらいところもあり、それも相待ってPrismaにしたかった。

しかし、D1未対応という現実が待ち受ける。

ちぢちぢ

そもそもD1対応がKyselyかDrizzleの選択肢しかない状況で、D1を使おうとするのが違ったのかもしれない。

ここでD1を諦める。

さようならD1。おかえりSupabase。

ちぢちぢ

PrismaかつCloudflare Wokrersを使うとなれば、Prisma Accelarateを使う必要があるが、そもそもD1の夢を捨て去った自分にとってCloudflare Workersに固執する必要も無くなった。

さようならWorkers。おかえり何か。

SupabaseのEdge FunctionsではPrisma Accelarateを使う必要があるため、Node.jsも動かせるVercel FunctionsやCloud Functionsを使うのもあり。

あれ・・・何か大事なことを忘れている・・・?

このスクラップは3ヶ月前にクローズされました