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が広まっていくためにはサーバとして使えるライブラリが必須でしょう。