はじめに GraphQLは柔軟なデータ取得を可能にする一方で、N+1問題やI/Oによるレスポンス遅延が課題になることが多いです。 このような課題を解決するために、各言語・ライブラリが「Resolverの並行実行」や「I/Oの並列化」などの工夫をしています。しかし、その実装方式は言語ごとにかなり違いがあります。 この記事では、graphql-js(Node.js)、graphql-go(Go)、graphql-ruby(Ruby)、graphql-php(PHP)の主要なGraphQLサーバー実装を比較します。 なぜResolverの並行性が必要なのか GraphQLでは、クライアントから柔軟かつ複雑なデータ取得要求(クエリ)が送られることが多く、1つのクエリが多数のResolver(データ取得処理)を呼び出す構造になります。 このとき、Resolverの並行性(複数のResolverを同時
