◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-04-30上級

Antigravity × Better Auth でモダンTypeScript認証基盤を構築する

auth.ts を書き直し続ける消耗から抜けるために、Better Auth で TypeScript 認証基盤を組み立てます。Auth.js v5 との設計思想の違い、スキーマ生成、メール+パスワード認証、Google / GitHub OAuth、セッション取得までを5ステップで実装します。

antigravity470better-auth認証7typescript28nextjs4rbac

✦ プレミアム記事

「またauth.tsを書き直すのか」— 認証実装でこの感覚に覚えがある方は少なくないと思います。NextAuth が Auth.js v5 になり、API は綺麗になりました。それでも [...nextauth]/route.ts のジェネリックを睨みながら型エラーと格闘する日々は、私にも身に覚えがあります。

そんな中、TypeScript ネイティブで書かれ、フレームワーク非依存で、プラグインで機能を拡張できる Better Auth が、個人開発・スタートアップを中心に確かな支持を集めるようになりました。

Antigravity の AI エージェントを「認証実装担当」に据えて、Better Auth の認証基盤をゼロから組み上げた記録をまとめます。手順の羅列ではなく、実際に手を動かして初めて分かった箇所 — 設定キーをひとつ隣の階層に置いただけで、エラーも出さずに機能が死ぬ場所 — を軸にしました。

なぜ今 Better Auth なのか — Auth.js v5 との設計思想の違い

Better Auth と Auth.js v5 は「ユーザー認証ライブラリ」という入口こそ同じですが、設計思想が大きく異なります。Auth.js は Next.js の App Router と密結合した「フレームワーク統合型」、Better Auth は HTTP ハンドラを公開する「ヘッドレス型」です。

Antigravity でスキャフォールドする際にも、この違いが体感できます。Auth.js は auth.ts と route.ts の両方を扱う必要があり、エージェントへの指示も「両ファイルを同期させて」と但し書きが必要でした。Better Auth は auth.ts 1 ファイルにロジックが集約され、HTTP レイヤは auth.handler を呼ぶだけです。エージェントから見た「認知負荷」が大きく違うのです。

私が個人開発で乗り換えを決めたのは、次の3点が決定打になりました。

  • データベーススキーマが宣言的に生成される: Drizzle や Prisma のスキーマファイルが CLI から自動出力されます
  • Passkey / Magic Link / 2FA がプラグインで素直に乗る: コアを汚さずに機能を追加できます
  • エッジランタイムで動く: Cloudflare Workers / Vercel Edge で破綻しません

「Auth.js でも同じことはできる」のは事実です(Auth.js v5 を含む従来型の構成は Antigravity で作る Next.js SaaS — 認証・Stripe・D1 で扱っています)。ただ、できる「やり方」の数が多すぎて、コミュニティの記事ごとに作法が違うのが負担でした。Better Auth は「正解の型」が比較的固定されている分、Antigravity に学習させやすいと感じています。

前提環境とプロジェクトの準備

本記事のサンプルは Next.js 16(App Router)+ TypeScript 5.6 + Drizzle ORM + Cloudflare D1 を前提に進めます。データベースアダプタは PostgreSQL(Neon)/ Prisma にも置き換え可能なので、自分の環境に読み替えてください。

# プロジェクトのベース作成
pnpm create next-app@latest my-saas --typescript --app --eslint --tailwind --src-dir
cd my-saas
 
# 認証 + DB ライブラリのインストール
pnpm add better-auth drizzle-orm
pnpm add -D drizzle-kit @types/bun
 
# Cloudflare D1 を使う場合
pnpm add @cloudflare/workers-types better-sqlite3

pnpm を使っていますが、npm / bun でも問題ありません。Antigravity 上でこのプロジェクトを開いたら、最初に AGENTS.md に「このプロジェクトでは Better Auth を使う。Auth.js への置き換え提案は禁止」と明示的に書いておきましょう。これだけでエージェントの提案が安定します。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦NextAuth/Auth.js v5の複雑さに疲れていた人が、Better Authへ実プロジェクトを移行する判断基準と手順を今日から実行できる
✦Antigravity のエージェントにスキーマ生成からOAuth・RBAC・Passkey実装まで一気通貫で任せる、現場で使える指示パターンを習得できる
✦本番でハマりやすいCookie・CSRF・セッション失効・マルチテナント分離の落とし穴を、コード付きの正解形で回避できる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

▣ アプリ開発2026-05-03
Antigravity × TypeScript で作る冪等性キーと重複排除ストア本番設計ガイド
Stripe Webhook の二重課金や Temporal ワークフローの再実行で起きる重複処理を、冪等性キーと重複排除ストアで止める本番設計を、Antigravity を伴走者にして TypeScript で組み上げる実践ガイドです。
▣ アプリ開発2026-04-29
Antigravity と Inngest で組み立てるイベント駆動 AI ワークフロー — 本番運用を見据えた実装ガイド
Antigravity の AI エージェントと Inngest を組み合わせて、リトライ・冪等性・ヒューマン・イン・ザ・ループまで備えたイベント駆動 AI ワークフローを本番投入する実装手順を解説します。
▣ アプリ開発2026-10-14
ドキュメントのないコードを仕様書に起こす前に、読ませる順番を fan-in で決めておく
ドキュメントのない既存コードをエージェントに読ませて仕様書にするとき、最初に渡すファイルをどう決めるか。import の被参照数(fan-in)とルート定義ファイルから「読ませる順番」を出す 36 行の Python と、77 ファイルの Next.js プロジェクトで測った割合をまとめます。