履歴

プロトコルバッファが作成された背景にある短い歴史。

protobufがなぜ作成されたのか、そして時間の経過とともにそれを変更した決定を理解することは、ツールの機能をより良く使用するのに役立ちます。

なぜProtocol Buffersをリリースしたのですか?

Protocol Buffersをリリースした理由はいくつかあります。

プロトコルバッファは、Google社内の多くのプロジェクトで使用されています。プロトコルバッファを使用する他のプロジェクトをオープンソースとしてリリースしたかったため、これを行うには、まずプロトコルバッファをリリースする必要がありました。実際、この技術の一部はすでにオープンになっていました。Google AppEngineのコードを掘り下げてみると、その一部が見つかるかもしれません。

プロトコルバッファとXMLの両方を受け入れる公開APIを提供したかったのです。これは、より効率的であるためと、いずれにしてもXMLをプロトコルバッファに変換するためです。

Google外部の人々もプロトコルバッファが有用だと感じるかもしれないと考えました。プロトコルバッファをリリース可能な形式にすることは、楽しいサイドプロジェクトでした。

なぜ最初のリリースバージョンは2なのですか?バージョン1はどうなったのですか?

プロトコルバッファの最初のバージョン(「Proto1」)は2001年初頭から開発され、誰かが必要とするときに新しい機能が追加され、それを実現するための作業をいとわない人によって、何年にもわたって進化しました。そのような方法で作成されたものと同様に、少しごちゃごちゃしていました。コードをそのままリリースすることは実行不可能であるという結論に達しました。

バージョン2(「Proto2」)は完全に書き換えられましたが、設計のほとんどは維持され、Proto1の実装アイデアの多くが使用されました。いくつかの機能が追加され、いくつか削除されました。しかし、最も重要なことは、コードがクリーンアップされ、まだオープンソース化されていないGoogleライブラリに依存していなかったことです。

「Protocol Buffers」という名前の由来は何ですか?

この名前は、クラスを生成するためのプロトコルバッファコンパイラが存在する前の、フォーマットの初期に由来します。当時、`ProtocolBuffer`というクラスがあり、実際には個々のメソッドのバッファとして機能していました。ユーザーは`AddValue(tag, value)`のようなメソッドを呼び出すことで、このバッファにタグ/値のペアを個別に追加していました。生バイトはバッファに保存され、メッセージが構築された後に書き出すことができました。

それ以来、この名前の「バッファ」の部分は意味を失いましたが、現在でも私たちが使用している名前です。今日では、抽象的な意味でのメッセージを指す場合は「プロトコルメッセージ」、メッセージのシリアライズされたコピーを指す場合は「プロトコルバッファ」、解析されたメッセージを表すメモリ内のオブジェクトを指す場合は「プロトコルメッセージオブジェクト」という用語を一般的に使用します。

GoogleはProtocol Buffersに関する特許を所有していますか?

Googleは現在、プロトコルバッファに関する特許を保有しておらず、プロトコルバッファと特許に関する懸念があれば喜んで対応いたします。

Protocol BuffersはASN.1、COM、CORBA、Thriftとどのように異なりますか?

これらのシステムはすべて長所と短所があると考えています。Googleは内部でプロトコルバッファに依存しており、当社の成功にとって不可欠なコンポーネントですが、それがすべての問題にとって理想的な解決策であるという意味ではありません。ご自身のプロジェクトの文脈で、それぞれの代替案を評価する必要があります。

ただし、これらの技術のいくつかでは、インターチェンジフォーマットとRPC(リモートプロシージャコール)プロトコルの両方が定義されていることに注意する価値があります。プロトコルバッファは単なるインターチェンジフォーマットです。RPCに簡単に使用できますし、実際、RPCサービスを定義するための限定的なサポートはありますが、特定のRPC実装やプロトコルに縛られているわけではありません。