ソリッドシード株式会社

APIをクエリで操作するGraphQLとは?

2020年3月19日

Ajaxなどでフロントサイドからサーバーサイドにデータ操作する時や外部サービスからデータ操作する時はRESTを使用することが多いです。
RESTとは別の概念でデータ操作する方法としてGraphQLというのが誕生しましたのでご紹介します。

GraphQLとは?

GraphQLは Facebookで開発されましたが、 Linux Foundationの非営利組織から新たに設立したGraphQL Foundationに移譲されたのでオープンソースとなりライセンスを気にせず利用することができます。

最大の特徴として、クエリを使用してデータにリクエストすることができるため必要なデータのみ取得可能になり、 スキーマによりAPIの仕様を定義することができるようになったことです。
これによりシステム開発時のメリットが大きいため、Facebookはもとより GitHub、 Airbnb、 Netflixなど導入するサービスが増えています。

なぜ、クエリで必要なデータのみ取得することがメリットになるのか?

LESTの悩みとして、ユーザー情報にある名前のみ取得したい場合に他のデータも取得されるので余計な通信量が発生し表示スピードなどに影響されてしまうことでした。
名前のみ取得するAPIを作成すれば要件は満たせますが、他の値でも同様に行った場合にAPIの仕様が多くなり開発がとても大変になります。
このことから、クエリで欲しいデータのみ取得できるのは大きなメリットとなります。

なぜ、スキーマでAPIの仕様を定義することがメリットになるのか?

RESTではURLにデータ構造が紐づくため共有する場合はAPI仕様書を作成する必要がありましたが、GraphQLではスキーマがAPI仕様書となるため作成しなくてもデータ構造を共有することができるようになります。
API仕様書を作成する時間を省けるのは開発スピードが上がるので大きなメリットとなります。

デメリットはあるのか?

RESTはURLごとにリクエストデータにアクセスするため、URLに対してキャッシュに保存できるため簡単でした。
GraphQLはRESTと違い単一のURLになるためキャッシュに保存する設定が手間になります。

候補としてどうか?

GraphQLについてRESTと比較してメリットとデメリットを紹介しましたが、案件によってどちらが適しているかが変わると思います。
導入事例も多いので、APIを開発する時に選択肢の候補として入れてみてはどうでしょうか。

投稿者:SaitoSaito