Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
Search
FORTE
May 11, 2025
Programming
110
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
110
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
40
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
360
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
380
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
98
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
78
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
550
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
210
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
fortegp05
0
150
Other Decks in Programming
See All in Programming
Webフレームワークの ベンチマークについて
yusukebe
0
180
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1k
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
130
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
310
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
140
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
0
150
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
970
これからAgentCoreを触る方へトレンドはGatewayです
har1101
2
180
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.4k
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
Featured
See All Featured
Designing for Performance
lara
611
70k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
790
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
250
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Automating Front-end Workflow
addyosmani
1370
210k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
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