Islands in the byte stream

Technical notes by a software engineer

GraphQLの基本用語

GraphQLって用語が分かりにくいんですよね…ということで社内用に作った用語集を公開しておきます。

  • GraphQL http://graphql.org/
    • グラフキューエル
    • query language
    • リクエストのフォーマットがGraphQLということ
    • レスポンスはJSON(でもMessagePackでもなんでも)
  • GraphiQL https://github.com/graphql/graphiql
    • グラフィクル
    • GraphQL用のAPIコンソールというかAPIエクスプローラとかそういう類のもの
      • 補完のサポートを受けながらqueryを書けるので "GraphQL IDE" とも呼ばれる
    • 実体はReactベースのウェブアプリ(フロントエンドアプリ)
      • graphiql-rails はこのフロントエンドアプリをRails Mountable Engineとして扱うためのgem
    • GitHubのGraphQL APIもGraphiQL製: https://developer.github.com/v4/explorer/
  • Schema
    • GraphQLのスキーマ定義。Rails/DBのスキーマとは別
  • Type
    • GraphQLの型定義。RubyのクラスやModelとは別
  • Relay https://facebook.github.io/relay/
    1. Facebook製 UI framework
    2. ↑が要求するAPI仕様
      • サーバーサイドで「Relay」という場合はだいたいこちらで
      • Relay (1) を使わなくてもRelay (2)には準拠しておくとよい
  • Relay ID
    • Relay (2) が定めるIDのフォーマット
    • 単体でTypeとそのインスタンスIDを表す
    • 典型的な実装は base64encode([type_name, database_id]) という感じ
  • Relay Connection Type
    • Relay (2) が定めるリソースリストのフォーマット
    • ただのJSON配列ではなくラッパーオブジェクトを必須としているため、totalCountなどのカスタムフィールドも簡単に入れられる
    • cursorベースのpagination interfaceを提供
    • graphql-rubyだとAR::RelationやArrayを透過的にconnection型として扱える