Go言語でgRPC使う 体系だった理解のためのメモ


すごいざっくりした説明

gRPCとは

HTTP/2ベースでProtocol Buffersを使用して、別言語間等でもある程度の型安全性を保ちつつ、データを送受信するためのプロトコル。マイクロサービス間の通信でよく使用する。

Goで使う際に必要なもの

gRPC

Go向けgRPCライブラリ。

$ go get -u google.golang.org/grpc

protoc-gen-go

Protocol Buffersをソースコードに変換するツール。

$ go get -u github.com/golang/protobuf/protoc-gen-go

protoc

ホストOS上でprotocするためのコンパイラ。GitHubの下記リポジトリからダウンロードする。binに入っているprotocというバイナリファイルを、$GOPATHのbinなど、$PATHに通っている場所に配置して使用する。

例えば、macOS Xなら protoc-3.6.1-osx-x86_64.zip をダウンロードする。

使い方

Go用プログラムの作成

protocコマンドで.protoファイルからGoのソースコードを自動生成する。

$ protoc --go_out=plugins=grpc:<出力先パス> <.protoファイルのパス>
# 例
$ protoc --go_out=plugins=grpc:../pb test.proto
# これにより ../pb 配下に test.pb.go が出力される

ドキュメントの自動生成

protoc-gen-docをgo getして取得する。

$ go get -u github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc

ドキュメント自動生成の実行。

$ protoc --doc_out=html,index.html:./ proto/*.proto

grpc-go

Go向けgRPCライブラリの開発リポジトリ。

サンプル

参考になった記事

ネットにも豊富に情報があるかと言うとあまりなく、こちらの方々の記事が大変参考になりました。