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
7
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
450
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
600
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
Scaling GitHub
holman
463
140k
The Invisible Side of Design
smashingmag
302
51k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
BBQ
matthewcrist
89
9.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Why Our Code Smells
bkeepers
PRO
340
57k
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)まとめ
質問タイム
ありがとうございました!