GraphQL とは?

GraphQL

GraphQL

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

GraphQLの保守サポートサービスの内容はこちら GraphQLの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

GraphQLバージョンアップ情報

すべてを見る

更新日:2021-10-19

GraphQLの概要

GraphQL(グラフキューエル)とは、API向けに作られたクエリ言語(Query Language)、およびその実装(ランタイム)を指します。クエリ言語とはデータベース等からデーターを問い合わせて取得する「問い合わせ言語」と呼ばれる言語であり、代表的な物としてはSQLがあります。

GraphQLは、2012年にモバイルアプリケーションを作成するにあたり、従来のRESTFulサービスに不満を感じていたFacebook社により開発されました。 2015年にオープンソース化 され、2019年には中立的な非営利組織、GraphQLFoundationが設立され、GraphQLは、GraphQLFoundation により管理されるようになりました。

TOPに戻る

GraphQLの主な特徴

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アーキテクチャーでは、複数回のやり取りをしなければならないようなケースも一回でデータを取得することが可能です。

TOPに戻る

GraphQLのユースケース

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

TOPに戻る

GraphQLの動作環境

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

プログラミング言語 サーバ クライアント ツール
JavaScript GraphQL.js
Apollo Server
Express GraphQL
graphql-yoga
GraphQL Helix
Apollo Client
AWS Amplify
Relay
urql
GraphQL Request
graphql-hooks
graphqurl
Lokka
nanogql
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
Java / Kotlin graphql-java
graphql-kotlin
KGraphQL
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
morpheus-graphql-client
Elm dillonkearns/elm-graphql
OCaml/Reason ocaml-graphql-server
Erlang graphql-erlang
Groovy gorm-graphql
GQL
R ghql
Julia Diana.jl
Perl graphql-perl
D graphqld

TOPに戻る

GraphQLのライセンス

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

TOPに戻る

GraphQLの参考情報

GraphQLの公式サイトは下記
https://graphql.org/

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO