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
Spring gRPC で始める gRPC 入門 / Introduction to gRPC...
Search
mackey0225
June 07, 2025
Programming
1.6k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
2025年6月7日に開催された JJUG CCC 2025 Spring での登壇資料
mackey0225
June 07, 2025
More Decks by mackey0225
See All by mackey0225
人生初のマネージャーというロールを 経験して得たもの・失ったもの / Reflections on My First Manager Role
mackey0225
0
870
Minecraft の MOD 開発を通して 子どもと一緒に考えるシステム開発について / Thinking About System Development with Children #jjug_ccc
mackey0225
0
100
「なんか〇〇ライブラリで脆弱性あるみたいなんだけど。。。」から始める脆弱性対応 / First Steps in Vulnerability Response
mackey0225
2
240
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
260
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
650
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
1.2k
「社内LT会」を1年続けてみた! / Our Year-Long Journey of Internal Lightning Talks
mackey0225
1
240
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
3.6k
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
1.5k
Other Decks in Programming
See All in Programming
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.2k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
230
FreeBSDでZabbixを動かす
kenkino
0
330
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
18
16k
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
200
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
260
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
670
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
370
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.8k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
690
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
130
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
550
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
How STYLIGHT went responsive
nonsquared
100
6.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
420
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Transcript
Spring gRPC で始める gRPC 入門 2025-06-07 JJUG CCC 2025 Spring
BABY JOB株式会社 浅野 正貴 (@mackey0225)
Spring gRPC で始める gRPC 入門 自己紹介 名前:浅野 正貴 所属:BABY JOB株式会社 関ジャバの運営もやってます
X: @mackey0225
Spring gRPC で始める gRPC 入門 お品書き • gRPC とは •
Spring gRPC とは • サンプルコードを用いた実装 • デモ • まとめ
gRPC とは
Spring gRPC で始める gRPC 入門 gRPC とは • RPC のフレームワークの1つ
• Google 内の基盤技術が起源 • 様々な言語やプラットフォームで利用可能 • HTTP/2 で通信 • 4つの通信タイプ • Protocol Buffers(protobuf)
Spring gRPC で始める gRPC 入門 RPC フレームワークの1つ • Remote Procedure
Call の略 • 遠隔の端末上の関数・手続きを呼び出し実行する技術 • 考え方自体は昔からあり、歴史は長い ◦ 1970年代:RFC 694、RFC 707、Xerox PARC など ◦ 80年代・90年代:Sun RPC、CORBA、Java RMI など • 他には Apache Thrift、Apache bRPC、JSON-RPC など • マイクロサービス間の通信やモバイルアプリで使われる
Spring gRPC で始める gRPC 入門 Google 内の基盤技術が起源 • Google の
RPC フレームワーク Stubby がルーツ ◦ 内部では 10 年以上の利用実績 • 2013年から gRPC の内部プロジェクトが開始 • 2015年2月:GitHub で公開 • 2016年8月:1.0.0 リリース (GA) • 2017年2月:CNCF のプロジェクト
Spring gRPC で始める gRPC 入門 余談:gRPC は何を表しているか? • gRPC Remote
Procedure Call • Golden Retriever PanCakes • バージョンごとに "g" に意味がある ◦ 1.30:gradius、1.58:goku など gRPC マスコット PanCakesくん (再帰的。。。?)😕
Spring gRPC で始める gRPC 入門 余談:gRPC は何を表しているか? • gRPC Remote
Procedure Call • Golden Retriever PanCakes • バージョンごとに "g" に意味がある ◦ 1.30:gradius、1.58:goku など • Google Remote Procedure Call は完全否定 gRPC マスコット PanCakesくん (再帰的。。。?)😕
Spring gRPC で始める gRPC 入門 余談:gRPC は何を表しているか? • gRPC Remote
Procedure Call • Golden Retriever PanCakes • バージョンごとに "g" に意味がある ◦ 1.30:gradius、1.58:goku など • Google Remote Procedure Call は完全否定 gRPC マスコット PanCakesくん (再帰的。。。?)😕 引用元:YouTube: Keynote Overview of gRPC Ivy Zhuang, Software Engineer, Google https://www.youtube.com/watch?v=E3ez34fdC0k
Spring gRPC で始める gRPC 入門 様々な言語やプラットフォームで利用可能 • Java をはじめ多くの言語で利用可能 ◦
C++, Go, Python, Node.js, Kotlin, PHP など ◦ 異なる言語で書かれたサービス間での通信が可能 • 様々な OS、モバイルで利用可能 ◦ ブラウザからはプロキシ(gRPC-web)を使えば可能
Spring gRPC で始める gRPC 入門 HTTP/2 で通信 • HTTP/2 は2015年5月に
RFC 7540 で標準化 ◦ その後、2022年6月に RFC 9113 で更新 • HTTP/2 は Google が開発していた SPDY がベース • HTTP/1.1 との比較 ◦ バイナリプロトコルによる高速かつ効率な通信が可能 ◦ 単一のコネクションで複数の並列通信が可能
Spring gRPC で始める gRPC 入門 4つの通信タイプ 以下の 4 つがある •
単項RPC • サーバーストリーミングRPC • クライアントストリーミングRPC • 双方向ストリーミングRPC
Spring gRPC で始める gRPC 入門 4つの通信タイプ(イメージ) Client Server Client Server
Client Server Client Server 単項RPC サーバー ストリーミングRPC クライアント ストリーミングRPC 双方向 ストリーミングRPC
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) • Google が開発したシリアライズライブラリ
◦ https://github.com/protocolbuffers • IDL(インターフェース定義言語)を用いて記述 ◦ 拡張子は .proto ◦ service(API仕様) と message(データ構造) を定義 ▪ 静的型付け ◦ protoc で各言語のコードを生成する(コンパイル)
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf)
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) サービス メッセージ 構文宣言
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) サービス メッセージ 構文宣言
package, option は割愛🙏
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) 最初にバージョンの指定 現状は「syntax =
"proto3";」でOK
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) 最初にバージョンの指定 現状は「syntax =
"proto3";」でOK ちなみに 新しい定義「edition = "2023";」は grpc-java ではできない。。。
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) 最初にバージョンの指定 現状は「syntax =
"proto3";」でOK ちなみに 新しい定義「edition = "2023";」は grpc-java ではできない。。。 https://github.com/grpc/grpc-java/issues/11526 こんな Issue があるんよ
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) 最初にバージョンの指定 現状は「syntax =
"proto3";」でOK ちなみに 新しい定義「edition = "2023";」は grpc-java ではできない。。。 https://github.com/grpc/grpc-java/issues/11526 こんな Issue があるんよ
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) クライアントとサーバー間の定義 先の 4
つの通信もここで宣言する
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) クライアントとサーバー間の定義 先の 4
つの通信もここで宣言する
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) サービスの引数・戻り値を定義する
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf)- message 代表的なものは以下 •
Scalar:基本となる型(文字列、数値、真偽値など) • Enum:複数の異なる定数の集合 • Repeated:配列・リスト • Map:キー・バリューの組 • Any:任意の型 • Oneof:最大1つのフィールドだけ設定する
Spring gRPC で始める gRPC 入門 Protocol Buffers(protobuf) フィールド番号 フィールドを識別するためのもの メッセージ内で一意にしないといけない
Spring gRPC で始める gRPC 入門 gRPC とは • RPC のフレームワークの1つ
• Google 内の基盤技術が起源 • 様々な言語やプラットフォームで利用可能 • HTTP/2 で通信 • 4つの通信タイプ • Protocol Buffers(protobuf)
Spring gRPC とは
Spring gRPC で始める gRPC 入門 Spring gRPC とは - 簡単な機能説明
• Spring Boot アプリに gRPC を導入できる ◦ gRPC のクライアント、サーバーの両方 • Actuator を用いてメトリクスの取得が可能 • GraalVM のネイティブバイナリにコンパイルが可能 • 将来的には Spring Security との連携も予定
Spring gRPC で始める gRPC 入門 Spring gRPC とは - タイムライン
• 公開は2024年9月 ◦ 当初は実験的なプロジェクトとして公開 • 現在の最新は 0.8.0 ◦ このバージョンで正式なプロジェクトに昇格 • Spring Boot 4 系が出るタイミングで 1.0.0 になる予定 ◦ 今年の秋くらいになりそう
Spring gRPC で始める gRPC 入門 Spring gRPC とは • Spring
プロジェクトのひとつ • 公開は2024年9月 ◦ 当初は実験的なプロジェクトとして公開 ◦ 2025年5月13日に正式なプロジェクトとして追加 • 現在の最新バージョンは 0.8.0 https://spring.io/blog/2025/05/13/spring-grpc-promoted
Spring gRPC で始める gRPC 入門 Spring gRPC とは • Spring
プロジェクトのひとつ • 公開は2024年9月 ◦ 当初は実験的なプロジェクトとして公開 ◦ 2025年5月13日に正式なプロジェクトとして追加 • 現在の最新バージョンは 0.8.0 https://spring.io/blog/2025/05/13/spring-grpc-promoted Spring gRPC 1.0.0のSpring Boot連携機能は、Spring Boot 4.0.0で本体へ移行します。 そのため、Spring gRPC 1.0.0のサポートは、Spring Boot 4.0.0 のライフサイクルに合わせられるとお考えください。
Spring gRPC で始める gRPC 入門 Spring gRPC とは - 使い方・開発の概要
• Spring Boot で gRPC サービスを簡単に構築可能 ◦ Spring Initializr で Spring gRPC を選択 ◦ proto フォルダに proto ファイルを作成・配置 ◦ ビルドツールでクラスファイルを生成 ◦ 作成されたクラスファイルを元にサービス実装
サンプルコードを用いた実装
Spring gRPC で始める gRPC 入門 お試し Spring gRPC Spring Initializr
で Spring gRPC を選択する
Spring gRPC で始める gRPC 入門 お試し Spring gRPC プロジェクト作成時点で proto
ディレク トリが作成されている
Spring gRPC で始める gRPC 入門 お試し Spring gRPC コード参考: https://github.com/spring-projects/spring-grpc/blob/main/samples/grpc-server/src/main/proto/hel
lo.proto proto ディレクトリ内に .proto ファイルを追加する
Spring gRPC で始める gRPC 入門 お試し Spring gRPC ビルドするとコードが生成される
Spring gRPC で始める gRPC 入門 お試し Spring gRPC 生成コードを使用し処理を記述 コード参考:
https://github.com/spring-projects/spring-grpc/blob/main/samples/grpc-server/src/main/java/org/ springframework/grpc/sample/GrpcServerService.java
Spring gRPC で始める gRPC 入門 お試し Spring gRPC いつも通り、Spring Boot
を起動。
Spring gRPC で始める gRPC 入門 お試し Spring gRPC いつも通り、Spring Boot
を起動。
Spring gRPC で始める gRPC 入門 お試し Spring gRPC .proto で定義したエンドポイントを叩くと結果が返る。
(「\u003e」は「>」がエスケープされている)
デモ ソースは以下に配置 https://github.com/mackey0225/jjugccc2025spring
Spring gRPC で始める gRPC 入門 デモの構成イメージ gRPC Client gRPC Server
Client REST gRPC (Client に対しての Server) port:8080 port:8081
まとめ
Spring gRPC で始める gRPC 入門 まとめ • gRPC は分散アーキテクチャで重要な要素 •
Spring 謹製の gRPC ライブラリ ◦ 将来的に安定した長期サポートを得やすい ◦ 簡単に gRPC を導入できるのは魅力 • 導入・本番運用は 1.0.0 の公開後が良いかも ◦ 視野に入れる意味で現時点で触るのは有り
ご清聴いただき ありがとうございました