Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rustでつくって学ぶProtocol Buffers
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yud0uhu
September 02, 2023
Programming
310
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustでつくって学ぶProtocol Buffers
隅田川.dev vol.2 by Sep 2, 2023
yud0uhu
September 02, 2023
More Decks by yud0uhu
See All by yud0uhu
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
650
UIパーツの設計を「型」から読み解く 〜TSKaigiのセッションから得た学び〜
yud0uhu
0
550
未必のマクベス
yud0uhu
0
55
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
420
早朝の渋谷の青さ、あるいは溺れた人を助ける為に飛び込んだ海の向こう側に見る、自己覚知と自己開示の尊さ
yud0uhu
1
1.1k
動画配信サービスのフロントエンド実装に学ぶ設計原則
yud0uhu
1
410
非デザイナーのフロントエンドエンジニアがOOUIを考える
yud0uhu
9
6.1k
2023年の ゼロランタイムCSS in JS⚡️ を考える
yud0uhu
5
5.2k
Vue3/Electronで自作したマークダウンエディタをVue3/Tauriにリプレイスした話
yud0uhu
2
3.2k
Other Decks in Programming
See All in Programming
Workers Cache を知る
syumai
0
360
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
450
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Raft: Consensus for Rubyists
vanstee
142
7.8k
BBQ
matthewcrist
90
10k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
HDC tutorial
michielstock
2
960
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Transcript
Rustでつくって学ぶProtocol Buffers 隅田川.dev vol.2 1
自己紹介 • 名前:0yu(おゆ、ぜろゆー) • 出身:北海道 • 趣味:映画鑑賞・旅行・アニメ・趣味開発 etc • 最近はつけ麺と油そばに凝ってます
• Think ! FrontEnd by DMM #5 新卒会 [オンライン開催] 2 っっっz yud0uhu
3
gRPCとは 4 RPC(Remote Procedure Calll/遠隔手続き呼び出し)とは • 「クライアント−サーバー」の通信プロトコル ◦ サーバー上で実装されている関数(Procedure、プロシージャ)をクライアント からの呼び出しに応じて実行する技術
▪ サービス間通信のための新技術「gRPC」入門 | さくらのナレッジ
gRPCとは 5 RPCの問題点 • 広く普及している技術(HTTP/HTTPSやXML、JSON)を利用するため導入しやすい • テキストフォーマットなのでバイナリデータは扱いにくい • HTTP/HTTPSでのやりとりになるので、転送効率面のオーバーヘッドが大きい
gRPCとは 6 gRPCとは • RPCの問題点を解決するため、Googleによって開発されたRPCフレームワーク • 通信にHTTP/2、IDLにProtobuf(Protocol Buffers)を使用
gRPCとは 7 Protocol Buffersとは • Google謹製のデータフォーマットツール ◦ データを効率よく(バイナリデータも含む)扱える ◦ 構造化データをバイト列に変換(シリアライズ/デシリアライズ)するため、構造
化データを変換するためのスキーマ言語と捉えることもできる ▪ Understanding Protocol Buffers with Practical Examples | by Luis Soares | Medium
RustでgRPCサーバーを立てる 8 gRPCでチャットサーバーを立てる • 参考 ◦ helloworld-tutorial.md - hyperium/tonic ·
GitHub ◦ Example ◦ Chat System by Rust and gRPC-Web
RustでgRPCサーバーを立てる 9 tonicとは • RustでgRPCサーバを構築する場合、デファクトスタンダードなライブラリ
.protoファイルのsyntax highlightingを有効化 10 • vscode-proto3 - Visual Studio Marketplace
必要なライブラリのインストール 11 • protobuf — Homebrew Formulae ◦ tonicを動かすには、プロトコルバッファのコンパイラであるprotocが必要 •
grpcurl — Homebrew Formulae ◦ curlコマンドライクにgRPCサーバーとの対話を行うために必要
Protocol BufferでAPIを定義する 12
Protocol BufferでAPIを定義する 13 • syntax = "proto3" でバージョンを指定 • message型でスキーマを定義する
◦ 複数のフィールドを持つ ◦ それぞれのフィールドはスカラ型もしくはコンポジット型 • service型でgRPCのAPI定義をする
Cargo.toml に依存関係を記載 14
Build Scriptの定義 15 ビルド時にprotoファイルを読んで、gRPCのコードを自動生成するためのbuild.rsを書く
ビルドする:cargo buildする 16
ビルドする:target配下にRustのコードが自動生成される 17
サーバーを実装する 18
サーバーを実装する 19
サーバーを実装する 20
動作確認 21 carrog runでサーバーを起動
動作確認 22 →レスポンスが返ってくれば成功 grpcurl宛にprotoファイルを指定してリクエストを送る
最終的な実装 23 https://github.com/yud0uhu/grpc-chat