コンテンツにスキップ

コマンド@Protocol Buffer

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. protocコマンド

-I (--proto_path)

--proto_path でも良い。

proto ファイルのあるディレクトリを指定する。

protoc コマンドで proto ファイルを直接指定するだけではエラーになる。

# foo.protoファイルのあるディレクトリを指定する
$ protoc -I=. --go_out=. foo.proto


02. プラグイン名_opt

--プラグイン名_optとは

proto ファイルから pb ファイルをコンパイルするときのオプションを設定する。


go_opt

▼ paths

--プラグイン名_optオプションのパスが絶対パスか相対パスかを設定する。

$ protoc -I=. --go_out=. --go_opt=paths=source_relative foo.proto


go-grpc_opt

▼ paths

$ protoc \
    -I=. \
    --go_out=. \
    --go_opt=paths=source_relative \
    --go-grpc_out=. \
    --go-grpc_opt=paths=source_relative \
    foo.proto

▼ require_unimplemented_servers

pb.go ファイルに mustEmbedUnimplemented<Service名>Server 関数を自動定義するかどうかを設定する。

古い github.com/golang/protobuf パッケージから新しい google.golang.org/protobuf パッケージに移行する場合、これを false にする必要がある。

$ protoc \
    -I=. \
    --go_out=. \
    --go_opt=paths=source_relative \
    --go-grpc_out=. \
    --go-grpc_opt=paths=source_relative,require_unimplemented_servers=false \
    foo.proto


03. --プラグイン名_out

--プラグイン名_outとは

pb ファイルの出力先パスを設定する。


--go_out

foo.proto ファイルから、foo.pb.go ファイルをコンパイルする。

$ protoc -I=. --go_out=. foo.proto


--go-grpc_out

foo.proto ファイルから、gRPCに対応する foo.pb.go ファイルをコンパイルする。

$ protoc -I=. --go_out=. --go-grpc_out=. foo.proto


--java_out

foo.proto ファイルから、foo.pb.java ファイルをコンパイルする。

$ protoc -I=. --java_out=. foo.proto


--php_out

foo.proto ファイルから、foo.pb.php ファイルをコンパイルする。

$ protoc -I=. --php_out=. foo.proto


--python_out

foo.proto ファイルから、foo.pb.py ファイルをコンパイルする。

$ protoc -I=. --python_out=. foo.proto


--ruby_out

foo.proto ファイルから、foo.pb.rb ファイルをコンパイルする。

$ protoc -I=. --ruby_out=. foo.proto


--rust_out

foo.proto ファイルから、foo.pb.rs ファイルをコンパイルする。

$ protoc -I=. --rust_out=. foo.proto