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
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
Search
FORTE
May 11, 2025
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
技術書典 18の新刊「MicronautでgRPCに入門!実践!サーバーサイドKotlin」のサンプルです
お求めは技術書典か、BOOTHまで!
FORTE
May 11, 2025
More Decks by FORTE
See All by FORTE
入門!実践!サーバーサイドKotlin〜2026春改訂版〜サンプル/sski2_sample
fortegp05
0
170
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
59
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
500
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
440
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
110
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
83
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
600
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
230
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
fortegp05
0
170
Other Decks in Programming
See All in Programming
ソフトウェアラスタライザ
fadis
1
800
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
120
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
5.5k
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
110
AIとGame Jamで、ゲームを完成させた話
takahirosaeki
0
110
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
130
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
470
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
190
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
1k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
120
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
A better future with KSS
kneath
240
18k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Side Projects
sachag
455
43k
Fireside Chat
paigeccino
42
4k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
None
Micronaut Ͱ gRPC ʹೖʂ ࣮ફʂ αʔόʔαΠυ Kotlin FORTE ɹஶ 2025-05-31
൛ aozora Project ൃߦ
͡Ίʹ ஶऀͷ FORTE(ϑΥϧς) Ͱ͢ɻMicronaut ͰαʔόʔαΠυ Kotlinɺ2 Ͱ ͢ɻࠓճ Micronaut Λͬͯ
gRPC ʹೖ࣮͠ફ͍ͯ͘͠༰ʹͳΓ·͢ɻ͍· ·Ͱͣͬͱ REST API ϕʔεͰհ͖ͯ͠·ͨ͠ɻ࠷ۙ gRPC Ͱ API Λॻ͍ ͍ͯΔͷͰɺ͍͜͜ΒͰͪΌΜͱ gRPC ʹೖ͓͖͍ͯͨ͠ͳͱࢥͬͨͷ͕͖͔ͬ ͚Ͱ͢ɻ ຊஶͷ༰ ͜ͷຊචऀ͕ Micronaut ͰαʔόʔαΠυ Kotlin Λࢼͯ͠ΈͨதͰٙʹࢥͬ ͨ͜ͱௐͨ͜ͱΛٕज़ॻͷܗͰΞτϓοτͨ͠ 2 ͱͳΓ·͢ɻͦͷͨΊɺ Micronaut ͱʁ ͷΑ͏ͳೖతͳ༰લஶʮMicronaut Ͱೖ!࣮ફ!αʔόʔ αΠυ KotlinʯΛ͝ཡ͍ͩ͘͞ɻ ਤ 1: Micronaut Ͱೖ!࣮ફ!αʔόʔαΠυ Kotlin 2
2 ͱͳΔຊஶͰɺMicronaut Ͱ gRPC ʹ͍ͭͯೖ࣮͠ફͯ͠ΈΔ༰ͱ ͳΓ·͢ɻ͜ͷຊΛಡΉ͜ͱͰ࣍ͷ߲͕ಘΒΕ·͢ɻ • gRPC ʹ͍ͭͯ֓ཁ͕આ໌Ͱ͖Δ •
αʔόʔαΠυ Kotlin Ͱಈ͘ gRPC ίʔυ͕࣮Ͱ͖Δ • I/F ఆٛͱͳΔ proto ϑΝΠϧΛ࣮Ͱ͖Δ ͲΜͳਓ͚͔ ຊஶ Micronaut Kotlin ʹڵຯ͕͋ΔɺKotlin Ͳ͜Ζ͔ϓϩάϥϜະܦݧͩ ͚ͲԿ͔ͬͯΈ͍ͨɺόοΫΤϯυʹೖͯ͠Έ͍ͨͳͲओʹೖॻͱͯ͠ॳ৺ऀ ͚ʹॻ͔Ε͍ͯ·͢ɻͪΖΜɺ͢Ͱʹ Spring Boot Ktor ͳͲଞͷϑϨʔϜ ϫʔΫΛ৮ͬͨ͜ͱ͕͋ΓผͷϑϨʔϜϫʔΫΛ৮ͬͯΈ͍ͨͱ͍͏ํʹ͓קΊ Ͱ͢ɻ ຊஶͰհͨ͠खॱͷ௨Γʹ͢Εɺίʔυίϐϖ͢Εಈ͘Α͏ʹͳͬ ͍ͯ·͢ͷͰɺͱΓ͋͑ͣಈ͔͍ͨ͠ͱ͍͏ํʹ҆৺Ͱ͢ɻ·ͨɺOS ͱͯ͠ WindowsɺMac ྆ରԠͰ͋ΓɺΤσΟλ IntelliJ IDEAɺVS Code ͷ྆ํʹରԠ ͍ͯ͠·͢ɻ͓ख࣋ͪͷڥɺ͓͖ͳΤσΟλͰ͓ࢼ͍ͩ͘͠͞ɻ ͜ͷຊͰಘΒΕΔ͜ͱ ຊஶΛಡΈऴΘΔͱ࣍ͷΑ͏ͳঢ়ଶʹͳΓ·͢ɻ • gRPC ʹ͍ͭͯઆ໌Ͱ͖ΔΑ͏ʹͳΔ • gRPC Ͱ API Λ࣮Ͱ͖Δ ͋ͳͨͷ Kotlin Ͱ Web ΞϓϦέʔγϣϯͷόοΫΤϯυΛ࡞Γ͍ͨɺ৽͍͠ϑ ϨʔϜϫʔΫʹ৮ͬͯΈ͍ͨͱ͍͏ࢥ͍ʹԠ͑ΒΕͨͷͳΒɺ͜Μͳʹخ͍͜͠ͱ ͋Γ·ͤΜɻ ͜ͷຊͰղઆ͠ͳ͍͜ͱ ຊஶͰ Micronaut Λ༻͍ͯ͠·͕͢ɺ͋͘·Ͱ͍ํͷΈͰ͋Γৄࡉͳ Έιʔείʔυͷதʹ͍ͭͯղઆ͍ͯ͠·ͤΜɻ ·ͨɺKotlin ͱ͍͏ϓϩάϥϛϯάݴޠͦͷͷʹ͍ͭͯৄࡉઆ໌͓ͯ͠Γ ·ͤΜɻಉ༷ʹ Web ΞϓϦέʔγϣϯʹ͍ͭͯৄࡉͳղઆ͍ͯ͠·ͤΜͷͰɺ ͦͷ͋ͨΓͷ Web γεςϜ։ൃͷجૅʹؔ͢ΔΈղઆ·ͨผͷػձͱͳΓ ·͢ɻͦͷଞɺGradle ʹ͍ͭͯ༻͍ͯ͠·͕͢ղઆ͓ͯ͠Γ·ͤΜɻ͜͠ 3
ͷ͋ͨΓʹ͍ͭͯڵຯ͕͋Εɺݹ͍ຊʹͳΓ·͕͢ஶʮೖ!࣮ફ!αʔόʔαΠ υ KotlinʯΛ͝ཡ͍ͩ͘͞·ͤɻ ਤ 2: ೖ!࣮ફ!αʔόʔαΠυ Kotlin ͜ͷຊͷ͍ํ ຊॻ͜ͷຊͷͱ͓ΓʹΕ Micronaut
Λ༻ͨ͠αʔόʔαΠυ Kotlin Ͱ gRPC ʹΑΔ API ͕ಈ͘ͱ͍͏ͱ͜ΖΛࢦͯ͠ॻ͔Ε͍ͯ·͢ɻ͜ͷຊΛಡΊ ཧ۶Έ͕ͯ͢ཧղͰ͖ΔΑ͏ʹॻ͔Ε͍ͯ·ͤΜɻ͜ͷຊΛೖΓޱͱͯ͠ ͞ΒʹͦͷԞʹ͋Δ͜ͱʹڵຯΛ͍͚࣋ͬͯͨͩͨΒ͍Ͱ͢ɻ جຊతʹ಄͔ΒಡΈਐΊ͍͚͍͍ͯͰ͕͢ɺ͍͖ͳΓίʔυΛݟ͍ͨͱ͍͏ํ ࠷ॳͷํඈ͍͍ͯͨͩͯ͠େৎͰ͢ɻ ಡΈऴΘͬͨײؒҧ͍ͷࢦఠɺՃཁͳͲ࣍ͷϋογϡλάΛ༻͍ͯ Twitter Ͱᄁ͍͍͚ͯͨͩΔͱخ͍͠Ͱ͢ɻͥͻɺײΛ͓͓ͪͯ͠Γ·͢ɻ #sskm2 ໔ࣄ߲ ຊॻʹهࡌ͢Δ༰චऀͷॴଐ͢Δ৫ͷެࣜݟղͰ͋Γ·ͤΜɻ ·ͨɺຊॻՄೳͳݶΓਖ਼֬Λظ͢Α͏ʹΊ͍ͯ·͕͢ɺචऀ͕ͦͷ༰Λอূ ͢ΔͷͰ͋Γ·ͤΜɻͦͷͨΊɺຊॻͷهࡌ༰ʹج͍ͮͨಡऀͷߦҝɺٴͼಡ ऀ͕ඃͬͨଛʹ͍ͭͯචऀͳΜΒΛෛ͏ͷͰ͋Γ·ͤΜɻ 4
࣍ ͡Ίʹ 2 ຊஶͷ༰ . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ͲΜͳਓ͚͔ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ͜ͷຊͰಘΒΕΔ͜ͱ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ͜ͷຊͰղઆ͠ͳ͍͜ͱ . . . . . . . . . . . . . . . . . . . . . . . . . 3 ͜ͷຊͷ͍ํ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ໔ࣄ߲ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ୈ 1 ষ Micronaut ͱ gRPC 7 1.1 gRPC ͱ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 RPC ͱ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 ୈ 2 ষ Micronaut Ͱೖ gRPC 11 2.1 ֬ೝڥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 όʔδϣϯΞοϓ . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Micronaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Kotlin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3 gRPC Ͱ API Λಈ͔ͯ͠ΈΔ . . . . . . . . . . . . . . . . . . . 15 αʔόʔଆͷϓϩδΣΫτΛ࡞ . . . . . . . . . . . . . . . . . . 16 αʔόʔΛ࣮ . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ΫϥΠΞϯτଆͷϓϩδΣΫτΛ࡞ . . . . . . . . . . . . . . . 24 ΫϥΠΞϯτΛ࣮ . . . . . . . . . . . . . . . . . . . . . . . . . 24 gRPC ΫϥΠΞϯτΛىಈ͠ API ͷૄ௨Λ֬ೝ . . . . . . . . . . 26 ୈ 3 ষ ίʔυղઆ 27 3.1 protobuf ϓϥάΠϯ . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 Gradle ͷґଘؔ . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3 ࣗಈੜؔͷઃఆ . . . . . . . . . . . . . . . . . . . . . . . . . 29 5
࣍ 3.4 proto ϑΝΠϧ . . . . . .
. . . . . . . . . . . . . . . . . . . . . 29 3.5 αʔόʔଆͷιʔε . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.6 gRPC αʔόʔ . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.7 gRPC ΫϥΠΞϯτ . . . . . . . . . . . . . . . . . . . . . . . . 32 3.8 όʔδϣϯʹ͍ͭͯ . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.9 ࢀߟࢿྉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A ࠓճղઆͰ͖ͳ͔ͬͨ༰ʹ͍ͭͯ 35 ͋ͱ͕͖ 36 ిࢠ൛ʹ͍ͭͯ 37 ஶऀհ 38 จষ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 ॴଐαʔΫϧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Πϥετ୲ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6