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/