3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初心者】Hasuraとnextauth.jsを繋げた際の備忘録

Last updated at Posted at 2022-07-18

はじめに

皆さんは、Hasuraを使ったことはありますか?

端的に表現すると
「GraphQLのAPIサーバーをDB(Heroku)と連携した状態で、立ててくれる」
というものです。

CLIでいじれたりもするのですが、
僕はブラウザで動かすGUIをいじっております。

ただ、このHasura、かなり厄介な点もあります。
それは、「日本語での学習コンテンツが充実していない」というものです。
そもそもGraphQL自体がかなり新しめのものであるから、仕方ないっちゃ仕方ないですけども。

そんなわけで、個人的にいじったりしていたんですけど、かなり序盤でつまづきました。
どこでつまづいたかというと、「Next.js+Auth0+Hasura」のセットアップチュートリアルです。

まさかの超序盤で申し訳なくなりました。
チュートリアルの通りにやっても、エラーを吐き、そのエラーを調べても解決策が見つからず。。。と言った感じでした。

ただおそらくAuth0側のエラーであり、Auth0自体の経験が少ない自分は、他の認証サービス・パッケージを使えばよいのではないかと考え、
「そういやNext.jsに認証パッケージあったな」と思って調べたら、該当するdocsがあったので、それを参考にエントリしました。

そもそもHasuraって?

Hasuraに関しては先程端的に、

「GraphQLのAPIサーバーをDB(Heroku)と連携した状態で、立ててくれる」
としましたが、もう少し掘り下げてみましょう。

1.QueryやMutationを勝手に作ってくれる

テーブルを作成・定義するだけで、CRUDに関するクエリやミューテーションを扱えるAPIを作ってくれます。
ページネーションとかも実装できるらしいですね、すごい、、、
また、subsciptionも作ることができるので、リアルタイム処理が必要なときも助かります。

ちなみにsubscription?ってなった同志の方はこちらをどうぞ。

2.サーバレスなサービスとつなげることができる

AWS lambdaなどのサーバレスFaaSで独自でDB扱うビジネスロジックを書いて、
それをHasuraを通して実行!なんてこともできるそうです。

3.認証サービスや既存のデータベースとも連携可能

Auth0,firebaseなどのIDaaSと互換性もあります。
また、既存のPostgresDBなら接続ができるそうです。

いずれの特徴も自分はまだ十分に使えるわけではないので、
今後触れる機会を作っていけるように精進します。

nextauth.jsって?

名前の通り、Next.jsを用いて認証機能を実現するためのライブラリです。

sessionやJWT認証を用いた機能の実装や、
GithubやGCPなど、様々なログイン機能に対応しています。

個人的にはdocsがかなり充実していると感じるので、結構好きです。

どうやって実現していくの?

本当にチュートリアルをガン見でできました。
なんならAuth0のdocsより楽だったんじゃ、、、

@skillrecordings/next-auth-hasura-adapterというライブラリが、
Hasuraとnextauth.jsをつなげてくれるんですね。

コードをQiitaに書き起こそうかとも思ったのですが、
下手に書く必要性も感じなかったので、こちらを参考にしてください。

余談ですが、開発初心者の自分は、
docsのCreate User Table内が、いきなり説明もなく出てきて困惑しました。
そんなときは、nextauth.jsのdocsを参考にしましょう。

nextauth.jsに準拠したテーブルを作る+Hasura Adapterでエンドポイントを呼び出し操作することで、
Userテーブルなどの操作を実現するんですね。

おわりに

読んでいただきありがとうございました。

認証で使うライブラリや、JWT認証が個人的に理解が乏しいと感じました。
ただ、これだけははっきりしました。

Hasura めっちゃ便利。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?