---
title: GraphQLについて
tags: 
author: [Katsushi21](https://convert.docswell.com/user/Katsushi21)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/3EKX89G57D.jpg?width=480
description: GraphQLについて by Katsushi21
published: January 18, 24
canonical: https://convert.docswell.com/s/Katsushi21/ZVVNL3-2024-01-18-002731
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/3EKX89G57D.jpg)

1/7
GraphQLについて


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L7352WN1E5.jpg)

2/7
GraphQLとは
・APIと通信するための新しい規格(プロトコル)
・1つのエンドポイントにクエリをまとめて送るため、
リクエストの回数を減らすことができる
・必要なデータのみ操作できるため、
操作後の処理が楽になる
・後からクライアントサイドで必要なデータに
変更が生じても、容易に対応することができる


# Page. 3

![Page Image](https://bcdn.docswell.com/page/87DDZKWK7G.jpg)

3/7
GraphQLの構成
GraphQLは二つの構成から成る
①.クエリ言語
クライアント側で用いられ、GraphQLサーバーに
リクエストを送るため言語
②.スキーマ言語
サーバ側で用いる言語で、この言語で記述した仕様に
したがって扱われるデータの構造(スキーマ)が決まる
(データの操作はリゾルバが行う)


# Page. 4

![Page Image](https://bcdn.docswell.com/page/VJPXDK9378.jpg)

4/7
クエリ言語について
クエリは大きく3種類に分かれる。
これらをベースにリクエストをカスタマイズする
クエリの効果
クエリの種
クエリの使い道
類
query
GET
データの取得
mutation
POST/UPDADE/DELETE... Etc.
データの更新
subscription
Websocket
イベント通知
データの取得
データの更新


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2EVL1VMNJQ.jpg)

5/7
スキーマ言語について
GraphQL独自の記述方法でAPIの仕様を決める
データ「Todo」の
型(スキーマ)を決める
「!」はnon-null(必須)を示す
[ ]は配列を示す
他のスキーマを内包できる
type Query/Mutation/subscriptionは
root型と呼ばれ、それぞれのクエリの起点となる
typeの他、enumやunion、inputなどを指定して
生成するレスポンスのスキーマを定義する


# Page. 6

![Page Image](https://bcdn.docswell.com/page/57GX2LG5EL.jpg)

6/7
GraphQLを用いたデータ取得例
GraphQL独自の設定により、柔軟なデータの取得や更新を行うことができる
リクエスト
クライアント
バックエンド
レスポンス
クライアント側のクエリ言語から
リクエストを作成して送信する
受け取ったリクエストとスキーマ言語より
レスポンスを作成して送信する
JSON型データ


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EQ8PYXLJP.jpg)

7/7
GraphQLを用いた開発
・静的型付け言語との相性がよく、スキーマ言語から
型定義を自動で行ってくれるツールが充実している
・はじめに通信するデータの型を決めてしまい、
それをベースにサーバサイドとクライアントサイド
同時並行で開発しやすくできる(スキーマベース開発)
・エンドポイントが1つであり、1度のリクエストの大きさが
ユーザーに依存するため、サーバ負荷対策が難しい


