GraphQLとは?Facebookが開発したデータ操作のための技術規格

GraphQLとは

GraphQL(グラフキューエル)は、Facebookが開発したデータ操作のための技術規格です。QLは「Query Language(クエリ言語)」を表しています。GraphQLとは、GraphQL API を介して何らかのデータをリクエスト・更新するためのデータクエリ言語と考えると理解しやすいでしょう。

GraphQLでは、クエリを発行してデータをリクエストすると、JSONデータのレスポンスが返ってくる仕組みになっています。リクエストしたいフィールドをクエリ内で指定する必要がありますが、その仕様のおかげで必要なデータのみを取得できます。必要以上に大きなデータを受け取ることがなく、シンプルで無駄のないアプリ開発が行えます。

RESTとの比較

GraphQL APIと同様の技術規格にREST APIがあります。GraphQLが開発された理由には、RESTに対する不満がありました。 REST API は、アプリで使用したいデータと、そのために必要となるサーバークエリに違いを感じるのが不満のひとつだったようです。

例えば、 REST APIでリクエストで投げるURLを見ても具体的にどんなデータが返ってくるのか想像しにくい面があります。また、データをリクエストした場合、アプリで使わないようなデータまで含んだ必要以上の大量データが返ってくることがあります。

一方、GraphQLによるクエリでは、リクエスト内容をより詳しく指定できるようになっていて、必要な情報だけを無駄なく取得できます。また、クエリの内容とレスポンスの内容がよく似ているため、リクエストソースを見れば何が返ってくるのか予測しやすくなっています。アプリ開発者にとってはソースコードが読みやすくなり、アプリ開発の効率が向上します。

リクエスト

{
  hero {
    name
    height
    mass
  }
}

レスポンス

{
  "hero": {
    "name": "Luke Skywalker",
    "height": 1.72,
    "mass": 77
  }
}

GraphQL の特徴

GraphQL には、以下の特徴があります。

  • GraphQL API を介してデータをリクエスト・更新するためのデータクエリ言語
  • GraphQL APIでクエリを発行してサーバーにリクエストを送信すると、クライアントにJSONデータのレスポンスが返る
  • クエリの内容とレスポンスの内容がよく似ているため、リクエストソースを見れば返されるデータの形式が予測しやすい
  • アプリ開発者にとってはソースコードが読みやすくなり、アプリ開発の効率が向上する
  • 必要な情報だけを無駄なく取得できる
  • シンプルで学習しやすい
  • GraphQLにはバージョンが無く、返されるデータの形状はクライアント側のクエリによって決まる
  • サーバー側で新しい機能を追加をしたり、旧い機能を廃止することはできるが、常に最新版にバージョン更新していくような手間は無い

GraphQL を学ぶメリット

GraphQLで求人を検索すると、ウェブサービス開発のフロントエンドエンジニア、サーバーサイドエンジニアなどでの募集が確認できます。GraphQLのスキルが求められる職場では、GraphQLの他に使えることが望ましいスキルとして、React、 Angular、Node.js、TypeScriptなどが挙げられています。

GraphQL公式サイト: https://graphql.org/