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件を見るPHP
Webサイトの裏側(サーバー側)で動くシステムを作るために特化したプログラミング言語。WordPressのベースでもある。
Prettier(コードフォーマッター)
コードを自動的に整形するオピニオネイテッドなフォーマッター。JavaScript・TypeScript・CSS・HTML・JSON・Markdownに対応し、チームのコードスタイル論争を終わらせる。
IT用語: 型安全性(Type Safety)とは|TypeScriptが防ぐバグの種類
コンパイル時に型の不一致を検出する「型安全性」の概念と、JavaScriptからTypeScriptへの移行がなぜ有効なのかを解説。
JAMstack
JavaScript・APIs・Markupの頭文字をとったWebアーキテクチャ。ビルド時に静的HTMLを生成し、動的機能はAPIで補完することで高速・安全・スケーラブルなWebサイトを実現する。
Python (パイソン)
AI(人工知能)やデータ分析の分野で世界的に最も人気のあるプログラミング言語。
Webpack(ウェブパック)
JavaScriptアプリの依存関係を解析して複数のファイルを1つ(または少数)のバンドルにまとめるモジュールバンドラー。CSS・画像等も処理でき、フロントエンドビルドツールの長年の標準。