Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
Search
FORTE
October 24, 2024
0
90
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
技術書典 17の新刊「Micronautで入門!実践!サーバーサイドKotlin」のサンプルです
お求めは技術書典か、BOOTHまで!
FORTE
October 24, 2024
Tweet
Share
More Decks by FORTE
See All by FORTE
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
27
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
0
45
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
39
超入門!サーバーサイドKotlin/sski1
fortegp05
0
150
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
70
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
150
ITエンジニアとして生きる技術/tlie-sample
fortegp05
0
400
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
fortegp05
0
600
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
320
Featured
See All Featured
BBQ
matthewcrist
89
9.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
KATA
mclloyd
PRO
32
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
GitHub's CSS Performance
jonrohan
1032
470k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Language of Interfaces
destraynor
162
25k
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