Your application clients, both mobile and web, are generally able to independently craft their own queries, adding and removing data, without needing to modify server code or worry about impacting other clients. 1/ サーバーが GraphQL をサポートしていることです。アプリケーションのモバイル とウェブの両クライアントは、サーバーのコードを変更することなく、また他のク ライアントへの影響を心配したりすることなく、普通にクエリの作成、データの追 加・削除ができます。 7
documented. GraphiQL acts as an internal interactive playground and documentation for your API. Developers can find the data they need and don’t replicate server behavior in multiple places. 2/ 型やフィールドはきちんとドキュメント化されていることです。GraphiQL は、イ ンターナルな環境でインタラクティブなプレイグラウンドやドキュメントとして機 能します。開発者は必要なデータを見つけることができ、何度も同じサーバー上の 処理を記載する必要はありません。 9
and client which both integrate with their respective languages’ type systems. You now have type safety that spans your network API boundary. 3/ GraphQL のサーバーとクライアントの両方で、それぞれの言語の型システムを統 合して利用していることです。これによりネットワーク API の境界を超えた型安全 性が確保されます。 11
Working Groups recommended best practice of making your schema nullable by default. Individual field errors encountered on the server generally manifest as small, handleable, UI errors. Your app’s resilience increases. 4/ スキーマをデフォルトで null 許容にするという GraphQL Working Groups 推奨の ベストプラクティスを採用していることです。一般的にサーバー上で発生するフィー ルドのエラーは大したことがなくハンドリングできる UI のエラーです。これにより アプリの回復力( 可用性?) が高まります。 13
objects in your graph have a strong ID. Your clients can easily refetch data about individual objects. 5/ Node の仕様を採用していることです。Graph のほとんどのオブジェクトが強力な ID を持ちます。クライアントは、個々のオブジェクトのデータを簡単に再取得でき ます。 15
IDs of the Node specification to store GraphQL data in a normalized form (key ⇒ object). You never have data inconsistency issues between surfaces, and your client uses less memory. 6/ GraphQL クライアントフレームワークが、Node 仕様の強い ID を使用して正規化 された形式(キー ⇒ オブジェクト)で GraphQL のデータを保存していることで す。表示上におけるデータの不整合は発生せず、クライアントのメモリ使用量も少な くて済みます。 17
specification for modeling lists (most UIs are glorified lists). Your client GraphQL framework is able to provide robust pagination that works for all your surfaces. 7/ GraphQL サーバー側でリストをモデリングするために Connections 仕様を実装し ていることです(ほとんどの UI は見せかけのリストです) 。 GraphQL クライアント フレームワークは、どのような表示においても機能する堅牢なページネーションを 提供することができます。 19
components defines its own data dependencies using a GraphQL fragment. Queries are composed from these fragments. Components can add/remove data locally without having to worry about breaking anyone else. 8/ 各 UI のコンポーネントが、GraphQL フラグメントを使用してコンポーネントに 閉じた状態でデータを定義していることです。クエリーは、コンポーネントに書か れたフラグメントから構成されます。コンポーネントは、他のコンポーネントに対 する破壊的な影響を心配することなく、コンポーネント内部に閉じてデータを追加/ 削除することができます。 21
framework composes your components’ fragments together into a single query per surface. Your UI loads in a single paint without dozens of loading states. Your users thank you. 9/ GraphQL のクライアントフレームワークが、コンポーネントのフラグメントを使 って表示単位ごとに単一のクエリにまとめていることです。UI は、幾重にも重なっ たローディングの状態になることなく、1 回でロードされ表示されます。これによ り、ユーザーはあなたに感謝することでしょう。 23
both support @-defer and @-stream. UX designers can declaratively opt into nested loading states with one line of code directly in their components only where it improves user experience. 10/ サーバーとクライアントの両方が @-defer と @-stream をサポートしていること です。UX デザイナーは、UX を向上させる場合にのみ、1 行追加するだけでコンポ ーネント内でネストされたローディング状態を宣言的に許容することができます。 25
each component’s fragment to build targeted subscriptions for each component. Changes to the store result in only the directly affected components rerendering. Your UI is more responsive. 11/ GraphQL クライアントフレームワークが、各コンポーネントのフラグメントを活 用して、各コンポーネントで指定されたサブスクリプションを構築していることで す。バックエンド側のストアに変更を加わると、直接影響を受けるコンポーネント のみが再レンダリングされます。これにより UI がよりレスポンシブになります。 27
making use of a GraphQL language server in their editors. Fields autocomplete with available data. They can hover over fields to see documentation/types. Deprecated fields render as struck through in their IDE. 12/ クライアント側のアプリを開発するエンジニアが、エディターで GraphQL のラ ンゲージサーバーを活用していることです。各フィールドは利用可能な内容でオート コンプリートされます。フィールドの上にカーソルを合わせると、ドキュメントや型 を見ることができます。非推奨のフィールドは、IDE で波線や取り消し線などのが表 示されます。 29
supports click-to-definition for fields/types. They can navigate to the server implementation of a field as easily as they can jump to another client function. 13/ クライアント側のアプリを開発するエンジニアの GraphQL エディターは、フィ ールド/ 型のクリック時の定義ジャンプに対応しています。他のクライアントの関数 にジャンプできるのと同様に、フィールドのサーバー実装に簡単にナビゲートするこ とができます。 31