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 ができる。

関連

出典