English

Polski

Français

Deutsch

Español

Nederlands

Dansk

GraphQL Editorにログインする
リソース

GraphQLは何に使われるのか?

GraphQLは、RESTの代替として作られたAPIとの通信方法である。

01新しいクエリー言語

GraphQLは、Facebookとその開発者コミュニティによって開発されたAPI用のクエリ言語である。2018年6月に初公開され、現在では市場に広く認知された成熟した技術となっている。その結果、認知度も高く、多くの企業が導入を選択している。RESTがどのように違うのかを説明するためには、現在でも最も広く使われているRESTについて見てみる必要がある:RESTとそのベースとなっているものだ。GraphQLはRESTの主要な問題を解決しているため、しばしばRESTの後継と呼ばれています。ご存知のように、これは一種の古いシステム設計に基づいている。それによると、各データモデルは別々のアドレスで利用できる。例えば、洋服のオンラインショップの場合、カート、倉庫、商品、その他多くのアドレスを持つことができる。

GraphQLクエリー言語

02欲しいものだけを手に入れる

実際、このようなアドレスの数は決して少なくなく、それどころかシステムとともに増えていくだろう。ほとんどすべてのアドレスに対して、get、post、put、deleteのリクエストを処理するための一連のコールを作成する必要があることを覚えておいてほしい。その結果、管理するアドレスの数が膨大になり、データを取得するために必要な呼び出しの数もさらに膨大になる。GraphQLはまったく異なる方法で動作する。私たちがデータをリクエストできるアドレスは1つだけで、真実のソースは1つだけです。何が得られるかは、私たち自身とクエリの組み立て方だけに依存します。

GraphQLクエリ

03柔軟なクエリー

GraphQLの主な特徴は、APIから取得したいデータを正確に定義する柔軟なクエリを実行できることだ。さらに、この言語ではネストされたクエリを作成することができるため、これらの分野でREST APIよりもさらに優位に立つことができる。

GraphQLクエリ

04プラットフォームにとらわれない

RESTとGraphQLの共通点の1つは、プラットフォームやプログラミング言語に依存しないことである。もう1つの共通点は、同じ操作の冪等性です。RESTアーキテクチャとGraphQLの両方において、検索、変更、削除などの操作は、結果を変えることなく繰り返し使用することができます。

RESTとGraphQLの比較

05基本要素

GraphQLの基本要素は次のとおりである:

  • query:データを取得できるGraphQLの基本的なフェッチ操作。重要な違いは、必要なものだけを取得するようにqueryを構造化することで、要求したデータを正確に取得できることです。
  • mutation: GraphQLの基本的なデータ操作で、データの作成、変更、削除ができる。
  • スキーマ:すべてのGraphQLプロジェクトの基盤で、ロジックと機能を記述し、SDL(Schema Definition Language)で記述され、主なコンポーネントは型とフィールドです。 リゾルバ:GraphQLスキーマをバックエンドに接続するために使用される関数で、操作をデータに変換し、文字列、整数、NULL、その他のプリミティブを返すことができます。
  • resolver:リゾルバ:GraphQLスキーマをバックエンドに接続するために使用される関数で、操作をデータに変換し、文字列、整数、NULL、およびその他のプリミティブを返すことができます。
GraphQLの変異

06スキーマ定義言語

GraphQLは独自の構文を使用する:SDL(スキーマ定義言語)である。これはAPIのスキーマとその型とフィールドを指定するために使用される。型は type キーワードを使用して宣言され、フィールドはオブジェクトの型ごとに括弧で囲んで追加されます。

GraphQLスキーマ

07成長するコミュニティ

GraphQLはまだRESTほど普及していないが、そのコミュニティは急速に成長している。GitHub、Netflix、PayPal、Shopifyなど、すでに多くの主要な採用企業がある。今後さらに増えるのは時間の問題だ。

GraphQL コミュニティ

GraphQL

  • 過不足のないフェッチ:GraphQLは柔軟なクエリ、あるいはネストされたクエリを使用し、必要なものだけを正確に取得できるようにする。何度も呼び出す必要がなく、余分なデータを受け取ることもありません。
  • シングル・エンドポイント同様に、エンドポイントは1つだけでよい。クエリの構造によって必要なものを得ることができます。データをどのように整理するかは関係なく、クエリを正しく構築しさえすれば、完全に混乱した状態からでも必要なものをすべて得ることができます。
  • これは、クライアントに公開されるすべてのAPIがスキーマ定義言語で記述されていることを意味し、データの矛盾をなくし、エラーの発見をはるかに容易にします。

REST

  • 階層:REST APIは、リソースのアドレスにUniform Resource Identifiers(URI)を使用する。これは、すべてが単純な階層的アプローチに従うことを意味し、小規模なプロジェクトでは問題ありませんが、大規模なプロジェクトやより複雑なプロジェクトでは多くの問題を引き起こす可能性があります。
  • 複数のラウンドトリップ:階層構造であるため、REST APIは通常多くのエンドポイントを持ち、クライアントは必要なデータをすべて取得するために複数のコールを必要とする。
  • フェッチの過不足:階層構造と柔軟なクエリの欠如により、REST APIは通常、不必要なデータをフェッチしすぎるか、必要なデータをすべて取得するために複数回の呼び出しが必要になる。これは明らかに帯域幅とパフォーマンスの両方に影響し、通常、アプリケーションが大きくなればなるほど、さらに深刻になります。

離陸の準備はできているか?

ワールドクラスのビジュアルグラフ、ドキュメンテーション、APIコンソールを組み合わせたエディタにより、あなたの作業を向上させます。

GraphQL Editorを始めよう