Open4

gRPC&protobufを調べる

なかなか

仕事で主要サービスがgRPC + protobufだったので調べる。
今までHTTP&REST&JSONしか触ったことがないのでよく分からない。
しかしフロントからはAPI叩くだけなので裏側は正直責任の範囲外ではあるから知らなくても一応書けそうではある。

なかなか

今さらProtocol Buffersと、手に馴染む道具の話

Protobufは(gRPCまで含めると)、JSON, JSON Schema, OpenAPI, SwaggerCodegenあたりの組み合わせと同じ領域をカバーしようとしている。

字面では理解できるけど、腹落ちしないなあ。
自分が必要になった経験がないからだとは思うけど。
JSON, OpenAPI, Swaggerでいいのでは?と思ってしまうな。
仕事でもなんかgRPC&protobuf&swaggerで書いてたから結局swagger使ってるし。

  • 複数言語間でやり取りされるJSONにスキーマを与える
  • 複数言語間でやり取りされるJSONの、シリアライズ元/デシリアライズ先のクラスや構造体を自動生成する
  • BigQuery用のスキーマ記述がJSON Schemaでもなくて辛いので、もうちょっと汎用性のある言語でスキーマを書く
  • 複数のスキーマ言語間で一貫性を保つ必要があるとき、それらのスキーマ群をProtobufから自動生成する5

あーでも複数言語で開発するときに同じ型を使えるからいいという話か。

なかなか

protobufとは?gRPCとProtocol Buffers入門

protobufでEncoding/Decodingの部分を担い、gRPCがそのエンコードされたデータをやり取りする通信インフラストラクチャを提供する、という役割分担の関係です。

ふんわりざっくり大味で gRPC と tRPC の雰囲気を知る

gRPC も tRPC も、乱暴に言ってしまえば「昨今の Web サービスで絶対に必要になる HTTP 通信の処理、書くのめんどくさすぎるからなんとかして」にこたえてくれる仕組みということですね