- 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/
- Facebook製 UI framework
- ↑が要求するAPI仕様
- サーバーサイドで「Relay」という場合はだいたいこちらで
- Relay (1) を使わなくてもRelay (2)には準拠しておくとよい
- Relay ID
- Relay (2) が定めるIDのフォーマット
- 単体でTypeとそのインスタンスIDを表す
- 典型的な実装は
base64encode([type_name, database_id])
という感じ
- Relay Connection
- Relay (2) が定めるリソースのリストフォーマット
- ただのJSON配列ではなくラッパーオブジェクトを必須としているため、totalCountなどのカスタムフィールドも簡単に入れられる
- cursorベースのpagination interfaceを提供
- graphql-rubyだとAR::RelationやArrayを透過的にconnection型として扱える