Slide 1

Slide 1 text

GraphQL SQL 2018/10/02 Cybozu Meetup Osaka rito

Slide 2

Slide 2 text

目次 ➔ 自己紹介 ➔ What's GraphQL ➔ SQL Libraries ➔ まとめ

Slide 3

Slide 3 text

{ me { name, job, company, community, twitter } } { “data” : { “me”: { “name”: “rito” “job”: “software developer” “company”: “Ateam Lifestyle Inc.” “community”: “Rails follow-up osaka organizer” “twitter”: “@chimame_rt” } }

Slide 4

Slide 4 text

What’s GraphQL

Slide 5

Slide 5 text

公式のページによると GraphQLはAPI用のクエリ言語であり、既存のデータでこれらのク エリを実行するためのランタイムです。GraphQLは、APIのデータ の完全で分かりやすい説明を提供し、クライアントに必要なものを 何でも尋ねる能力を与え、時間の経過とともにAPIを進化させやす くし、強力な開発ツールを可能にします。

Slide 6

Slide 6 text

雑に言うと "API用でかつSQLぽいもの"でクライアント が好きなデータを好きな形式で好きなだけ JSONを取得できるもの。

Slide 7

Slide 7 text

サーバ側はどうやって 作ればいいの?

Slide 8

Slide 8 text

GraphQLを実装するLibraryは 各言語ごとあります

Slide 9

Slide 9 text

Ruby https://github.com/rmosolgo/graphql-ruby

Slide 10

Slide 10 text

PHP https://github.com/webonyx/graphql-php

Slide 11

Slide 11 text

Python https://github.com/graphql-python/graphene

Slide 12

Slide 12 text

Java https://github.com/graphql-java/graphql-java

Slide 13

Slide 13 text

結局どの言語も実装には大小の 学習コストが必要

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

もっと楽したい!

Slide 16

Slide 16 text

よろしい ならばSQL Libraryだ

Slide 17

Slide 17 text

SQL Libraries

Slide 18

Slide 18 text

ここで言うSQL Library RDBMSやNoSQLなどのスキーマ定義から いい感じにGraphQL APIを生やしてくれる Library。逆方向で言うとGraphQLをそのま まデータベースに投げるようなもの。

Slide 19

Slide 19 text

3つ紹介します

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

PostGraphile(ぽすとぐらふぃる) GitHub: https://github.com/graphile/postgraphile DockerHub: https://hub.docker.com/r/graphile/postgraphile/

Slide 22

Slide 22 text

特徴 ❏ PostgreSQL専用(名前の通り) ❏ PostgreSQLにGraphQLを投げれるようになるイ メージ ❏ 名前の通りPostgreSQLにかなり特化しており、 FunctionもGraphQLにできる ❏ 認証が必要ならJWTぽい(公式見る限り) 認証もFunctionで思いのまま

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Hasura GraphQL Engine(はすらぐらふきゅえるえんじん) GitHub: https://github.com/hasura/graphql-engine DockerHub: https://hub.docker.com/r/hasura/graphql-engin e/

Slide 25

Slide 25 text

特徴 ❏ PostgreSQL専用 ❏ Hasuraのサービスを一部OSSに切り出し ❏ PostGraphileと違いDBスキーマの管理画面を有 する ❏ 認証はJWT以外にもWebhookで自在(firebaseも 可能)

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Prisma(ぷりずま) GitHub: https://github.com/prisma/prisma DockerHub: https://hub.docker.com/r/prismagraphql/prisma /

Slide 28

Slide 28 text

特徴 ❏ 複数のRDBMS等に対応 (MySQL,PostgreSQL,MongoDB一部) ❏ 紹介する中では勢いは一番ある なぜならGraphQL tutorialに掲載 ❏ 認証は自前で実装する必要あり ❏ Prismaのclient libraryも近々リリース (現在beta)

Slide 29

Slide 29 text

比較 PostGraphile Hasura GraphQL Engine Prisma GitHubスター数 対応データベース 認証機構 導入方法 実装言語 5,919 3,933 10,422 Nodejs Haskell Scale PostgreSQL PostgreSQL PostgreSQL, MySQL MongoDB Function独自実装 Webhook Nodejs独自実装 npm or docker docker npm or docker その他特徴 PostgeSQL上です べて実装可能 管理画面付きで使 いやすい なんといっても GraphQL公式

Slide 30

Slide 30 text

まとめ

Slide 31

Slide 31 text

まとめ ❏ SQLエンジンがGraphQLを解釈できるようになる 感覚でOK ❏ GraphQL APIサクッと作るだけならそこまでハード ルは高くない ❏ フロントエンド技術の発展とGraphQL SQL Library の登場でC/Sシステム構造に近い形になる(かも)

Slide 32

Slide 32 text

ご清聴ありがとうご ざいました。 rito@chimame_rt