generated at
Protocol Buffers
データをserializeするフォーマット
入力データをserializeして圧縮
圧縮されたデータをデシリアライズして戻す
元々社内で利用されていたが2008年にOSS化された
マイクロサービスの流れ的に、こっちではこの言語、こっちではこの言語としたものを連携しやすい
その通信間でシリアライズ、デシリアライズを行う


特徴
静的な構造化データが対象
元のデータ構造を変更せずに拡張可能
バイナリ形式
言語に依存しない
データアクセスコードを自動生成
JSONにもシリアライズできる

利用する流れ
1. protoファイルを記述
拡張子は .proto
2. protocでコンパイルしコードの自動生成を行う
C, Java, Pythonなどのコードを出力
3. 自動生成されたコードを用いてプログラミング

フィールドルール
required
optional
repeated

フィールドの型
double
float
int32
uint64
sint32
fixed64
sfixed32
bool
string
bytres
etc.

同様の技術


利用例
プログラミング言語内のデータ構造をファイルに保存するとき
RPCで使われている ref
RPCでデータをやり取りするとき
PokemonGoで使われている



参考


Bufがgoogleの代わりに仕様を公開