このリポジトリは、2024年2月1日から23日にかけて制作した、 「ちいさなよせがき」というWebアプリのプロトタイプです。
得られたフィードバックをもとに、2024年7月末までのリリースを目指して開発を続けています。
- Next.js App Router
- やや未成熟な面がありますが、プロトタイプということで思い切って採用しました。
- とはいえ使いやすいことは間違いなく、ここから成熟してくる読みで思い切って正式に採用するかもしれません。
- 意図的にServer Actionを多用する構成にしましたが、
嬉しい面と苦しい面が両方見えてよかったです。 - バックエンドの知識が足りず、時間もなかったことから乱雑な実装となってしまい、最初にきちんと時間を掛けてバックエンドを設計する必要性を痛感しました。
- やや未成熟な面がありますが、プロトタイプということで思い切って採用しました。
- React Hook Forms
- これがないと生きられません
- ORMでも使うのでzodを入れていますが、Cloudflare Pagesなどにデプロイしようするとバンドルサイズで引っかかる気もしている
- でもDrizzle ORMではzodが前提なので仕方ない
- Tailwind CSS
- これはいつも通り
- tailwind-variantsのおかげでやや複雑なスタイルでもCSS in JSチックに実装できて簡潔で良いです
- Mantine UI
- 恥ずかしながら今までUIコンポーネントライブラリを使わず気合の実装をしていましたが、今回初めて使ってみました。
- 全体的に使用感が良く、カラーパレットのカスタマイズがかなり簡単で良かったです。
- 一方でレイアウト用コンポーネントについては若干思っていたのと違うところがありました。
- Drizzle ORM
- 最高です一生使います
- Prismaとは異なり、薄めのSQLラッパーという思想で開発されているので、無理なく使いやすいです。
- それでもきちんとJOINで発行される複数テーブルのクエリビルダーやライブラリ側でのリレーション、さらにそれにきちんと型がついており非常によくできています。
- TypeScript完結なのもありがたい
- Supabase
- 開発期間が短かったので、認証、DB、オブジェクトストレージを一気に揃えられることから採用しました。
- やや苦しい面が見えたので、本リリースでは大幅な構成変更が予定されています。
- しかしながら、適切な代替がなかなか見つからないのでDBだけでも継続利用するかもしれません。Planet Scaleの定額プラン廃止が痛い
- Vercel
- デプロイ先として採用しました。
- 本リリースでは、Cloudflare Pages を使いたいですが、Next.jsがNodeランタイムに最適化されている関係から厳しそうですね。
- 特にDynamic Functionsを多用する認証周りなどの都合上、PPRが使えると都合が良さそう