gRPC
grpc-gateway

gRPC, grpc-gatewayで作るダミーAPIサーバー

というのをふと思いついたのでメモ程度に残しておく。あとからサンプルコードとともにちゃんと公開する

IMG_0725.JPG

それぞれの課題

  • フロントエンドエンジニア/デザイナーの課題
    • APIサーバーを叩く必要があって必要なJSONがほしい
    • サーバーサイドの実装が待ちになると生産性が低い
    • APIの仕様が変わる場合早く知らせてほしい
  • Swagger ドキュメントの課題
    • 実装とドキュメントの乖離が起きがち
    • Swaggerには書かれてるけどまだ実装が終わっていない
    • 実装は終わってるがSwaggerが更新漏れしていた
  • サーバーサイドエンジニアの課題
    • APIの仕様が変わると実装のvalidationなどの変更が面倒
    • サーバーサイド実装作ってみて、フロントエンドに渡したあとで仕様変更が発覚した

課題

  • ドキュメントと実装の乖離は少なくしたい
  • フロントエンドとサーバーサイド分けて実装したい

gRPC + grpc-gateway

  • https://grpc.io
  • https://github.com/grpc-ecosystem/grpc-gateway
  • ProtocolBufferでAPIの仕様を先に決めて、そこからコードを書くのでドキュメントと実装の乖離が起き得ない
  • gRPCはサーバー/クライアントのスタブ、インターフェースを吐き出す
  • ダミーのAPIサーバーを作って好きな言語で適当なJSONを返すサーバーを最速で提供すればフロントエンドエンジニア助かるのでは
  • gRPCサーバーの本実装、テストは非同期でサーバーサイドエンジニアが行う

代替策

フロントエンドの実装をサーバーサイドから分離する

gRPC最高では!?