GraphQL の概要 - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

GraphQL の概要

GraphQL は、アプリケーションがサーバーからデータを取得できるように開発されたデータ言語です。この言語は宣言型であり、自己ドキュメント化スタイルです。GraphQL オペレーションでは、クライアントが、データがサーバーから返されたときにデータを構築する方法を指定します。これにより、クライアントが必要なデータ形式で、クライアントが必要なデータに対してのみクエリできます。

GraphQL には次の 3 つのトップレベルオペレーションがあります。

  • クエリ: 読み取り専用の取得

  • ミューテーション: 書き込んで、その後に取得

  • サブスクリプション: データを受け取るための、存続期間の長い接続

GraphQL は、API の機能を定義するスキーマを介して、これらのオペレーションを公開します。スキーマは型で構成されていて、それぞれの型はルート型 (クエリ、ミューテーション、またはサブスクリプション) またはユーザー定義の型です。開発者は、自分の GraphQL API の機能を定義するスキーマから始めます。クライアントアプリケーションはその GraphQL API とやり取りします。このプロセスの詳細については、「スキーマの設計」を参照してください。

スキーマを定義したら、型のフィールドがデータを返す必要があります。GraphQL API では、GraphQL リゾルバーを通じて行われます。これは、データソースに対する呼び出しを行う関数、またはある値 (個々のレコード、レコードのリストなど) を返すためのトリガーを呼び出す関数のいずれかです。リゾルバーは、NoSQL データベース、リレーショナルデータベース、検索エンジンなどのさまざまな型のデータソースを持つことができます。複数のデータソースからのデータを集約し、ニーズに合うように混在および照合して、同一の型を返すことができます。

スキーマがリゾルバー関数に接続されると、クライアントアプリケーションは GraphQL クエリまたは必要であればミューテーションやサブスクリプションを発行できます。クエリは、query キーワードの後に中括弧とフィールド名 (allPosts など) が続いてます。フィールド名の後の 2 番目の中括弧の中に、返されるデータが入っています。例:

query { allPosts { id author title content } }

このクエリは、allPosts フィールドに対してリゾルバー関数を呼び出し、idauthortitle、および content の値を返すだけです。システム内に多数のポストがある場合 (たとえば、allPosts がブログの投稿を返すと仮定して) でも、このクエリは 1 回のネットワーク呼び出しで行われます。設計は変化する可能性がありますが、このような場合、従来のシステムでは通常、各ポストに対する個別のネットワーク呼び出しでモデル化されます。ネットワーク呼び出しが軽減されることによって帯域幅の要件が軽減されるため、クライアントアプリケーションによって消費されるバッテリー寿命や CPU サイクルを節約できます。

これらの機能により、新規アプリケーションのプロト型作成や既存のアプリケーションの変更が非常に迅速になります。この機能の利点は、アプリケーションのデータ要件が、ユーザーが選択したプログラム言語用の UI コードを使用して、アプリケーション内で共存できることです。これにより、バックエンドの実装でデータモデル化をエンコードするのではなく、クライアントとバックエンドチームが独立して作業できるようになります。

最後に、型システムでは、ページ分割、リレーション、継承、インターフェイスに対して強力なメカニズムが提供されています。GraphQL の型システムを使用する場合に、異なる NoSQL テーブル間でさまざまな型を関連付けることができます。

詳細については、以下のリソースを参照してください。