GraphQLとSQLのいいとこ
取りをしたHasura

API Meetup - Oct 12 2018

Created by Takeshi Amano

天野たけし

広島出身、大学はカナダ、一応東京在住

ウクライナとかポーランドとか
モスクワによく出没

先週はNY

元々はバックエンドエンジニアだが
JSもよくいじる

職歴

電通の子会社, 初期のGengo
PayPal, Nijuyon

現在はdevMeTokyoの代表

devMeTokyoのテクノロジー

アプリ開発, カーナビ, Fintech, Salesforce
Data Science, Cyber Security, Blockchain, AI etc...

リソースは7000人以上

お仕事絶賛募集中

www.devmetokyo.com

GraphQLとの関わり

GraphCoolを去年ちょこっと触った

VueJSでアプリを作る時のバックエンド

Prisma, AWS AppSyncも使ってみた

GraphQLのメリット#1

必要な情報だけを取ってこれる

Joinみたいな事ができて、1+N問題を解消

Subscriptionはだいたいできる

GraphQLのメリット#2

バックエンドのテーブルを定義するだけでGraphQLのクエリが発行できるようになる

SQL -> RESTを書かないので大幅に工数が削減

デメリット#1
新しので枯れていない

データの受け渡しが不安定

実装毎にresolverの名前が微妙に違う
update_task (Hasura), updateTask (AppSync)

デメリット#2
SQL !== GraphQL

Joinっぽい事はできる

集合関数(COUNTとか)無い

副問い合わせも無い

ストアドプロシージャもあるわけ無い

デメリット#3
設定がめんどい

Prismaの場合バックエンドで
Node走らせてなんとかかんとか

AppSyncのJoinはDynamoDBを
いじくってどうのこうの

諦めた

GraphQLをちょっと触った結論

メリット < デメリット

しばらくいい方法を探していた

Postgraphile

Hasura

MySQL + REST

Hasura

よかった!

Hasuraチーム

インドのバンガロールとSFにオフィス

Hasuraの仕組み

Hasuraのメリット #1
Postgresベース

Postgresでテーブルを定義して
GraphQLのクエリが発行できる

集合関数、副問い合わせ
ストアドプロシージャなんでもこい

すでにPostgresのDBスキーマがあれば
インポートするだけ

Hasuraのメリット #2
consoleからいろいろできる

テーブルの作成

Joinの設定

クエリの発行

Hasuraのメリット #3
graphqurl

シンプルなGraphQLライブラリ

コードがシンプルになる

Apolloベース

コマンドからauto completionできる

Hasuraのメリット #4
インストールが簡単

Heroku経由の場合インストールはワンクリック

Docker経由

Harusaのメリット #5
ちゃんとしたスタートアップ

GREE Venturesなどから投資を受けている

サポートもしっかりしている

Hasuraデモ

Youtubeリンク

テーブルを作って -> GraphQLクエリ

集合関数や副問い合わせを含んだView

subscriptionを使ってリアルタイムのアップデート

これからのGraphQL

Hasuraとか出てきていて
少しずつ枯れはじめている

今後APIを公開する方法の有力候補

おしまい

ありがとうございました

amano@devmetokyo.com