GraphQL学習メモ
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
環境構築不要で気軽に試せるのは有り難い。
こちらの記事を参考にさせて頂きました🙏
GraphQLのチュートリアル
基礎の基礎は学べたが、個人的にはこの知識だけでは実装できるまでは至らなかった印象...
その他
Discussion