Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

すごいざっくりした説明

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 をダウンロードする。

https://github.com/protocolbuffers/protobuf/releases

使い方

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ライブラリの開発リポジトリ。

https://github.com/grpc/grpc-go

サンプル

https://github.com/grpc/grpc-go/tree/master/examples

参考になった記事

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

mediado
私たちメディアドゥは、電子書籍を読者に届けるために「テクノロジー」で「出版社」と「電子書店」を繋ぎ、その先にいる作家と読者を繋げる「電子書籍取次」事業を展開しております。業界最多のコンテンツラインナップとともに最新のテクノロジーを駆使した各種ソリューションを出版社や電子書店に提供し、グローバル且つマルチコンテンツ配信プラットフォームを目指しています。
https://mediado.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away