Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby で gRPC を使おう / ruby-grpc
Search
nakaryo
December 17, 2025
Technology
1
78
Ruby で gRPC を使おう / ruby-grpc
nakaryo
December 17, 2025
Tweet
Share
More Decks by nakaryo
See All by nakaryo
ギフティの技術ブログ 再出発とこれから / restart of giftee tech blog 2024
ryotanakaya
0
320
再利用パターン / Pattern of code reuse
ryotanakaya
0
170
エンジニアリングエッセイのススメ
ryotanakaya
0
420
ソフトウェアアーキテクチャについて 語るときに 僕の語ること
ryotanakaya
2
1.5k
エンジニアと要件定義
ryotanakaya
4
1k
Go と並行処理
ryotanakaya
0
370
ワクワク!Rubyクイズ!!
ryotanakaya
0
1.5k
増え続けるトランザクションデータと向き合う
ryotanakaya
0
520
シャッフルランチシステムを刷新してみた話
ryotanakaya
0
190
Other Decks in Technology
See All in Technology
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
140
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
260
M&Aで拡大し続けるGENDAのデータ活用を促すためのDatabricks権限管理 / AEON TECH HUB #22
genda
0
230
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
1
260
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
140
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.3k
AI駆動開発の実践とその未来
eltociear
1
480
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
170
【U/Day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
1.4k
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
200
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
220
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
160
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
200
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
Unsuck your backbone
ammeep
671
58k
Fireside Chat
paigeccino
41
3.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
sira's awesome portfolio website redesign presentation
elsirapls
0
89
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Skip the Path - Find Your Career Trail
mkilby
0
27
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
37
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