GraphQL
概要

従来のWeb APIで主流の「REST」方式では、サーバ側が機能や用途ごとに用意したURLにクライアントが要求を送り、データを取得する。この方式では、一度のアクセスで不要なデータまで付いてきたり、逆に必要な情報が足りず、複数のURLへ何度も問い合わせを行わなければならなかったりする課題があった。
これに対し、GraphQLではクライアント側が「どの項目のデータが欲しいか」をリクエストの中で具体的に宣言する。サーバは指定された項目だけを過不足なく一度の通信で返すため、通信量の削減と処理の効率化を同時に実現できる。
クライアント側がそのAPIで何をできるか事前に確かめられるよう、スキーマが公開される。そのAPIでどのようなデータが提供されているかを定義した設計図のようなもので、どのようなクエリを送れば目的のデータが得られるかを事前に把握できる。データは「数値」「文字列」といったデータ型が決まっており、リクエストの内容が正しいかどうか通信の前に検証することができる。
データの操作については、データ取得を行う「クエリ」(Query)、データの追加や更新を行う「ミューテーション」(Mutation)、データの変更をリアルタイムで受け取る「サブスクリプション」(Subscription)という三つの主要な操作が定義されている。特に、サブスクリプション機能は、チャットアプリや株価チャートのような、情報の即時性が求められるサービスの開発において非常に有効である。
GraphQLは、Webアプリケーションやモバイルアプリにおいて、複雑なデータ構造を効率的に扱うAPI仕様の設計に利用されている。特定のフレームワークやデータベース、プログラミング言語などに依存しないため、既存の様々なシステムを統合するゲートウェイとしても活用されている。