OpenNext + Hono on Cloudflare でイマドキWeb開発スタックを実現する
by
rokuosan
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
OpenNext + Hono on Cloudflare Workers で イマドキWeb個人開発スタックを実現する rokuosan (id:rokuokun)
Slide 2
Slide 2 text
About me (5.0s) ● id:rokuokun / rokuosan / ろくお ● 若者です ● 趣味 ○ Kotlin, Go ○ ではない→ Perl, TypeScript ● https://x.com/rokuosan_dev
Slide 3
Slide 3 text
このLTの内容 ● 二番煎じです ● 大体これと同じことをやります ○ mizchi さんの 「遂に Cloudflare + Next.js(OpenNext) + Prisma 6.7.0(No Rust) が動く時代が来た」 ○ https://zenn.dev/mizchi/articles/cloudflare-opennext-prisma-no-rust ○ 違いは DB 周りと Hono を載せる部分 ● 個人開発向けです
Slide 4
Slide 4 text
すでに記事あります ● 気になった人は読んでみてください ● https://blog.km3.dev/entry/20250527/1748280176
Slide 5
Slide 5 text
知っておくべきこと ● Cloudflare Workers ○ Cloudflare の Edge Computing ● OpenNext ○ Next.js の脱 Vercel をするために頑張っているプロジェクト ○ AWS 、 Cloudflare 、 Netlify をサポート(2025/05/29現在) ● Hono ○ ナウなヤングにバカウケのフレームワーク
Slide 6
Slide 6 text
OpenNext on Cloudflare Workers のセットアップ
Slide 7
Slide 7 text
超簡単 1 ステップ ● これで OpenNext on Cloudflare Workers が出来上がる ● 今日はこれだけ覚えて帰ってください。
Slide 8
Slide 8 text
さっきデプロイしたやつ ● https://kyototechtalk-8.km3.workers.dev/ ● 大迫力の Next.js のランディングページが見えるはず
Slide 9
Slide 9 text
お手軽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 にいい感じのコードを追加する
Slide 10
Slide 10 text
(ちなみに)OpenNext に差し替えるには ● 公式ドキュメント通りに進めるだけ ○ https://opennext.js.org/cloudflare/get-started ● next.config.ts に2行加える(伏線) ● package.json の scripts に↓を書いておく
Slide 11
Slide 11 text
やっておくと良いこと ● キャッシュ設定 ○ Workers では next.config.ts 上での Cache-Control ヘッダ設定ができない ○ public/_headers に以下の内容を書いておく(デフォルトのNext.jsと同じ設定)
Slide 12
Slide 12 text
App Router に Hono を入れる
Slide 13
Slide 13 text
Catch-all Route に Hono をおく ● src/app/api/[[...route]]/route.ts に↓を書く
Slide 14
Slide 14 text
Cloudflare D1 と接続する
Slide 15
Slide 15 text
Cloudflare D1 と繋げるには ● Hono では Bindings に書く ○ OpenNext ではこれをすると型情報が変わるのでビルド不可能 ● じゃあどうするか ○ getCloudflareContext() という謎関数を呼ぶ ○ ↑ ローカルはどうやって?
Slide 16
Slide 16 text
Cloudflare D1 と繋げるには ● Hono では Bindings に書く ○ OpenNext ではこれをすると型情報が変わるのでビルド不可能 ● じゃあどうするか ○ getCloudflareContext() という謎関数を呼ぶ ○ ↑ ローカルはどうやって? ○ ↓これでローカルに SQLite を立ててくれる(伏線回収)
Slide 17
Slide 17 text
Cloudflare D1 with Drizzle ORM ● マイグレーション ○ 作成は npx drizzle-kit generate ○ 実行は npx wrangler d1 migrations apply
Slide 18
Slide 18 text
Cloudflare D1 with Drizzle ORM getCloudflareContext()からのDBを Drizzle で扱えるように Middleware で切り替える
Slide 19
Slide 19 text
Hono のうまみを享受する
Slide 20
Slide 20 text
Hono Client を使う ● hc でクライアント作成 ● client.でAPI呼び出し ● おまけで型情報がついてくる
Slide 21
Slide 21 text
Hono Client を使う(SSR) ● SSRも当然できるぞ!
Slide 22
Slide 22 text
この構成のいいところ
Slide 23
Slide 23 text
メリット ● Next.js の資産を大体使える ● Next.js でバックエンド処理を書かなくていい ○ いちいちディレクトリ切って route.ts とか書かなくていい ● バックエンドとフロントエンドでアーキテクチャを変更できる ○ Next.js の制約から離れてある程度自由に書くことができる ○ やりたければクリーンアーキテクチャぽくもかける ● 安い
Slide 24
Slide 24 text
デメリット ● OpenNext の開発サイドが疲れるリスク ○ 依存が増えると言えることではある ● 常にアップストリームに追従しているとは限らない ○ とはいえ、更新されてすぐにバージョン上げることはない ● 実は無料枠だとすぐに超えそう ○ 3MiB 上限だけど、この時点で大体 2.4 MiB ある(そんな)
Slide 25
Slide 25 text
おわり
Slide 26
Slide 26 text
さっき作ったリポジトリ ● https://github.com/rokuosan/kyototechtalk-8
Slide 27
Slide 27 text
OpenNext + Hono on Cloudflare Workers で イマドキWeb個人開発スタックを実現する rokuosan (id:rokuokun)