2022年9月、node-backend-sample で Express + TypeScript の API 雛形を作った。Next.js の API Routes だけだと手狭になってくる規模のとき用に、独立した API サーバの型を一度ちゃんと作っておきたかった。
構成
ただ Express を立てるだけじゃなくて、DB とテストまで一通り入れた。
- Express + TypeScript
- Prisma(
schema.prisma+ マイグレーション +seed.ts) - Jest(
userController.spec.ts) - docker-compose で DB を立てる
コミットも prisma setup → express user route → test jest の順で、足場 → ルート → テストと積んでいった跡が残っている。src/controllers/userController.ts に対して userController.spec.ts を並べて置く、というレイヤ + テストの形をここで決めた。
学び
Express 自体は枯れていて安心なんだけど、最初にディレクトリ構成と型を決めないと、すぐスパゲッティになるのが正直なところ。controller / route / utils を分けて、Prisma を DB アクセスの一枚に挟む、くらいの規律を最初に敷くと後が楽だった。
resetDatabase.ts みたいなテスト用のリセットを用意しておくと、Jest を回すときに状態が汚れなくて良い。テストを書く前提で組むと、自然と関数が小さくなる、というのも実感した。
おわり
この雛形は本番投入したわけではないけど、「独立 API を切るならこの形」という基準になった。とはいえ Express は記述量が多いので、このあと Hono に流れていく。node-backend-sample は、Hono / Cloudflare Workers に移る前の、重い方の経験として残っている。