Protocol Bufferは、一言で言うと、構造化データをバイト列に変換(シリアライズ)するソフトウェアである。プログラム言語中で用いられるデータ構造をファイルに保存する際や、RPC(Remote Procedure Call)でデータをやり取りする際などに用いられる。
同様の目的で用いられる技術としては、XMLやJavaのオブジェクトシリアライズなどが挙げられる。ただし、Protocol Bufferは、そうした類似技術と比較して、以下のような特徴を備えている。
- 静的な構造化データを対象とする: シリアライズを行うためのデータは、事前にその構造を定義しておく必要がある。構造の定義には、専用の書式とデータ型を用いる
- 拡張可能: 元のデータ構造を変更することなく、データ構造を拡張することが可能。例えば、ある開発者が作成したデータ構造に対して、別の開発者が独自のフィールドを追加して利用するといったことができる
- コンパクトなバイナリ形式を採用: XMLのようなテキスト形式を用いず、なるべくサイズがコンパクトになるよう設計されたバイナリ形式を採っているため、最低限のリソースしか使用しないうえ、シリアライズ/デシリアライズに要する処理時間も非常に少なくて済む
- プログラミング言語に依存しない: バイナリ形式がプログラミング言語から独立して設計されているため、Javaのシリアライズ方式などとは異なり、プログラミング言語に一切依存しない
- データアクセスコードを自動生成: 公開されているソフトウェアは、C++、Java、Python向けにデータアクセスコードを自動生成する機能を持つ




