GraphQLとは
GraphQLはFacebookが開発したAPIのクエリ言語です。クライアントが「欲しいデータの形」を宣言的に指定することで、RESTとは異なるアプローチでデータを取得します。
RESTとGraphQLの比較
| 項目 | REST | GraphQL |
|---|---|---|
| エンドポイント | リソースごとに複数 | 通常は1つ |
| 取得データの制御 | サーバー側が決定 | クライアント側が指定 |
| オーバーフェッチ | 不要なデータも取得 | 必要なフィールドのみ |
| アンダーフェッチ | 複数回リクエスト | 1回で解決 |
| 型システム | なし(OpenAPI等で補完) | スキーマで厳密に定義 |
GraphQLクエリの基本
query {
user(id: "1") {
name
email
posts {
title
createdAt
}
}
}
このクエリ1回でユーザー情報と投稿一覧を取得できます。RESTなら/users/1と/users/1/postsの2回リクエストが必要です。
Mutationとサブスクリプション
Mutation:データの作成・更新・削除操作を行います(RESFのPOST/PUT/DELETEに相当)。
Subscription:WebSocketを使ったリアルタイムデータ配信。チャットやライブ更新に最適です。
GraphQLが向いているシーン
- モバイルアプリ(通信量の削減が重要)
- 複数のフロントエンド(Web・iOS・Android)が同一APIを使う場合
- フィールドが多いデータモデルで柔軟な取得が必要な場合
- マイクロサービスを統合するBFF(Backend for Frontend)層
主要ライブラリ
- Apollo Server(Node.js)、Strawberry(Python):サーバー実装
- Apollo Client、urql:クライアント実装



