さて今までのチュートリアルを通して Hasura を使うことで何ができるかはわかったと思います。

Hasura はバックエンド領域のアプリケーション開発全てを行うことができる

ざっくりいって Hasura は今までバックエンドが担当した領域を全て担うことができます。つまり API を作る場合に用います。しかもこの API は GraphQL の規格で通信することができます。(つまり旧来の RESTFul の規格ではなく、型が明確にわかる通信ができる)

Hasura で作成した API を叩くフロントエンドは、別に作成する必要があります。通常は Apollo + React + TypeScript で作ることになるでしょう。

Hasura App は Hasura GraphQL Engine + PostgresDB の組み合わせで通常開発する

書いた docker-compose.yml をみるとわかりますが、Hasura を用いたアプリケーション開発においては、通常二つのサービスを立ち上げます。Hasura GraphQL Engine と PostgresDB です。

以下の図をみてください。

Screen Shot 2020-03-13 at 13.57.00

Hasura GraphQL Engine と PostgresDB はどのような関係か

今までのチュートリアルで PostgresDB に対して様々な操作をしてきましたが(スキーマを定義したり、アイテムをインサートしたり、データを取り出したり…)その際に一切 DB に対する SQL を書きませんでした。つまり直接 PostgresDB に対する操作を指示することはなかった。にもかかわらず、なぜ DB を操作できたのでしょうか。

それは Hasura GraphQL Engine がその役割を代わりにこなしてくれていたからです。Hasura Console(今まで我々がチュートリアルを通して操作してきた GUI ベースの画面)で操作した内容は、Hasura GraphQL Engine に伝わり、Hasura GraphQL Engine が PostgresDB に指令を出していたのです。

我々は PostgresDB に直接指示を出すことなく、Hasura Console から全ての操作を、型安全に行うことができるのです。

Hasura GraphQL Engine は GraphQL API エンドポイントを提供する

当然ですが Hasura GraphQL Engine は GraphQL API エンドポイントを提供します。つまり Apollo + React + TypeScript のフロントエンドから型安全に DB の値を取得したり、変更したりすることが可能になります。完全に型安全にです。

それだけ?

Hausra は一般的なウェブアプリケーションに必要な機能は全て提供されています。例えば認証に関するワークフロー、権限制御のデータアクセス、マイクロサービスを前提とした連携のシステム等々。

まずは一般的なウェブアプリケーションに必要とされる要件としては、認証関係を Hasura に組み込んでみるのがいいでしょう。

Hasura は JavaScript エンジニアが堅牢なウェブアプリケーションを高速に開発するにあたって強力なツールとなるはずです。