GraphQLサーバを立てるのに使えるライブラリまとめ

GraphQLを提供する際にイチから構築する必要はありません。すでに各種プログラミング言語向けにサーバ実装が登場しています。今回は言語、フレームワーク別にGraphQLサーバ実装を紹介します。

Go

neelance/graphql-go

まだ開発途中ですが、2016年10月GraphQL仕様の全実装を目指して開発が進められています。

rgraphql/magellan

リアルタイムストリーミングをサポートしたGraphQLサーバです。通信にはWebSocketを使っています。

Node.js

graphql/express-graphql

Node.jsのWebアプリケーションフレームワーク、Expressと組み合わせて利用するGraphQLサーバです。

const graphqlHTTP = require('express-graphql');

app.use('/graphql', graphqlHTTP({
  schema: MyGraphQLSchema,
  graphiql: true
}));

のように記述することで /graphql 以下でサービス提供できるようになります。

apollographql/apollo-server

Expressの他、Connect/Hapi/Koa/AWS Lambda/ZEIT Microと組み合わせて使えるGraphQLサーバです。

chentsulin/koa-graphql

Koaと組み合わせて使うGraphQLサーバです。以下のように実装します。

const mount = require('koa-mount');
const graphqlHTTP = require('koa-graphql');

app.use(mount('/graphql', graphqlHTTP({
  schema: MyGraphQLSchema,
  graphiql: true
})));

Python

alecrasmussen/falcon-graphql-server

Falcon と Graphene を組み合わせて作られています。実行は次のようになり、単独でアプリケーションサーバとして動作します。

$ gunicorn -c server_config.py falcon_graphql_server:graphQL_api

PHP

Youshido/GraphQLBundle

Symfonyのバンドルとして作られているGraphQLサーバです。フレームワークに組み込む形なので、若干コード量は多くなります。

Scala

sangria-graphql/sangria-akka-http-example

デモ実装なので完成度はそれほど高くないかも知れませんが、ベースや参考にすることはできそうです。サーバを内包していますので、以下のコマンドで立ち上がります。

$ sbt run

GraphQLをきちんと実装している例はまだ多くありません。言語についてもGoやNode.jsが多く、それ以外の言語ではクライアントの実装くらいとなっています。今後GraphQLが広まっていくためにはサーバとして使えるライブラリが必須でしょう。

© NTT Communications Corporation All Rights Reserved.