gRPCでFirestoreをListenする

昨年の10月にBetaリリースされたCloud Firestoreですが、公式ライブラリによるデータのリアルタイム更新は

しかサポートされていないようです。*1

GAまで待てば良いのでしょうが、今でもgRPCのListenは使えるのため、こちらを利用することでリアルタイム更新の取得が可能です。

Protocol Buffersの定義はGitHubで公開されているのでGoだと↓のようにクライアント(とサーバ)のコードを生成することができます。

github.com

Go以外でもgRPCに対応していれば良く、試しにcppでやってみたのがこちらです。

github.com

  • ListenRequestのフィールドは全て決め打ち
  • firestore.googleapis.comへの認証は面倒だったのでgcloud auth loginで
  • 一応テスト用のGo製サーバも同梱
    • Go + gRPCで簡単にサーバが作れてイイ感じ

*1:2018年1月現在