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
170
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.2k
ギフティの技術ブログ 再出発とこれから / restart of giftee tech blog 2024
ryotanakaya
0
380
再利用パターン / Pattern of code reuse
ryotanakaya
0
220
エンジニアリングエッセイのススメ
ryotanakaya
0
550
ソフトウェアアーキテクチャについて 語るときに 僕の語ること
ryotanakaya
2
1.8k
エンジニアと要件定義
ryotanakaya
4
1.3k
Go と並行処理
ryotanakaya
0
440
ワクワク!Rubyクイズ!!
ryotanakaya
0
1.7k
増え続けるトランザクションデータと向き合う
ryotanakaya
0
560
Other Decks in Technology
See All in Technology
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2k
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
1.9k
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.7k
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
310
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
2
210
iOSDC Japan 2026 day1 TrackC 10:50
feedtailor
1
160
HHKBエバンジェリストになる方法
941
0
110
あるけみー式LTスライド作成術
alchemy1115
1
210
Featured
See All Featured
Making Projects Easy
brettharned
120
6.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Music & Morning Musume
bryan
48
7.4k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
The SEO identity crisis: Don't let AI make you average
varn
0
560
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
540
Rails Girls Zürich Keynote
gr2m
96
14k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
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