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
0
13
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
技術書典 17の新刊「Micronautで入門!実践!サーバーサイドKotlin」のサンプルです
お求めは技術書典か、BOOTHまで!
FORTE
October 24, 2024
Tweet
Share
More Decks by FORTE
See All by FORTE
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
36
ITエンジニアとして生きる技術/tlie-sample
fortegp05
0
280
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
fortegp05
0
470
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
250
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
fortegp05
0
430
まいにち続ける技術【サンプル】 / tech_to_continue_on_daily
fortegp05
0
710
【無料サンプル】もっと実践!サーバーサイドKotlin / server_side_kotlin_2_sample
fortegp05
1
340
技術同人誌によって得られたもの / infra-workshop-20200301_What_was_obtained_in_the_book
fortegp05
0
110
【い03C】入門!実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_sample
fortegp05
0
1.7k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
How STYLIGHT went responsive
nonsquared
95
5.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
GitHub's CSS Performance
jonrohan
1030
460k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Side Projects
sachag
452
42k
GraphQLとの向き合い方2022年版
quramy
44
13k
Rails Girls Zürich Keynote
gr2m
94
13k
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