コンテンツにスキップ

コマンド@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