Protocol Buffersで不毛な議論をなくそう!

本エントリは2008/10/27の元ネタはここで公開済みのものである。

                                            • -

Protocol Buffersという通信用フレームワークミドルウェアをご存じだろうか。Javaや他のオブジェクト指向プログラミング言語のライブラリに出てくるストリームの概念を実装したフレームワークミドルウェア・ライブラリである。プログラミング言語に依存しない形で通信部分を隠ぺいしてくれるライブラリだ。

ある意味、地味なフレームワークミドルウェアだが、これが強烈に不毛な議論をなくしてくれるそうなことは、こだわりのある開発者が集まるプロジェクトに参加したことがあれば、すぐに想定できるだろう。たとえば、データの間はカンマ区切りだとか、スキーマ定義が気にくわないとか、通信時のフォーマットやエンコーディングに関して個別に議論する必要をなくしてくれる。言語非依存ということで「SOAPやXMLRPCと何が違うの?」という疑問が出てくると思うが、通信内容はXMLに限定されない(もちろんXMLでもよい)。パフォーマンスが必要であれば、独自の方法にすればよいし、パケットをモニタリングしながらのデバッグが必要であれば、XMLにしてもよい。

詳しくは、冒頭の本家のプロジェクトポータルをみていただくか、CNETの記事をみていただくことにして、大まかには以下のとおりだ。

  • 専用のデータ定義言語(構造体定義のようなもの)と言語バインディングがある。
  • ストリームとして使え、ファイルやネットワークへのデータ送出時など共通的に使える。
  • エンコード方法や通信方法は言語や計算機非依存。
  • データ定義は新しい定義を追加した場合でも上位互換性がある。

通信部分に本当にこだわりのある開発者は、Protocol Buffersのグループに行けば思う存分議論できる。それよりも高い優先順位で実装しているメンバは、そこに集中できる。ある意味コーディングガイドラインと同様な効果をもたらすだろう。

本内容は、奈良先端科学技術大学院大学Google工藤氏に『大規模ソフトウェア開発を支えるGoogleのテクノロジー』という題目で講演いただいた際の内容の一部である。ここはてなダイアリ)でも紹介されている。

この招待講演を企画、調整したのは私だが(ご講演内容はもちろんご講演者の方がお考えになったものだ)、講演を最も楽しめたのは私かもしれない。3つのシリーズものにして、業界でソフトウェア開発を進める方々、3人にお越しいただいた。Google工藤氏のほか、東芝ソフトウェア技術センタの江口所長IPAソフトウェア技術センタの鶴保所長にもご講演いただいている(リンクはオルタナティブブログの私のエントリ)。