> Source: https://www.ymotongpoo.com/works/goblog-ja/protobuf/


# サードパーティ製ライブラリ：goprotobufとその先へ

[Third-party libraries: goprotobuf and beyond](https://go.dev/blog/protobuf) by Andrew Gerrand

3月24日、Rob PikeはGoogleのデータ交換フォーマットである[Protocol Buffers](http://code.google.com/apis/protocolbuffers/docs/overview.html)（略してprotobufs）のGoバインディングである[goprotobuf](http://code.google.com/p/goprotobuf/)を発表しました。この発表により、GoはC++、Java、Pythonと並んで公式のprotobuf実装を提供する言語の仲間入りを果たしました。既存のシステムとGoで構築されたシステムとの相互運用性を実現するうえで、重要な節目となる出来事です。

goprotobufプロジェクトは2つの部分から構成されています。1つは、コンパイル後にプロトコルバッファへアクセスし操作できるGoのソースファイルを生成する「プロトコルコンパイラのプラグイン」です。もう1つは、プロトコルバッファのエンコード（マーシャリング）、デコード（アンマーシャリング）、そしてアクセスのためのランタイムサポートを実装したGoパッケージです。

goprotobufを使うには、まずGoと[protobuf](http://code.google.com/p/protobuf/)の両方をインストールしておく必要があります。そのうえで、[goinstall](https://go.dev/cmd/goinstall/)を使って「proto」パッケージをインストールできます。

```
goinstall goprotobuf.googlecode.com/hg/proto
```

続いて、protobufコンパイラのプラグインをインストールします。

```
cd $GOROOT/src/pkg/goprotobuf.googlecode.com/hg/compiler
make install
```

詳細についてはプロジェクトの[READMEファイル](http://code.google.com/p/goprotobuf/source/browse/README)を参照してください。

これは、増え続けるサードパーティの[Goプロジェクト](http://godashboard.appspot.com/package)一覧に新たに加わったものの一つに過ぎません。goprotobufの発表以降、XのGoバインディングは標準ライブラリから切り離されて[x-go-binding](http://code.google.com/p/x-go-binding/)プロジェクトへ移管されましたし、[Freetype](http://www.freetype.org/)の移植版である[freetype-go](http://code.google.com/p/freetype-go/)の開発も始まりました。その他の人気のあるサードパーティプロジェクトとしては、軽量なWebフレームワークである[web.go](https://github.com/hoisie/web)や、GoのGTKバインディングである[gtk-go](https://github.com/mattn/go-gtk)などが挙げられます。

私たちは、オープンソースコミュニティによる他の有用なパッケージの開発を後押ししたいと考えています。もし何かに取り組んでいるのであれば、自分だけにとどめておかずに、メーリングリスト[golang-nuts](http://groups.google.com/group/golang-nuts)を通じてぜひ教えてください。

By Andrew Gerrand

