🍇

GraphQL学習メモ

2024/06/29に公開

GraphQLの名前しか知らない状態だったので、基礎の基礎を学びつつまとめていきます。
※この記事は自分用の学習メモです。

GraphQLとは

GraphQLはAPI用のクエリ言語であり、データ用に定義した型システムを使用してクエリを実行するためのサーバー側ランタイム。GraphQLサービスは、型とその型のフィールドを定義し、各型の各フィールドに関数を提供することで作成される。(公式より

type Query {
  me: User
}
 
type User {
  id: ID
  name: String
}

基本的な概念

  • スキーマ:
    GraphQL APIの構造を定義する。どのクエリやミューテーションが利用可能で、それらがどのようなデータを返すかを記述する。

  • クエリ:
    データを取得するためのリクエスト。必要なデータだけを取得できる。

  • ミューテーション:
    データを変更するためのリクエスト(例:データの作成、更新、削除)。

  • リゾルバ:
    スキーマの各フィールドの具体的なデータ取得方法を定義する。

  • エンドポイント:
    GraphQLサーバーのURL。通常、1つのエンドポイントで全てのクエリやミューテーションを処理する。

メリットとデメリットまとめ

メリット

  • 単一のデータソース:
    GraphQLスキーマはアプリケーションに一元化されたデータソースを提供し、組織にAPI全体を統合する方法を提供する。

  • 効率的なデータ取得:
    GraphQLの呼び出しは1回のラウンドトリップで処理され、クライアントは必要なデータだけを取得する。

  • データ型の明確化:
    データ型がしっかり定義されているため、クライアントとサーバー間の不一致が減少する。

デメリット

  • サーバー側の負担:
    データクエリ処理の多くがサーバーサイドに移行するため、サーバー開発者の作業が複雑になる。

  • キャッシュの複雑さ:
    キャッシュ管理がRESTよりも複雑になる。

  • スキーマの保守:
    APIの保守担当者には、保守可能なGraphQLスキーマを作成する追加の作業が求められる。

参考

GraphQL Pokémon

環境構築不要で気軽に試せるのは有り難い。
こちらの記事を参考にさせて頂きました🙏
https://kakakakakku.hatenablog.com/entry/2019/12/30/135420

GraphQLのチュートリアル

基礎の基礎は学べたが、個人的にはこの知識だけでは実装できるまでは至らなかった印象...
https://graphql.org/graphql-js/

その他

https://www.redhat.com/ja/topics/api/what-is-graphql

Discussion