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件を見るJest(ジェスト)
MetaがReact向けに開発したJavaScript/TypeScriptのテストフレームワーク。ゼロ設定で動作・スナップショットテスト・モック機能を標準搭載し、フロントエンドテストのデファクトスタンダード。
IT用語: async/awaitとは|非同期処理をわかりやすく書く構文
Promiseベースの非同期処理をまるで同期処理のように書けるasync/awaitの仕組みとエラーハンドリングを解説。
PWA(プログレッシブウェブアプリ)
Service WorkerやWeb App Manifestを使い、Webアプリにネイティブアプリに近い体験を提供する技術。オフライン動作・ホーム画面への追加・プッシュ通知が実現できる。
Rust (ラスト)
「処理の速さ」と「メモリの安全性(バグの出にくさ)」を両立させた、世界で最もプログラマーに愛されている次世代言語。
IT用語: 依存性の注入(DI)とは|テストしやすいコードを書く設計原則
クラスが依存するオブジェクトを外部から渡す「依存性の注入(Dependency Injection)」の概念とテスタビリティへの効果を解説。
Webpack(ウェブパック)
JavaScriptアプリの依存関係を解析して複数のファイルを1つ(または少数)のバンドルにまとめるモジュールバンドラー。CSS・画像等も処理でき、フロントエンドビルドツールの長年の標準。