Vulcain というHTTP2を使った通信プロトコルとそのリファレンス実装が先月発表されました。
このプロトコルはGraphQLとRESTの良いところを両立するという画期的なプロトコルです。
GraphQLは柔軟なクエリで通信のラウンドトリップを減らすことができますが、HTTPのキャッシュ機構が効かないなどHTTPの良さを潰してしまうという問題があります。Vulcainはドラフトなものを含むHTTP2の仕様をフル活用し、さらにいくつか仕様を追加することで、REST APIのままGraphQLのような柔軟なクエリを発行し、ラウンドトリップを減らすことができるというものです。通信プロトコルはIETFでの標準化を目指すようです。
そして素晴らしいことにGraphQLのクエリがそのまま使えるそうです。
https://github.com/dunglas/vulcain#see-also
GitHub にかなり詳しく図有りでプロトコルの説明が書かれています。図だけでもかなりイメージできると思います。
作者さま曰く 「you don't need #GraphQL anymore!」
https://twitter.com/dunglas/status/1182685694306721798
Vulcain はIssueやコードを見ると Cache-Digests や Early Hints など@kazuhoさんがHTTP2で提案したもののあまり進展しなかった仕様を積極的に参照しているのも非常に面白いところです。
作者のKévin Dunglasさんは、PHPの有名なフレームワークであるSymfonyのコアチームの方で、他にも多数のOSSを開発している実力派です。GoのviperやcobraはGo開発者にはかなり有名なのではないでしょうか。
実利用にはまだまだ課題がありそうな気がしていますが、非常に画期的だと感じます。
これから発展していくプロダクトだと思いますが、期待して注視していきたいプロダクトです。