トップ OSS紹介 GraphQL

GraphQL

NRIのOpenStandiaが提供するGraphQL最新情報

バージョンアップ情報

GraphQL情報

GraphQLとは

GraphQL(グラフキューエル)とは、API向けに作られたクエリ言語(Query Language)、およびその実装(ランタイム)を指します。クエリ言語とはデータベース等からデータを問い合わせて取得する「問い合わせ言語」と呼ばれる言語であり、代表的な物としてはSQLがあります。 GraphQLは、2012年にモバイルアプリケーションを作成するにあたり、従来のRESTfulサービスに不満を感じていたFacebook社により開発されました。 2015年にオープンソース化 され、2019年には中立的な非営利組織、GraphQL Foundationが設立され、GraphQLは、GraphQL Foundation により管理されるようになりました。

主な特徴

GraphQLには以下のような特徴があります。

  • 1回のリクエストで多くのリソースを取得することができます。
  • データ型を定義するので、アプリと取得したデータ間でのデータ型の不一致を防げます。
  • GraphiQLなどの強力な開発ツールを使用し、事前にAPIに要求するデータを把握しコードをより良く改善することができます。

GraphQLは、オブジェクトのフィールドを選択してデータを取得します。

例えば下記のようなクエリを投げると、

{
  hero{
    name
  }
}

以下のようにスターウォーズのメインヒーローの名前を JSON 形式で得ることが出来ました。

{
  "data":{
    "hero":{
      "name":"R2-D2"
    }
  }
}

フィールドはサブセレクションを行うことでオブジェクトを参照することもできます。

例えば以下のようなクエリを投げた場合

{
  hero{
    name
    friends{
      name
    }
  }
}

以下のようにメインヒーローとその友人の名前が得られました。

{
  "data":{
    "hero":{
      "name":"R2-D2",
      "friends":{
      {
        "name": "Luke Skywalker"
      },
      {
        "name": "Han Solo"
      },
      {
        "name": "Leia Organa"
      }
      }
    }
  }
}

このように従来のRESTアーキテクチャーでは、複数回のやり取りをしなければならないようなケースも一回でデータを取得することが可能です。

ユースケース

Githubをはじめ、YouTube、Yelp、RedditなどのさまざまなサイトでGraphQL API が公開されています。

動作環境

GraphQLは、以下のように多くのプログラミング言語で実装されています。

プログラミング言語

サーバ

クライアント

ツール

JavaScript

GraphQL.js
Apollo Server
Express GraphQL
graphql-yoga
GraphQL Helix
Mercurius

Apollo Client
AWS Amplify
Relay
urql
GraphQL Request
graphql-hooks
graphqurl
Lokka
nanogql
graphql-ts-client
Grafoo
qg-loader

Postgraphile
GraphQL Code Generator
GraphiQL
GraphQL Tools
GraphQLShield
GraphQL-ESLint
GraphQL Inspector
GraphQL-WS
GraphQL Live Query
GraphQL CLI
GraphQL Mesh
GraphQL Config
GraphQL Scalars
GraphQL Modules
GraphQLMiddleware
SOFA
GraphQL Language Service
GiraphQL

Go

graphql-go
99designs/gqlgen
graph-gophers/graphql-go
samsarahq/thunder
graphql-relay-go
appointy/jaal

machinebox/graphql
graphql
go-graphql-client

graphjin

PHP

API Platform
graphq-php
WPGraphQL
Lighthouse
Siler
GraphQLBundle
GraphQLite
Railt
graphql-relay-php
GraphQL by PoP
GraphQL API for WordPress
GraPHPinator
serge

C#/.NET

graphql-dotnet
Hot Chocolate
graphql-net
Entity GraphQL
NGraphQL

Strawberry Shake
GraphQL.Client
graphql-net-client
SAHB.GraphQLClient

Python

Graphene
Ariadne
Strawberry
Tartiflette

GQL
sgqlc
python-graphql-client
Qlient

Java / Kotlin

graphql-java
Domain Graph
Service (DGS)
Framework
graphql-kotlin
GraphQL Spring
Qlient
KGraphQL
graphql-calculator

Apollo Android
graphql-kotlin
Nodes

GraphQL Java Generator

Rust

graphql-rust/juniper
Async-graphql

cynic
gql_client

Ruby

graphql-ruby
Agoo

Elixir

absinthe
graphql-elixir

Neuron
common_graphql_client

Swift/Objective-C

Graphiti
GraphZahl

Apollo iOS
Graphaello
SwiftGraphQL
GraphQL iOS

Scala

Sangria
Caliban

Caliban

Flutter

graphql
Ferry

Clojure

lacinia
graphql-clj
alumbra

regraph

C/C++

libgraphqlparser

Haskell

Morpheus GraphQL
Mu-Haskell with Mu-GraphQL
graphql-w-persistent

morpheus-graphql-client

Elm

dillonkearns/elm-graphql

OCaml/Reason

ocaml-graphql-server

Erlang

graphql-erlang

Groovy

gorm-graphql
GQL

R

ghql

Julia

Diana.jl
GraphQLClient.jl

Perl

graphql-perl

D

graphqld

GraphQLのライセンス

ご利用のプロダクトにより異なります。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • gRPC
    サポート対象

    gRPC

    ジーアールピーシー。Googleが2015年に開発したオープンソースのRPCです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。