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で入門!実践!サーバーサイドKotlin/sskm1_sample
Search
FORTE
October 24, 2024
140
0
Share
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
技術書典 17の新刊「Micronautで入門!実践!サーバーサイドKotlin」のサンプルです
お求めは技術書典か、BOOTHまで!
FORTE
October 24, 2024
More Decks by FORTE
See All by FORTE
入門!実践!サーバーサイドKotlin〜2026春改訂版〜サンプル/sski2_sample
fortegp05
0
82
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
33
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
320
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
340
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
91
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
73
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
500
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
110
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
210
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
150
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
300
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
440
So, you think you're a good person
axbom
PRO
2
2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
How to build a perfect <img>
jonoalderson
1
5.5k
Optimizing for Happiness
mojombo
378
71k
A better future with KSS
kneath
240
18k
Done Done
chrislema
186
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Visualization
eitanlees
151
17k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
550
Transcript
None
Micronaut Ͱೖ!࣮ફ!αʔ όʔαΠυ Kotlin FORTE ɹஶ 2024-11-03 ൛ aozora Project
ൃߦ 1
͡Ίʹ ஶऀͷ FORTE(ϑΥϧς) Ͱ͢ɻαʔόʔαΠυ Kotlin ͷ৽ץΛॻ͘ͷ 3 ʙ4 ͿΓ͘Β͍ͷΑ͏Ͱ͢ɻϑϨʔϜϫʔΫͱͯͣͬ͠ͱ Spring
Boot Ͱ հ͖͓ͯͯ͠Γɺ࣍ Ktor ͔ɺSpring Boot Ͱผͷํ໘ʹ͍͔͘ͱΜͰ͍ Δ͏ͪʹ͍ͭͷ·ʹ͔ผͷϑϨʔϜϫʔΫ͕ొ͖͍ͯͯ͠·ͨ͠ɻͳ͔Ͱ MicronautɺQuarkus ͕ؾʹͳ͓ͬͯΓɺKotlin Fest 2024 Ͱ Micronaut ʹΑ ΔαʔόʔαΠυ Kotlin ͷΛฉ͍ͨͷͰधཁ͕͋Δͷ͔ͳͱࢥ͍ Micronaut ʹͨ࣍͠ୈͰ͢ɻ ͳ͓ɺ࠷ۙۀҕୗͰαʔόʔαΠυ Kotlin Λۀͱͯ͠ॻ͖࢝ΊͨͷͰ͢ ͕ɺͦͷݱͰ͍ΘΏΔϑϧελοΫͩͬͨΓߴػೳͳϑϨʔϜϫʔΫ༻ ͓ͯ͠ΒͣɺඞཁͳػೳʹԠͯ͡ϥΠϒϥϦΛՃ͢ΔܗΛͱ͍ͬͯ·͢ɻͦ͏ ݴͬͨҙຯͰϑϨʔϜϫʔΫͱ͍͏֓೦ʹͱΒΘΕΔͷͰແ͘ɺϥΠϒϥϦ୯ ҐͰհ͍ͯ͘͠ͷ໘നͦ͏Ͱ͢Ͷɻ ͦΕͦΕͱͯ͠ɺࠓճ Micronaut ΛͬͯαʔόʔαΠυ Kotlin ʹೖ ͍͖ͯ͠·͢ɻ ຊஶͷ༰ ͜ͷຊචऀ͕ Micronaut ͰαʔόʔαΠυ Kotlin Λࢼͯ͠ΈͨதͰٙʹ ࢥͬͨ͜ͱௐͨ͜ͱΛٕज़ॻͷܗͰΞτϓοτͨ͠ͷͰ͢ɻMicronaut ͱͳΜͧ?ͱ͍͏ͱ͜Ζ͔Βɺ ࣮ࡍʹίʔυΛॻ͖αʔόʔαΠυͱͯ͠ API ͕ಈ͘ஈ֊·ͰΛհ͍ͯ͠·͢ɻ ೖॻͳͷͰ Kotlin Λॻ͍ͨ͜ͱ͕ͳ͍ɺڥ͢Βͳ͍ͱ͍͏ํͰେৎͰ ͢ɻڥߏஙͱͯ͠ Micronaut ͪΖΜɺΤσΟλʔ JavaɺKotlin ͷΠϯ ετʔϧํ๏આ໌͍͖ͯ͠·͢ɻຊஶΛಡΊจࣈ௨ΓೖऴΘΓ·͢ɻͦ ͔͜ΒΦϦδφϧͰΞϓϦΛ࡞ͬͯΈΔͷΑ͠ɺଞͷϑϨʔϜϫʔΫʹೖ͠ ͯΈΔͷΑ͠ɺΕΔࣄແݶେͰ͢ɻ ͳ͓ɺೖ͚ͱ͍͏ࣄͰຊ֨తʹۀͰ Micronaut Λ༻͍ͯ͠Δਓʹͱͬ ͯΓͳ͍͔͠Ε·ͤΜɻͦ͏ݴͬͨํͥͻࣗ͝ͰΞτϓοτ͞Ε ͯΈ͍͔͕ͯͰ͠ΐ͏͔ɻೖ͗͢Δͱࢥ͏ͷͰ͋ΕಡΈ͔ͨͬͨͷʹॻ͔ Ε͍ͯͳ͍߲͕۩ମతʹΠϝʔδͰ͖͍ͯΔͣͰ͢ɻ೦ͳ͕Βචऀͦ͜ ·Ͱߦ͖ண͚͍ͯͳ͍ͷͰɺͥͻޙֶͷͨΊʹಡΜͰΈ͍ͨͰ͢ɻͥͻصͷ͜ ͪΒଆɺαʔΫϧࢀՃͯ͠Έ·ͤΜ͔? 2
ͲΜͳਓ͚͔ ຊஶ Micronaut Kotlin ʹڵຯ͕͋ΔɺKotlin Ͳ͜Ζ͔ϓϩάϥϜະܦݧ ͚ͩͲԿ͔ͬͯΈ͍ͨɺόοΫΤϯυʹೖͯ͠Έ͍ͨͳͲओʹೖॻͱͯ͠ ॳ৺ऀ͚ʹॻ͔Ε͍ͯ·͢ɻͪΖΜɺ͢Ͱʹ Spring
Boot Ktor ͳͲଞͷ ϑϨʔϜϫʔΫΛ৮ͬͨ͜ͱ͕͋ΓผͷϑϨʔϜϫʔΫΛ৮ͬͯΈ͍ͨͱ͍͏ํ ʹ͓קΊͰ͢ɻ ຊஶͰհͨ͠खॱͷ௨Γʹ͢Εɺίʔυίϐϖ͢Εಈ͘Α͏ʹͳͬ ͍ͯ·͢ͷͰɺͱΓ͋͑ͣಈ͔͍ͨ͠ͱ͍͏ํʹ҆৺Ͱ͢ɻ·ͨɺOS ͱͯ͠ WindowsɺMac ྆ରԠͰ͋ΓɺΤσΟλ Intellij IDEAɺVS Code ͷ྆ํ ʹରԠ͍ͯ͠·͢ɻ͓ख࣋ͪͷڥɺ͓͖ͳΤσΟλͰ͓ࢼ͍ͩ͘͠͞ɻ ͜ͷຊͰಘΒΕΔ͜ͱ ຊஶΛಡΈऴΘΔͱ࣍ͷΑ͏ͳঢ়ଶʹͳΓ·͢ɻ • Micronaut ͕ͳΜͳͷ͔͔Δ • Windows ·ͨ Mac Ͱ Micronaut ͷڥߏங͕Ͱ͖Δ • ࣮ࡍʹίʔυΛॻ͖ϩʔΧϧͰαʔόʔαΠυ Kotlin ʹΑΔ API αʔ όʔΛߏஙͰ͖Δ • API Λ࣮Ͱ͖Δ ͋ͳͨͷ Kotlin Ͱ Web ΞϓϦέʔγϣϯͷόοΫΤϯυΛ࡞Γ͍ͨɺ৽͍͠ ϑϨʔϜϫʔΫʹ৮ͬͯΈ͍ͨͱ͍͏ࢥ͍ʹԠ͑ΒΕͨͷͳΒɺ͜Μͳʹخ͍͠ ͜ͱ͋Γ·ͤΜɻ ͜ͷຊͰղઆ͠ͳ͍͜ͱ ຊஶͰ Micronaut ͷղઆΛ͍ͯ͠·͕͢ɺ͋͘·Ͱ͍ํͷΈͰ͋Γৄࡉͳ Έιʔείʔυͷதʹ͍ͭͯղઆ͍ͯ͠·ͤΜɻ ·ͨɺKotlin ͱ͍͏ϓϥάϥϛϯάݴޠͦͷͷʹ͍ͭͯৄࡉઆ໌͓ͯ͠ Γ·ͤΜɻಉ༷ʹ Web ΞϓϦέʔγϣϯʹ͍ͭͯৄࡉͳղઆ͍ͯ͠·ͤΜ ͷͰɺͦͷ͋ͨΓͷ Web γεςϜ։ൃͷجૅʹؔ͢ΔΈղઆ·ͨผͷ ػձͱͳΓ·͢ɻͦͷଞɺGradle ʹ͍ͭͯ༻͍ͯ͠·͕͢ղઆ͓ͯ͠Γ· ͤΜɻ ͜ͷຊͷ͍ํ ຊॻ͜ͷຊͷͱ͓ΓʹΕ Micronaut Λ༻ͨ͠αʔόʔαΠυ Kotlin Ͱ API ͕ಈ͘ͱ͍͏ͱ͜ΖΛࢦͯ͠ॻ͔Ε͍ͯ·͢ɻ͜ͷຊΛಡΊཧ۶ 3
Έ͕ͯ͢ཧղͰ͖ΔΑ͏ʹॻ͔Ε͍ͯ·ͤΜɻ͜ͷຊΛೖΓޱͱͯ͠͞ ΒʹͦͷԞʹ͋Δ͜ͱʹڵຯΛ͍͚࣋ͬͯͨͩͨΒ͍Ͱ͢ɻ جຊతʹ಄͔ΒಡΈਐΊ͍͚͍͍ͯͰ͕͢ɺ͍͖ͳΓίʔυΛݟ͍ͨͱ͍͏ ํ࠷ॳͷํඈ͍͍ͯͨͩͯ͠େৎͰ͢ɻ ಡΈऴΘͬͨײؒҧ͍ͷࢦఠɺՃཁͳͲ࣍ͷϋογϡλάΛ༻͍ͯ Twitter Ͱᄁ͍͍͚ͯͨͩΔͱخ͍͠Ͱ͢ɻͥͻɺײΛ͓͓ͪͯ͠Γ·͢ɻ #MicronautͰೖ!࣮ફ!αʔόʔαΠυKotlin ໔ࣄ߲ ຊॻʹهࡌ͢Δ༰චऀͷॴଐ͢Δ৫ͷެࣜݟղͰ͋Γ·ͤΜɻ
·ͨɺຊॻՄೳͳݶΓਖ਼֬Λظ͢Α͏ʹΊ͍ͯ·͕͢ɺචऀ͕ͦͷ༰Λ อূ͢ΔͷͰ͋Γ·ͤΜɻͦͷͨΊɺຊॻͷهࡌ༰ʹج͍ͮͨಡऀͷߦҝɺ ٴͼಡऀ͕ඃͬͨଛʹ͍ͭͯචऀͳΜΒΛෛ͏ͷͰ͋Γ·ͤΜɻ 4
࣍ ͡Ίʹ 2 ຊஶͷ༰ . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ͲΜͳਓ͚͔ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ͜ͷຊͰಘΒΕΔ͜ͱ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ͜ͷຊͰղઆ͠ͳ͍͜ͱ . . . . . . . . . . . . . . . . . . . . . . . . 3 ͜ͷຊͷ͍ํ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ໔ࣄ߲ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ୈ 1 ষ Micronaut ͱ? 7 1.1 Micronaut ͷར༻࣮ . . . . . . . . . . . . . . . . . . . . . . 8 1.2 ຊஶͰհ͍ͯ͠Δαϯϓϧίʔυʹ͍ͭͯ . . . . . . . . . . . 8 ୈ 2 ষ ڥߏங 9 2.1 Java ͷΠϯετʔϧ . . . . . . . . . . . . . . . . . . . . . . . 10 Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 ΤσΟλͷ४උ . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Kotlin ͷΠϯετʔϧ . . . . . . . . . . . . . . . . . . . . . . 13 Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Micronaut ͷΠϯετʔϧ . . . . . . . . . . . . . . . . . . . . 14 Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 ୈ 3 ষ Micronaut Ͱೖ!αʔόʔαΠυ Kotlin 16 3.1 ΞϓϦͷ࡞ . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8080 ϙʔτҙ֎ͱΘΕ͍ͯΔ . . . . . . . . . . . . . . . . 18 3.2 API ΤϯυϙΠϯτΛ࣮͢Δ . . . . . . . . . . . . . . . . . . 18 ୈ 4 ষ ࣮ફͦͷ 1 GET Ҏ֎ͷ HTTP ϝιουΛ࣮ͯ͠ΈΔ 20 5
4.1 GET . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 20 4.2 PUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 POST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.4 DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 ୈ 5 ষ ࣮ફͦͷ 2 ύϥϝʔλΛૹΔ 24 5.1 ΫΤϦύϥϝʔλͷૹ৴ͱ֬ೝ . . . . . . . . . . . . . . . . . . 24 ෳͷΫΤϦύϥϝʔλ . . . . . . . . . . . . . . . . . . . . . 25 5.2 ϦΫΤετϘσΟͷૹ৴ . . . . . . . . . . . . . . . . . . . . . 25 ୈ 6 ষ ࣮ફͦͷ 3 H2 Ͱσʔλϕʔεૢ࡞Λ࣮ͯ͠ΈΔ 27 6.1 H2 ͱ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.2 H2 ͷ͓ࢼ͠ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.3 ҙͷύϥϝʔλΛొ͢Δ . . . . . . . . . . . . . . . . . . . 30 6.4 ߋ৽ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.5 আ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ୈ 7 ষ ࣮ફͦͷ 4 ୯ମςετ 33 7.1 API ͷ୯ମςετ . . . . . . . . . . . . . . . . . . . . . . . . . 33 ϦΫΤετύϥϝʔλ͋Γͷςετ . . . . . . . . . . . . . . . . 36 ୈ 8 ষ ࣮ફͦͷ 5 Micronaut ͷґଘੑೖʹ͍ͭͯ 38 8.1 Ͳͷґଘੑೖํ๏͕ྑ͍ͷ͔? . . . . . . . . . . . . . . . . . 39 8.2 ίϯετϥΫλΠϯδΣΫγϣϯʹॻ͖͑Δ . . . . . . . . . . 39 ୈ 9 ষ ࣮ફͦͷ 6 ୯ମςετͷվળ 41 9.1 ςετ༻ࣄલσʔλͷ४උ . . . . . . . . . . . . . . . . . . . . 41 9.2 ୯ମςετͷՃ . . . . . . . . . . . . . . . . . . . . . . . . . 42 A ͜Ε͔Βͷ Micronaut ࣮ફʹ͍ͭͯ 44 ͋ͱ͕͖ 45 ిࢠ൛ʹ͍ͭͯ 46 ஶऀհ 47 จষ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Πϥετ୲ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6