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
91
アンチパターンから学ぶコミュニケーション/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
技術的負債の正体を知って向き合う
irof
0
190
なぜあの開発者はDevRelに伴走し続けるのか / Why Does That Developer Keep Running Alongside DevRel?
nrslib
3
410
Six and a half ridiculous things to do with Quarkus
hollycummins
0
180
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
1
320
Swift Concurrency - 状態監視の罠
objectiveaudio
2
550
XP, Testing and ninja testing ZOZ5
m_seki
3
740
CSC509 Lecture 04
javiergs
PRO
0
300
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
3
680
Devoxx BE 2025 Loom lab
josepaumard
0
100
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
290
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
200
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
130
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
How GitHub (no longer) Works
holman
315
140k
Thoughts on Productivity
jonyablonski
70
4.9k
Fireside Chat
paigeccino
40
3.7k
Music & Morning Musume
bryan
46
6.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Optimizing for Happiness
mojombo
379
70k
Speed Design
sergeychernyshev
32
1.2k
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