今年からプログラマーの仕事はぐっと減らし、リモートで週2,3日程度だけ受けています。ちょうど、fluct時代にお世話になったもっちーさんが独立してさっそく困っているということでお手伝いをしてました。【PR】もっちーさんはお手伝いを募集中!
いまts, hono, hono-rpc, zod, prisma, cloudflare worker, d1あたりのstackで開発しているが、まるで雰囲気でやっている(でもなんとなかっている
— トミール (@tomita) July 21, 2025
1年ほどやってみての所感を放流しておきます。全体的にはAIに向いていて楽
Cloudflare
SimpleというよりEasyなのだがよくできてて好き。めんつゆ最高
DuckDBを使いたくて(Betaの)Cloudflare Containers使ったが、npm run dev でdocker build/runが走ってすんなり使え、「コンテナがDIされた」と感心した。1
Hono
OpenAPI定義をどちらでやるか
@hono/zod-openapi と hono-openapi を使う2パターンがあって名前も似てて検索結果も混じりやすい。標準honoのapi2 に乗っかる方が好みなので、middlewareスタイルであるhono-openapiの方を利用した。とはいえ、実ハンドラーコードの前にどっちゃりopenapiの定義、zodの定義が乗るので見通しは微妙。
一件エッジケースのPRを送った→※merge済
Prisma
型とスキーマ管理が欲しいし有名だから選択したけど…、後悔している。ORMはやっぱ自分の足元を撃つ。kyselyとかの方が良かったか
prisma generator(@prisma/generator-helper)は楽しい
protobufを思い出した。今回作るのがActive RecordっぽいCRUDハンドラーだったので、まるっとgenereate。DMMF構造体からリレーションの情報とか取りやすければ良いのだけど、モデル名・テーブル名・フィールド名だけでもけっこうやりたいことはできる
CIでのファイルの生成時(つまりcloudflare環境ではないnode環境)で、cloudflare:workers moduleが読まれると動かないので、遅延読み込みにするのをして対応したがもっといいやり方があるのかもしれない
const { getContainer } = await import('@cloudflare/containers')
D1 migrationをどちらでやるか
prismaを使う場合、Cloudflare D1のマイグレーション管理のやり方は2パターンあるが、今回ターゲットがD1ということと+prismaのロックオンを避けたい気持ちでBのwranglerコマンドを使う方にした。
- A.
prisma migrateコマンド, _prisma_migrationsテーブルで管理 - B.
wrangler d1 migrateコマンド, d1_migrationテーブルで管理
具体的には、schema.prismaをいい感じにしたあと、こんなので差分をmigrationファイルとして出力させて(必要なら微調整)
npx prisma migrate diff --from-local-d1 --to-schema-datamodel schema.prisma --script > db/migrations/0002_aaaaa.sql
ローカルで適用して確認、その後本番適用
find .wrangler/state/v3/d1/miniflare-D1DatabaseObject/ -type f -name '*.sqlite' -delete
npx wrangler --env test d1 migrations apply test-db --local