GraphQL
FacebookがRESTの課題を解決するために開発したAPIクエリ言語。クライアントが必要なデータの形を宣言的に指定して取得でき、オーバーフェッチ・アンダーフェッチを解消する。
GraphQLとは?
GraphQLは、FacebookがRESTの課題を解決するために開発したAPIのクエリ言語・ランタイムです。2015年にオープンソース化され、現在はGraphQL Foundationが管理しています。
RESTとの主な違い
| 項目 | REST API | GraphQL |
|---|---|---|
| エンドポイント | リソースごとに複数 | 通常1つ(/graphql) |
| データ取得 | サーバーが決める | クライアントが指定 |
| オーバーフェッチ | 起きやすい | 起きない |
| アンダーフェッチ | 複数リクエストが必要 | 1リクエストで完結 |
| 型システム | なし(OpenAPIで補完) | スキーマで型定義必須 |
GraphQLクエリの例
query {
user(id: "1") {
name
email
posts {
title
publishedAt
}
}
}
必要なフィールドだけを指定して取得できます。
主な実装
| 種別 | 代表的なライブラリ |
|---|---|
| クライアント | Apollo Client, urql |
| サーバー(Node.js) | Apollo Server, Pothos, Nexus |
| スキーマファースト | graphql-tools |
まとめ
GraphQLは複雑なデータ要件を持つアプリに有効ですが、単純なCRUDにはREST APIの方がシンプルです。BFFパターン(Backend for Frontend)でGraphQLを採用するケースが増えています。
関連する用語 (プログラミング)
全33件を見るPrettier(コードフォーマッター)
コードを自動的に整形するオピニオネイテッドなフォーマッター。JavaScript・TypeScript・CSS・HTML・JSON・Markdownに対応し、チームのコードスタイル論争を終わらせる。
Jest(ジェスト)
MetaがReact向けに開発したJavaScript/TypeScriptのテストフレームワーク。ゼロ設定で動作・スナップショットテスト・モック機能を標準搭載し、フロントエンドテストのデファクトスタンダード。
Webpack(ウェブパック)
JavaScriptアプリの依存関係を解析して複数のファイルを1つ(または少数)のバンドルにまとめるモジュールバンドラー。CSS・画像等も処理でき、フロントエンドビルドツールの長年の標準。
IT用語: 再帰処理(Recursion)とは|関数が自分自身を呼び出す仕組み
再帰処理の概念・ベースケースの重要性・階乗計算やツリー探索での活用例を解説。
IT用語: async/awaitとは|非同期処理をわかりやすく書く構文
Promiseベースの非同期処理をまるで同期処理のように書けるasync/awaitの仕組みとエラーハンドリングを解説。
Rust (ラスト)
「処理の速さ」と「メモリの安全性(バグの出にくさ)」を両立させた、世界で最もプログラマーに愛されている次世代言語。