Creator Blog

クリエイターブログ

自動生成ヒーロー(OGスタイル): 認証サービスであるBetterAuthについて調べてみた

認証サービスであるBetterAuthについて調べてみた

AuthTypeScript

認証基盤の選定メモ:BetterAuth / Clerk / Cognito / Auth0

こんにちは!IT/DEV事業部でUI/UXデザインからエンジニアリングを行っているSakataです!

今回は自社サービスの認証を作成する際に、認証系のライブラリやサービスをいくつか検討したので、その比較メモを残しておきます。


BetterAuthとは?

BetterAuth

BetterAuthは、比較的最近にVersion 1.0が公開されたTypeScriptファーストの認証フレームワークです。

類似サービスにはAuth.js、Firebase Auth、Auth0、Supabaseなどがありますが、BetterAuthは「ライブラリ形式」であるため、ユーザーデータが自分のDBに保存されるのが大きな特徴です。Next.js界隈だと、人気のAuth.js(NextAuth.js)の対抗馬という感じですね。

基本的な認証機能は一通り揃っていて、Email/Password、ソーシャルログイン、パスキー、2FA、Email OTPなどが使えます。連携できるプロバイダーも非常に豊富です!


フレームワーク非依存なのが魅力

BetterAuthはTypeScript製なので、特定のフレームワークに依存せずに導入できます。ReactやNext.jsはもちろん、NuxtやVue、バックエンドではHonoやExpressなど、どこでも使えるのが非常に魅力的です。

TypeScriptファーストなだけあって型推論も非常に強力です。型駆動開発を行う場合、これほど相性の良いライブラリは他にないかもしれません。

ORM関連では、Drizzle ORMやPrismaなどの主要なものをサポートしているため、バックエンドと同じ技術基盤で扱えるのも嬉しいポイントです。弊社ではバックエンドにHono、Drizzle、PostgreSQLを採用しているため、親和性は完璧でした。

ただし、他の認証基盤と違って「フルマネージド」ではありません。実際のDBやインフラ、ログイン・登録画面などのUI部分は自前で用意する必要があります。


他の認証基盤との比較

選定にあたっては、特に「複雑なアカウント管理構造に対応できるか」という点に着目しつつ、ランニング費用などとの比較を行いました。比較対象は Amazon Cognito / Clerk / Auth0 の3つです。

Auth0:完成度と信頼性は抜群

Auth0

Auth0はあらゆる場所で使われているだけあって、機能は非常に豊富です。高度なセキュリティ要件があるなら真っ先に候補に上がります。 ただ、サービス初期に入れるにはコスト面と学習コストの高さが気になり、今回は断念しました。ここはお財布に余裕があるサービス向けの選択肢ですね。

Clerk:爆速で開発できるフルマネージドSaaS

Clerk

ReactやNext.jsでアプリを作る際にとても人気のあるIDaaSです。 無料枠(10,000 MAUまで)もありますが、基本は有料のサービスです。フルマネージドなので、BetterAuthと違ってユーザーデータはClerk側に保存されます。この点でベンダーロックインが発生するのと、自社DB側でもユーザー管理をするならデータの同期を考える必要があります。 とはいえ、必要な機能や画面がそのまま揃っているので、MVPでとにかく早く出して検証したい場合には、採用する価値が大いにありそうです。

Amazon Cognito:AWSとの親和性が高く、一番安い

Cognito

AWSの認証・認可を行えるフルマネージドサービスです。 コストパフォーマンスが非常に優秀で、50,000 MAUまで無料。それを超えても1ユーザーあたり0.6円程度と、かなりお財布に優しいです。 ただ、よく聞く話ですが「開発者体験(DX)がそこまで良くない」という点があります。AWS特有の概念やポリシーの理解が必要で、扱うにはインフラ知識が不可欠です。また、他のサービスへの移行が大変そうな気配もあります。


結論:今回はBetterAuthに決めました

まとめると、こんな感じです。

BetterAuth:追加費用なし、独自構築ができ、TypeScript環境との相性が最高。

Clerk:とにかく爆速で認証基盤を用意できる。

Cognito:AWSとの親和性が高く、費用も安い。

最終的にClerkかBetterAuthかで悩みましたが、今回は「認証・認可はバックエンド側に閉じる」という構成を前提としたため、Clerkは不採用としました。構築の速さは魅力でしたが、アカウント周りの設計自由度を優先し、自分たちでコントロールできるBetterAuthを選びました。

Cognitoについても、初期の構築や設定の面倒さを考えると、今はまだ時期が早い(DXを優先したい)として見送りました。

おわりに

認証・認可をフルスクラッチで作るのはセキュリティ的にも厳しく、考慮すべき点も多すぎるため、やはり何らかの基盤に乗っかりたいところです。 今回はBetterAuthを採用しましたが、個人プロダクトを作るならClerk一択だな、と改めて思ったりもしました。

まずはBetterAuthを使い込んでみて、詳しくなったタイミングでまた使ってみた感想をまとめたいと思います!

アジア向けマーケティングやディストリビューション、デザインからIT開発まで、5SENSEはあなたの戦略的なパートナーとなります。お気軽にお問い合わせください。

Contact Us