Protocol Buffers
Googleが開発した言語非依存・プラットフォーム非依存の構造化データシリアライズ形式(通称protobuf)。XMLやJSONのようにデータをやり取りするための仕組みだが、より小さく・速く・シンプルであることを目指している。
仕組み
.protoファイルに、言語非依存のインターフェース定義言語(IDL)でメッセージのスキーマを定義する。protocコンパイラが.protoから各言語向けのコードを生成し、そのコードを使ってシリアライズ/デシリアライズを行う。- シリアライズ結果はテキストではなくバイナリ形式で、XML/JSONのようなテキストベース形式に比べてコンパクトかつシリアライズ/デシリアライズが高速。
- C++, C#, Dart, Go, Java, Kotlin, Objective-C, Python, Rust, Ruby など多数の言語向けにコード生成をサポートする(proto3ではPHPも追加)。
用途
Google社内でサーバー間通信・ディスクへのデータ永続化の両方で最も広く使われているデータ形式。gRPCはデフォルトのIDL兼シリアライズ形式としてProtocol Buffersを採用しており、ONNXもモデルのシリアライズ形式としてProtocol Buffersを使っている。