この記事は Go2 Advent Calendar 2018の11日目の記事です。 今年の後半くらいに Protocol Buffers の仕様を読み始めたら、とてもシンプルかつコンパクトな仕様なのにcompatibilityへの考慮が凄まじくて、2018年後半に書いた記事の大半がProtocol Buffersに関するものでした。 仕様とバイナリを睨めっこしていたら、自分でもバイナリをデコードしたくなったので、実装してみました。 本内容は、あくまでProtocol Buffersの勉強を目的としたもので、仕様には完璧に添っていません。 というか、わかりやすさ(と実装のしやすさ)を優先して、コンパクトな仕様のさらにミニマム版な内容となっています。 当然ですが、実運用する際にはofficialの実装を利用してください。 どこまで実装するか 上述の通り、ミニマム版として、以下を実装範囲とします
![165行で実装するProtocol Buffersデコーダ(ミニマム版) - 逆さまにした](https://cdn-ak-scissors.b.st-hatena.com/image/square/ed2c44b5df3d65acf87879b50aa8f7215e8a9126/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fc%2Fcipepser%2F20181209%2F20181209140919.png)