Protocol Bufferとは

Protocol BufferはもともとGoogle社内で利用されていた技術/ツールだ。今月7日にApache Software License 2.0の下、オープンソースソフトウェアとして公開されたばかりで、本稿執筆時点の最新バージョンは2.0のβ版。正式リリースが2008年8月に行われる予定だ。

Protocol Bufferは、一言で言うと、構造化データをバイト列に変換(シリアライズ)するソフトウェアである。プログラム言語中で用いられるデータ構造をファイルに保存する際や、RPC(Remote Procedure Call)でデータをやり取りする際などに用いられる。

同様の目的で用いられる技術としては、XMLやJavaのオブジェクトシリアライズなどが挙げられる。ただし、Protocol Bufferは、そうした類似技術と比較して、以下のような特徴を備えている。

  • 静的な構造化データを対象とする: シリアライズを行うためのデータは、事前にその構造を定義しておく必要がある。構造の定義には、専用の書式とデータ型を用いる
  • 拡張可能: 元のデータ構造を変更することなく、データ構造を拡張することが可能。例えば、ある開発者が作成したデータ構造に対して、別の開発者が独自のフィールドを追加して利用するといったことができる
  • コンパクトなバイナリ形式を採用: XMLのようなテキスト形式を用いず、なるべくサイズがコンパクトになるよう設計されたバイナリ形式を採っているため、最低限のリソースしか使用しないうえ、シリアライズ/デシリアライズに要する処理時間も非常に少なくて済む
  • プログラミング言語に依存しない: バイナリ形式がプログラミング言語から独立して設計されているため、Javaのシリアライズ方式などとは異なり、プログラミング言語に一切依存しない
  • データアクセスコードを自動生成: 公開されているソフトウェアは、C++、Java、Python向けにデータアクセスコードを自動生成する機能を持つ

こうした様々な特徴により、Protocol Bufferは汎用的でコンパクトなデータ形式として、これから世界中で広く使われていくのではないかと期待される。本稿では、Protocol Bufferの利用方法について大まかに紹介していこう。なお、プログラミング言語はJavaを使用することにする。