TL;DR
Protocol Buffers のコンパイラ。.proto ファイルに書いたスキーマから、データを自動でエンコード・パースするクラスを各言語向けに生成する。
仕組み
protoc には、ソースディレクトリ、出力先のディレクトリ、.proto ファイルのパスを渡す。ソースディレクトリを省略すると、カレントディレクトリが使われる。出力する言語は --cpp_out のようなオプションで選び、ほかの言語にも同じようなオプションがある。
プラグインで機能を足すこともできる。protoc-gen-doc はコメントからドキュメントを、protoc-gen-validate はバリデーションのコードを生成する protoc のプラグインである。
例
公式チュートリアルの C++ の例では、次のように実行する。
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.protoこれで、生成したクラスを宣言するヘッダ addressbook.pb.h と、その実装 addressbook.pb.cc ができる。
関連
- Protocol Buffers
- Buf CLI: protoc とは別の独自コンパイラを内蔵したツール
- buf generate
- protoc-gen-doc
- protoc-gen-validate