バージョンアップ情報
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 Client |
Postgraphile |
Go |
graphql-go |
machinebox/graphql |
graphjin |
PHP |
API Platform |
||
C#/.NET |
graphql-dotnet |
Strawberry Shake |
|
Python |
Graphene |
GQL |
|
Java / Kotlin |
graphql-java |
Apollo Android |
GraphQL Java Generator |
Rust |
graphql-rust/juniper |
cynic |
|
Ruby |
graphql-ruby |
||
Elixir |
absinthe |
Neuron |
|
Swift/Objective-C |
Graphiti |
Apollo iOS |
|
Scala |
Sangria |
Caliban |
|
Flutter |
graphql |
||
Clojure |
lacinia |
regraph |
|
C/C++ |
libgraphqlparser |
||
Haskell |
Morpheus GraphQL |
morpheus-graphql-client |
|
Elm |
dillonkearns/elm-graphql |
||
OCaml/Reason |
ocaml-graphql-server |
||
Erlang |
graphql-erlang |
||
Groovy |
gorm-graphql |
||
R |
ghql |
||
Julia |
Diana.jl |
||
Perl |
graphql-perl |
||
D |
graphqld |
GraphQLのライセンス
ご利用のプロダクトにより異なります。
参考情報
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
gRPC
ジーアールピーシー。Googleが2015年に開発したオープンソースのRPCです。