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で入門!実践!サーバーサイドKotlin/sskm1_sample
Search
FORTE
October 24, 2024
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
210
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
66
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
600
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
460
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
120
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
91
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
630
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
140
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
240
Featured
See All Featured
Docker and Python
trallard
47
4.3k
From π to Pie charts
rasagy
1
440
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Code Review Best Practice
trishagee
74
20k
Abbi's Birthday
coloredviolet
4
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
830
So, you think you're a good person
axbom
PRO
2
2.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
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