GraphQL SQL

52f95e52a6d71b67361ac179fb8405f4?s=47 chimame
October 02, 2018

GraphQL SQL

Cybozu Meetup Osaka 大阪のエンジニアが好きそうな話

52f95e52a6d71b67361ac179fb8405f4?s=128

chimame

October 02, 2018
Tweet

Transcript

  1. GraphQL SQL 2018/10/02 Cybozu Meetup Osaka rito

  2. 目次 ➔ 自己紹介 ➔ What's GraphQL ➔ SQL Libraries ➔

    まとめ
  3. { 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” } }
  4. What’s GraphQL

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

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

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

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

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

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

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

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

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

  14. None
  15. もっと楽したい!

  16. よろしい ならばSQL Libraryだ

  17. SQL Libraries

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

  19. 3つ紹介します

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

  22. 特徴 ❏ PostgreSQL専用(名前の通り) ❏ PostgreSQLにGraphQLを投げれるようになるイ メージ ❏ 名前の通りPostgreSQLにかなり特化しており、 FunctionもGraphQLにできる ❏

    認証が必要ならJWTぽい(公式見る限り) 認証もFunctionで思いのまま
  23. None
  24. Hasura GraphQL Engine(はすらぐらふきゅえるえんじん) GitHub: https://github.com/hasura/graphql-engine DockerHub: https://hub.docker.com/r/hasura/graphql-engin e/

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

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

  28. 特徴 ❏ 複数のRDBMS等に対応 (MySQL,PostgreSQL,MongoDB一部) ❏ 紹介する中では勢いは一番ある なぜならGraphQL tutorialに掲載 ❏ 認証は自前で実装する必要あり

    ❏ Prismaのclient libraryも近々リリース (現在beta)
  29. 比較 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公式
  30. まとめ

  31. まとめ ❏ SQLエンジンがGraphQLを解釈できるようになる 感覚でOK ❏ GraphQL APIサクッと作るだけならそこまでハード ルは高くない ❏ フロントエンド技術の発展とGraphQL

    SQL Library の登場でC/Sシステム構造に近い形になる(かも)
  32. ご清聴ありがとうご ざいました。 rito@chimame_rt