付録ARelay各仕様解説

Ⓒvvakame. All Rights Reserved

Relay†1はFacebookが開発しているReact+GraphQLでフロントエンドの開発を行うためのライブラリですが、そこではRelayを便利に使うためのGraphQLスキーマに対する仕様がいくつか追加されています。GraphQLのエンドポイントを提供している著名なWebサービスにGitHubがありますが、そのGitHubのAPIもRelayの追加仕様を踏襲しています。本付録ではRelayの追加仕様が実世界でどう運用されているかを、GitHubを例に考えていきたいと思います。

Relayが要求するサーバ側(スキーマ)の追加仕様の狙いは次のとおりです。

  • オブジェクトの再取得を可能にするため
  • Connectionを通じたページングを実装するため
  • Mutationの結果を予測可能にするため

この3つに加えてさらに1つ、サーバ側でのデータの変更をクライアント側で捕捉する方法についてこの付録で解説します。

A.1 Global Object Identification

Global Object Identification†2は全データを共通のIDで一意に特定可能にし、再取得を容易にするための仕様です。

この仕様に従うのであれば、interface Node { id: ID! }という形式のインタフェースを定義し、さらにクエリのルートにnode(id: ID!): Nodeというフィールドを追加する必要があります。具体的には例A-1 ...

Get 初めてのGraphQL ―Webサービスを作って学ぶ新世代API now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.