Protocol Buffer と gRPC を Go で使うときのリポジトリを整理する
(=˘ ꒳ ˘=) google と golang がぱっと見ややこしい...
Protocol Buffer と gRPC を Go で利用しようとすると色んなリポジトリからツールを落としてくる必要がありますがどれも微妙に字面が似ているので混乱します。それらを整理するために org/repo の形式で一覧できるようにまとめていきたいと思います。
まず Protocol Buffer のコアなツールが含まれるリポジトリが
- google/protobuf
- C++ 製の Protocol Buffer のコア
- 含まれるツール: protoc
- 日付型などの well-known 型の
.proto
定義も含まれる
ですね。Go の場合はこれに加えて Protocol Buffer と gRPC の Go 実装のためのパッケージが必要になります。
.proto
定義からコードを生成したり、そのコードから import
されるパッケージが以下のリポジトリに含まれます。
- golang/protobuf
- 含まれるツール: protoc-gen-go とその grpc プラグイン
- 生成された
.pb.go
のコードからimport
される Protocol Buffer の Go 実装 - 日付型などの well-known 型の Go 実装も含まれる
- その日付型と time パッケージの日付型を変換するためのユーティリティなども含まれる
- grpc/grpc-go
C++やPHPなど Go 以外の言語だと grpc のメインのリポジトリでその辺が間に合ってしまいそうです。
上に書いた通り grpc_cli は便利なので Go でもこのリポジトリの一部機能は利用する、という感じです。
...ややこしいですね。
まだ書き出しただけで、プラグインやら well-known 型の定義や実装がどこにあるかやらが整理できているとは言い難いですが、使っているうちに慣れるのでしょうか...