GraphQL.org から Subscription に関する情報を追いかけてみる
(=˘ ꒳ ˘=) GraphQL では Query と Mutation 以外にもう一つ、Subscription というものが使えるらしい...
...という噂を聞いてはいたのですが別に Query と Mutation だけでもある程度の機能は実現できるしいいやと思いながらここまでやってきました。でもやっぱり気になり始めたので、ここらで GraphQL の Subscription に立ち向かっていきたいと思います。
まず GraphQL の公式サイトをチェックしたところ、あまり情報がありませんでした。
Queries and Mutations | GraphQL のページに一文
The operation type is either query, mutation, or subscription and describes what type of operation you're intending to do.
とあるだけ。とりあえず subscription
というキーワードが query
や mutation
のように queryString
の中で利用できることは確かなようです。
しかしふと興味がわいて GraphQL の仕様 を覗いてみたところ、そこに subscription
という単語は含まれていませんでした。GraphQL の仕様ってたまに曖昧だったりするんですよね、マルチラインコメントの構文があったりなかったりとか...
他、GraphQL 公式を探して見つけたのは、ブログ記事くらいで、どうやらそこまで graphql.org には Subscription に関する記述がないことは把握できました。
この時点では Subscription を使いたければ上のブログ記事で挙げられている Relay を利用するか、もしくは Apollo を利用することになるのか...と思っていたのですが、諦めきれず graphql/graphql-js リポジトリを検索してみると subscription に関するコードが存在するじゃないですか。
その中の graphql-js/src/subscription/subscribe.js に気になる記述が。
Implements the "Subscribe" algorithm described in the GraphQL specification.
仕様のどこにそんな記述が...とハッとして Google 検索してみると...
graphql/Subscriptions.md at d0583edfeef427e144d7217513c9d616adf8f756 · facebook/graphql · GitHub
なるほど、このリポジトリで GraphQL の仕様が管理されているんですね。
というわけで今日の成果としては
- Subscription の実装らしきものは graphql-js/src/subscription/subscribe.js に存在する。
- GraphQL の仕様は graphql/spec at master · facebook/graphql · GitHub に存在する
...ということがわかったということで、公式原理主義な気がある自分としては Subscription に関する情報が断たれず良かったなという感じです。
またじっくりソースを追いかけていきたいですね。