Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenNext + Hono on Cloudflare で イマドキWeb開発スタックを...

OpenNext + Hono on Cloudflare で イマドキWeb開発スタックを実現する

Avatar for rokuosan

rokuosan

May 29, 2025
Tweet

More Decks by rokuosan

Other Decks in Programming

Transcript

  1. About me (5.0s) • id:rokuokun / rokuosan / ろくお •

    若者です • 趣味 ◦ Kotlin, Go ◦ ではない→ Perl, TypeScript • https://x.com/rokuosan_dev
  2. このLTの内容 • 二番煎じです • 大体これと同じことをやります ◦ mizchi さんの 「遂に Cloudflare

    + Next.js(OpenNext) + Prisma 6.7.0(No Rust) が動く時代が来た」 ◦ https://zenn.dev/mizchi/articles/cloudflare-opennext-prisma-no-rust ◦ 違いは DB 周りと Hono を載せる部分 • 個人開発向けです
  3. 知っておくべきこと • Cloudflare Workers ◦ Cloudflare の Edge Computing •

    OpenNext ◦ Next.js の脱 Vercel をするために頑張っているプロジェクト ◦ AWS 、 Cloudflare 、 Netlify をサポート(2025/05/29現在) • Hono ◦ ナウなヤングにバカウケのフレームワーク
  4. 超簡単 1 ステップ • これで OpenNext on Cloudflare Workers が出来上がる

    • 今日はこれだけ覚えて帰ってください。
  5. お手軽2ステップ • npm create cloudflare で Next.js 向けテンプレートをつくる ◦ npm

    create cloudflare@latest -- --framework=next --platform=workers ◦ Next.js on Cloudflare Workers が出来上がる • OpenNext に差し替える ◦ npm install @opennextjs/cloudflare@latest ◦ next.config.ts にいい感じのコードを追加する
  6. やっておくと良いこと • キャッシュ設定 ◦ Workers では next.config.ts 上での Cache-Control ヘッダ設定ができない

    ◦ public/_headers に以下の内容を書いておく(デフォルトのNext.jsと同じ設定)
  7. Cloudflare D1 と繋げるには • Hono では Bindings に書く ◦ OpenNext

    ではこれをすると型情報が変わるのでビルド不可能 • じゃあどうするか ◦ getCloudflareContext() という謎関数を呼ぶ ◦ ↑ ローカルはどうやって?
  8. Cloudflare D1 と繋げるには • Hono では Bindings に書く ◦ OpenNext

    ではこれをすると型情報が変わるのでビルド不可能 • じゃあどうするか ◦ getCloudflareContext() という謎関数を呼ぶ ◦ ↑ ローカルはどうやって? ◦ ↓これでローカルに SQLite を立ててくれる(伏線回収)
  9. Cloudflare D1 with Drizzle ORM • マイグレーション ◦ 作成は npx

    drizzle-kit generate ◦ 実行は npx wrangler d1 migrations apply
  10. メリット • Next.js の資産を大体使える • Next.js でバックエンド処理を書かなくていい ◦ いちいちディレクトリ切って route.ts

    とか書かなくていい • バックエンドとフロントエンドでアーキテクチャを変更できる ◦ Next.js の制約から離れてある程度自由に書くことができる ◦ やりたければクリーンアーキテクチャぽくもかける • 安い