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
0
59
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
技術書典 18の新刊「MicronautでgRPCに入門!実践!サーバーサイドKotlin」のサンプルです
お求めは技術書典か、BOOTHまで!
FORTE
May 11, 2025
Tweet
Share
More Decks by FORTE
See All by FORTE
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
0
37
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
34
超入門!サーバーサイドKotlin/sski1
fortegp05
0
110
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
140
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
fortegp05
0
81
ITエンジニアとして生きる技術/tlie-sample
fortegp05
0
390
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
fortegp05
0
590
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
310
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
fortegp05
0
500
Other Decks in Programming
See All in Programming
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
340
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
110
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
320
bootcamp2025_バックエンド研修_WebAPIサーバ作成.pdf
geniee_inc
0
120
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
190
チームの境界をブチ抜いていけ
tokai235
0
220
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
130
AI Agent 時代的開發者生存指南
eddie
4
2.1k
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
630
EMこそClaude Codeでコード調査しよう
shibayu36
0
370
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
610
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
190
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
GraphQLとの向き合い方2022年版
quramy
49
14k
Gamification - CAS2011
davidbonilla
81
5.5k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How to Ace a Technical Interview
jacobian
280
24k
YesSQL, Process and Tooling at Scale
rocio
173
15k
Automating Front-end Workflow
addyosmani
1371
200k
Building Applications with DynamoDB
mza
96
6.7k
Typedesign – Prime Four
hannesfritz
42
2.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
4 Signs Your Business is Dying
shpigford
185
22k
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