Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ProtocolBuffers調べてみた
Search
yoshihiro.ri
November 28, 2024
0
6
ProtocolBuffers調べてみた
勉強会で発表する時に使ったスライドです
※正確な情報をお求めの方は公式ドキュメントを参照ください
yoshihiro.ri
November 28, 2024
Tweet
Share
More Decks by yoshihiro.ri
See All by yoshihiro.ri
LINEで朝活!技術トレンドを1日1分でキャッチする『Daily Tech Digest』を作ってみた
yoshihiro999
0
410
Featured
See All Featured
BBQ
matthewcrist
89
9.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Navigating Team Friction
lara
187
15k
Designing for humans not robots
tammielis
253
25k
What's in a price? How to price your products and services
michaelherold
246
12k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
182
54k
Producing Creativity
orderedlist
PRO
346
40k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Transcript
ProtocolBuffers 調べてみた
Protocol Buffersとは? スキーマ言語 データのバイナリ変換に使えるフォーマット 異なる言語同士の通信に役立つ Google が開発 gRPCに使われている
Protocol Buffersとは? Userデータ ① ②
Protocol Buffersとは? Userデータ ① ② uint32と思っていたのでエラーが起きました
Protocol Buffersとは? protoファイル
Protocol Buffersとは? バイナリデータ 1.クラス生成 2.データをシリアライズ protoファイル ① ②
Protocol Buffersとは? protoc user.proto --python_out Pythonのクラス定義が自動生成 1.クラス生成
data: b'\n\x05Alice\x10\x19\x1a\
[email protected]
' 2.データをシリアライズ
Protocol Buffersとは? ① ② uint64ね、はいはい 1.クラス生成 2.データをデシリアライズ バイナリデータ protoファイル
本文を追加 javascriptはint64を正確に扱えない 1234567890123457000に丸めてしまう 1.言語非依存
言語非依存 どの言語でもprotoファイルからコード生成できる シリアライズで言語特有の値の受け渡し精度を改善
前方・後方互換性
前方・後方互換性 異なるprotoファイルのバージョンの共存ができる ver. 1.0 ver. 1.1
前方・後方互換性 バイナリデータ 1.0 protoファイル ① ② ver. 1.0 ver. 1.1
desert,foodには デフォルト値が入る
前方・後方互換性 バイナリデータ 1.1 protoファイル ① ② ver. 1.0 ver. 1.1
desert,foodは 無視します
ver. 1.0 ver. 1.1 ver. 1.2 ver. 1.4 異なる言語、異なるproto間の やり取りが可能!!!
ver. 1.1
デメリット 可読性が低い 1. スキーマ依存 2. デバッグしづらい 3. RESTful APIとの相性が悪い 4.
メッセージサイズが小さいとメリットが薄い 5.
概要: Googleが開発したバイナリデータシリアライズフォーマット メリット: 高速、非言語依存、後方・前方互換性あり デメリット: 可読性低い、スキーマ依存、RESTful APIあまり向いてない Protocol Buffers(Protobuf)まとめ
質問タイム
ありがとうございました!