質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Protocol Buffers

Protocol Buffersは、Googleが開発しているシリアライズフォーマットです。インタフェース定義言語 (IDL) で構造を定義する通信・永続化を目的としています。元々のGoogleの実装にはC++/Java/Pythonを使用。オープンソースのフリーソフトウェアです。

gRPC

gRPCは、グーグル社が開発した通信プロトコルの一つ。Protocol Buffersを用いてシリアライズしバイナリに変換させるため、高速なRPCを実現することができます。また、プログラマは意識せずにHTTP/2を利用できることも特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

0回答

2216閲覧

protoc コマンドって結局どれが正しいのでしょうか?(gRPC、protobuf)

benkyo_golang

総合スコア5

Protocol Buffers

Protocol Buffersは、Googleが開発しているシリアライズフォーマットです。インタフェース定義言語 (IDL) で構造を定義する通信・永続化を目的としています。元々のGoogleの実装にはC++/Java/Pythonを使用。オープンソースのフリーソフトウェアです。

gRPC

gRPCは、グーグル社が開発した通信プロトコルの一つ。Protocol Buffersを用いてシリアライズしバイナリに変換させるため、高速なRPCを実現することができます。また、プログラマは意識せずにHTTP/2を利用できることも特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

1クリップ

投稿2021/07/07 05:23

編集2021/07/08 02:41

前提・実現したいこと

gRPCを勉強中です。
.protoファイルをprotocを使ってgRPCのコードを作成する認識なのですが、
その際のprotocコマンドの使い方が各サイトによって異なっていて混乱しております。
正式な書き方を教えていただきたいです。
よろしくお願い致します。

・ProtocolBuffersの公式ドキュメント
protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/addressbook.proto

・Quick start Go
$ protoc --go_out=. --go_opt=paths=source_relative
--go-grpc_out=. --go-grpc_opt=paths=source_relative
helloworld/helloworld.proto

・とあるサイト
protoc --go_out=plugins=grpc:chat chat.proto

7/8追記ーーーーーーーーーーーー
.pb.goファイルのみを.protoから生成することはできます。
ですが、_grpc.pb.goファイルも生成する必要がある認識で
上記のQuick start Go のprotocコマンドを実行するとエラーになってしまいます。($を抜いた3行をそのまま入力しております。)

エラーにならずに.pb.goファイルと_grpc.pb.goファイルを生成するには何が問題でどのように解決できるのかを教えていただきたいです。

Quick start Go のprotocコマンド実行時のエラー

下記のように1行ずつで認識されているようです、、

C:\go\src\renshu\helloworld>protoc --go_out=. --go_opt=paths=source_relative
Could not make proto path relative: : No such file or directory

C:\go\src\renshu\helloworld> --go-grpc_out=. --go-grpc_opt=paths=source_relative
'--go-grpc_out' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\go\src\renshu\helloworld> helloworld/helloworld.proto

補足情報(FW/ツールのバージョンなど)

go version go1.16.5 windows/amd64

protoc --version
libprotoc 3.17.3

追記

.pb.goファイル以外に_grpc.pb.goファイルが生成されるときがあり
これが何の役割をしているのかについても調べたのですが、これと言ってみつけっれず。。
もしお分かりになれば加えて教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matobaa

2021/07/07 07:27

私にとっては質問に記載いただいた3つの例はどれも正しく見えるのですが、 benkyo_golangさんにとって、どのあたりが混乱を招いているのかをもうすこし具体的に補足いただけないでしょうか。 Quick start Go の例では先頭に$があるけど他にはないところ? 公式ドキュメントの例では$SRC_DIRとか登場するのに他には登場しないところ? Quick start Go の例では文末に \ があるけど他にはないところ? のように。 「この$の意味を教えてください」とか「この-Iって何ですか」くらいまで分解いただけると答えやすいです。 おそらく「オプションの指定方法は状況によって書き分ける必要があって唯一の正解はなく、あくまで文脈次第だ」ということを理解いただく必要があるのだと思っていますが、どのへんまで掘り下げて回答すればよいのかの距離感をつかみたいです。
benkyo_golang

2021/07/07 07:57 編集

matobaaさん コメント頂きありがとうございます。オプションによってなのですね、、 以下2点についてが分かっておりません。 ①追記に記載させていただいた”.pb.go”ファイルに加えて、”_grpc.pb.go”ファイルも必要か。また、その場合は別のprotocコマンドが必要なのか。 ②Quick start Go のprotoc コマンドは3行そのまま入力するとエラーになるのですが、どのように入力するのが正しいのか。 よろしくお願い致します。
matobaa

2021/07/07 09:16

あ、すみません、質問にそのように編集または追記いただけますでしょうか。
matobaa

2021/07/07 09:16

エラーが出たのであれば、そのエラーも追記してください。
benkyo_golang

2021/07/08 00:23

失礼しました。 質問内容を更新させていただきました。 お手数ですが、ご確認いただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問