Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Rustでつくって学ぶProtocol Buffers 隅田川.dev vol.2 1
Slide 2
Slide 2 text
自己紹介 ● 名前:0yu(おゆ、ぜろゆー) ● 出身:北海道 ● 趣味:映画鑑賞・旅行・アニメ・趣味開発 etc ● 最近はつけ麺と油そばに凝ってます ● Think ! FrontEnd by DMM #5 新卒会 [オンライン開催] 2 っっっz yud0uhu
Slide 3
Slide 3 text
3
Slide 4
Slide 4 text
gRPCとは 4 RPC(Remote Procedure Calll/遠隔手続き呼び出し)とは ● 「クライアント−サーバー」の通信プロトコル ○ サーバー上で実装されている関数(Procedure、プロシージャ)をクライアント からの呼び出しに応じて実行する技術 ■ サービス間通信のための新技術「gRPC」入門 | さくらのナレッジ
Slide 5
Slide 5 text
gRPCとは 5 RPCの問題点 ● 広く普及している技術(HTTP/HTTPSやXML、JSON)を利用するため導入しやすい ● テキストフォーマットなのでバイナリデータは扱いにくい ● HTTP/HTTPSでのやりとりになるので、転送効率面のオーバーヘッドが大きい
Slide 6
Slide 6 text
gRPCとは 6 gRPCとは ● RPCの問題点を解決するため、Googleによって開発されたRPCフレームワーク ● 通信にHTTP/2、IDLにProtobuf(Protocol Buffers)を使用
Slide 7
Slide 7 text
gRPCとは 7 Protocol Buffersとは ● Google謹製のデータフォーマットツール ○ データを効率よく(バイナリデータも含む)扱える ○ 構造化データをバイト列に変換(シリアライズ/デシリアライズ)するため、構造 化データを変換するためのスキーマ言語と捉えることもできる ■ Understanding Protocol Buffers with Practical Examples | by Luis Soares | Medium
Slide 8
Slide 8 text
RustでgRPCサーバーを立てる 8 gRPCでチャットサーバーを立てる ● 参考 ○ helloworld-tutorial.md - hyperium/tonic · GitHub ○ Example ○ Chat System by Rust and gRPC-Web
Slide 9
Slide 9 text
RustでgRPCサーバーを立てる 9 tonicとは ● RustでgRPCサーバを構築する場合、デファクトスタンダードなライブラリ
Slide 10
Slide 10 text
.protoファイルのsyntax highlightingを有効化 10 ● vscode-proto3 - Visual Studio Marketplace
Slide 11
Slide 11 text
必要なライブラリのインストール 11 ● protobuf — Homebrew Formulae ○ tonicを動かすには、プロトコルバッファのコンパイラであるprotocが必要 ● grpcurl — Homebrew Formulae ○ curlコマンドライクにgRPCサーバーとの対話を行うために必要
Slide 12
Slide 12 text
Protocol BufferでAPIを定義する 12
Slide 13
Slide 13 text
Protocol BufferでAPIを定義する 13 ● syntax = "proto3" でバージョンを指定 ● message型でスキーマを定義する ○ 複数のフィールドを持つ ○ それぞれのフィールドはスカラ型もしくはコンポジット型 ● service型でgRPCのAPI定義をする
Slide 14
Slide 14 text
Cargo.toml に依存関係を記載 14
Slide 15
Slide 15 text
Build Scriptの定義 15 ビルド時にprotoファイルを読んで、gRPCのコードを自動生成するためのbuild.rsを書く
Slide 16
Slide 16 text
ビルドする:cargo buildする 16
Slide 17
Slide 17 text
ビルドする:target配下にRustのコードが自動生成される 17
Slide 18
Slide 18 text
サーバーを実装する 18
Slide 19
Slide 19 text
サーバーを実装する 19
Slide 20
Slide 20 text
サーバーを実装する 20
Slide 21
Slide 21 text
動作確認 21 carrog runでサーバーを起動
Slide 22
Slide 22 text
動作確認 22 →レスポンスが返ってくれば成功 grpcurl宛にprotoファイルを指定してリクエストを送る
Slide 23
Slide 23 text
最終的な実装 23 https://github.com/yud0uhu/grpc-chat