このリポジトリは、Protocol Buffers (protobuf) を Python と Java で試すためのサンプルです。公式ドキュメントや調査メモを基に、シリアライズとデシリアライズの手順を簡単にまとめています。
proto/chat.proto… チャットメッセージのスキーマ定義proto/write_proto.py… Python でチャットメッセージをバイナリ化するスクリプトproto/java/src/Main.java… Java でchat.binを読み込むサンプル
- protoc をインストールし、
protoc --versionが実行できるように PATH を通す。 - このリポジトリを取得し、ルートディレクトリで作業する。
- protobuf ランタイムをインストールする。
python -m pip install protobuf
protoディレクトリに移動し、.protoから Python コードを生成する。protoc --python_out=. chat.proto
- シリアライズを実行する。
python write_proto.py
chat.binと JSON 形式での出力が確認できれば成功。
protoディレクトリで Java コードを生成する。protoc --java_out=./java/src chat.proto
- 必要な JAR (
protobuf-java-x.y.z.jar) をproto/java/libに配置する。 - Java ソースをコンパイルする。
cd proto/java mkdir -p out javac -cp "lib/protobuf-java-4.32.0.jar" -d out src/ChatOuterClass.java src/Main.java
- デシリアライズを実行する。
Python で生成した
java -cp out:lib/protobuf-java-4.32.0.jar Main
chat.binの内容が表示されれば成功。
- Protocol Buffers 公式サイト
- Language Guide (Proto3)
- https://stackoverflow.com/questions/64048132/proto-path-passed-empty-directory-name
- https://wa3.i-3-i.info/word15008.html
- https://apidog.com/jp/blog/protobuf-grpc-basis/
- https://central.sonatype.com/artifact/com.google.protobuf/protobuf-java/4.32.0
- https://abi-laboratory.pro/?l=protobuf&v=3.5.1&view=changelog
- https://zenn.dev/ken7253/articles/vscode-with-hexeditor
- https://developer.medley.jp/entry/2020/08/21/190934/