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
Ruby で gRPC を使おう / ruby-grpc
Search
nakaryo
December 17, 2025
Technology
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby で gRPC を使おう / ruby-grpc
nakaryo
December 17, 2025
More Decks by nakaryo
See All by nakaryo
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
2.3k
ギフティの技術ブログ 再出発とこれから / restart of giftee tech blog 2024
ryotanakaya
0
410
再利用パターン / Pattern of code reuse
ryotanakaya
0
230
エンジニアリングエッセイのススメ
ryotanakaya
0
570
ソフトウェアアーキテクチャについて 語るときに 僕の語ること
ryotanakaya
2
1.8k
エンジニアと要件定義
ryotanakaya
4
1.4k
Go と並行処理
ryotanakaya
0
450
ワクワク!Rubyクイズ!!
ryotanakaya
0
1.7k
増え続けるトランザクションデータと向き合う
ryotanakaya
0
570
Other Decks in Technology
See All in Technology
Vue.jsのGitHubから学ぶ意思決定
yut0naga1_fa
1
290
撮るだけでは終わらない。ソニーが挑むB2Bカメラソリューション開発
sony
0
110
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
Devin プロモコードの受け取りと適用(2026.10.27)
kinopeee
1
570
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
320
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
330
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
250
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
170
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
210
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
110
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
1
880
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
120
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Writing Fast Ruby
sferik
630
63k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
530
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
290
Bash Introduction
62gerente
615
220k
Rails Girls Zürich Keynote
gr2m
96
14k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Fireside Chat
paigeccino
43
4.1k
First, design no harm
axbom
PRO
2
1.4k
Transcript
2025/12/17 Nakaya Ryota Ruby で gRPC を使おう
なかりょー @株式会社ギフティ 自己紹介 • バックエンドエンジニア • 前職はバックオフィス
ERP ベンダーで上流メイン • Go / Ruby / Java • AI に翻弄される今日この頃 @nakaryo79
みなさん、gRPC 使っていますか?
• RPC(Remote Procedure Call)とは、リモート上のコンピュータープログラムを呼び出して実行する 技術、またはそのためのプロトコル • あたかもローカル関数を呼び出しているかのようにリモートにある関数を実行できるようにする技 術を指す ◦
IDL があって、そこからクライアント/サーバーのコードを自動生成して利用する そもそも RPC とは
• RPC で通信するためのフレームワーク • Google が開発して、2015年に OSS 化した
• L7 プロトコルは HTTP/2 を使う • JSON などのテキストベースの通信ではなく、Protocol Buffers を使用してシリアライズしたデータ フォーマットでやり取りするのが特徴 • JSON などを生でやり取りするより 通信効率がいい • ちなみに、gRPC の “g” の意味はバージョンによって変わる(Google の “g” ではない) gRPC とは
• 特定の言語やプラットフォームに依存しない ◦ クライアント、サーバーが異なる言語で実装されていても通信可能 • IDL として .proto ファイルに IF
定義を記述して、そこからクラサバのボイラープレートを自動生成して使う gRPC とは
• マイクロサービスの流行と合わせて利用されるケースが増えてきた トレンド感
• データがシリアライズされるのでとにかく通信効率がいい ◦ つまり、速い!! ◦ JSON ベースでの通信と比べて2倍速いというベンチマークも ▪ もちろんワークロードやペイロードの内容にも依る ◦
マイクロサービスのようにリモートコールが増えるアーキテクチャでは価値が大きい • スキーマファーストでの開発を強制できる • JSON Schema と比べて IDL が読みやすい(と思う) • ボイラープレートがあるので、慣れれば API を叩く開発が楽 • ストリーミング機能もある gRPCを使うメリット
• gRPC そのもののエコシステムと Protocol Buffers の仕様を覚えないといけない ◦ OpenAPI スキーマや
GraphQL スキーマほど浸透していないので学習コスト... • 既存のツールが使えない場面がある ◦ curl で叩けない ◦ HTTP クライアントツールが対応していないなど ▪ とはいえ、Postman など有名どころは対応している • 公式にサポートされている言語に縛られる gRPCを使うデメリット
• C# / .NET • C++ • Dart • Go
• Java • Kotlin • Node • Objective-C • PHP • Python • Ruby • Swift 公式サポートのある言語 ※ 2025年時点
• grpc gem、grpc-tools gem が公式から提供されている • Protocol Buffers の定義ファイルを書いて
Ruby のコードを自動生成 • あとはサーバーとクライアントを実装するだけ Ruby での gRPC 開発
• service: 関数を束ねる概念 • rpc: 関数定義 • message: 構造体定義 Protocol
Buffers による IF 定義
• service: 関数を束ねる概念 • rpc: 関数定義 • message: 構造体定義 Protocol
Buffers による IF 定義 yaml と違ってクラスや関数定義の ように書けるので読みやすい
• 配列、enum、繰り返し、map などなど、様々な表 現ができる • https://protobuf.dev/programming-guides/proto 3/ Protocol Buffers による
IF 定義
• protobuf で定義されたメソッドを実装するだけ Ruby のサーバー側実装
• サーバースタブを作成する • そのスタブに対してメソッドを呼び出すだけ Ruby のクライアント側実装
• サーバースタブを作成する • そのスタブに対してメソッドを呼び出すだけ Ruby のクライアント側実装 • リモート呼び出しの際に URI とか意識しなくて良い
• レスポンスのパースなども不要 • Faraday などのクライアント gem も不要
• 実際に使ってみた(サーバー側は Go、クライアント側が Ruby という構成) • Protocol Buffers の IDL
記法にさえ慣れれば楽に開発できる • Ruby には型がないので、自動生成コードの挙動を追うのが大変だった ◦ レスポンスからエラーの詳細を取り出すためにキャストやデシリアライズなど色々しないといけなく、ドキュメン トも少なかったため苦労した • rails サーバーに組み込むには工夫が必要 ◦ gruf などのライブラリを使うのが良さそう ▪ https://github.com/bigcommerce/gruf • 巷に知見が少ない... 実際にプロダクションで使ってみての感想
• gRPC には色々辛い点があって、Buf という企業が Connect という RPC FW を開発、提供している ◦
https://github.com/connectrpc ◦ 2025年末時点だと Go、TypeScript、Python、Swift、Kotolin、Dart がサポートされている ◦ 新しい言語のサポート予定もあるそうなので Ruby もサポートされるといいですね... よもやま
• gRPC は高速 & 型安全な RPC フレームワーク • Ruby
での実装は難しくない • Rails サーバーに組み込むのはややハードルがある • Connect RPC も要チェック まとめ
Fin