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
kanjava20170326
Search
syukai
March 26, 2017
Technology
0
550
kanjava20170326
.NETでの開発が中心だったけど 本格的にJava始めてみた
syukai
March 26, 2017
Tweet
Share
More Decks by syukai
See All by syukai
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
260
ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
4
870
ノート付き-ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
0
61
TypeScriptとテストをはじめた
syukai
0
1k
一歩ずつ進めるVue.js
syukai
2
390
Other Decks in Technology
See All in Technology
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
630
The Rise of LLMOps
asei
9
1.8k
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
580
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
220
Engineer Career Talk
lycorp_recruit_jp
0
200
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
200
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.2k
Mastering Quickfix
daisuzu
1
310
A Tour of Anti-patterns for Functional Programming
guvalif
0
120
Featured
See All Featured
Music & Morning Musume
bryan
46
6.2k
How STYLIGHT went responsive
nonsquared
95
5.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Statistics for Hackers
jakevdp
796
220k
Six Lessons from altMBA
skipperchong
27
3.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Optimizing for Happiness
mojombo
376
70k
Designing for Performance
lara
604
68k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Transcript
/&5Ͱͷ։ൃ͕த৺͚ͩͬͨͲ ຊ֨తʹ+BWB࢝ΊͯΈͨ !TZVLBJ
ࠓͷ w 4QSJOH#PPUʹࢸΔ·Ͱͷ w 4QSJOHͱ4QSJOH#PPU w ͍࢝Ίͯࠔͬͨ͜ͱ
ࣗݾհ w !TZVLBJ࢛ق༇շ w ϓϩάϥϚࡀʢେֶͰϓϩάϥϜ࢝ΊͨͷͰʣ w େࡕͷதখن4*FSͰओʹ8FC։ൃʹؔΘΔࣄʹैࣄ ʢؔΘΔۀʹاըɺཁ݅ఆٛɺઃܭɺ։ൃʜʣ w ࠷ॳͷݴޠ$
w +BWBྺʁʁʁ w େࡕੜ·Εେࡕҭ͕ͪͩͨ·ʹؔห͕ෆࣗવ
+BWBҎલ w 7#ɺ7#/&5ɺ$ͰͷΫϥΠΞϯταʔόʔܕ ͷۀγεςϜ w ΫϥγοΫ"41ͷ7#TDSJQUཱͯ w "41/&5
ຊ֨త͡Όͳ͍+BWBظ w 4FBTBSɺTUSVUTϕʔε'8Ͱͷ։ൃ w վΧελϚΠζ ए͘͠ڥ࡞ͬͯΒͬͯͨɻ w جຊతͳจ๏8FCͷΈ͑͞Θ͔ͬͯΕ ੜ͖͍͚ͯͨ w
ݴޠػೳׂΓͱ$ͱࣅͯΔ ૯শܕɺ-JO2ɾTUSFBNɺಗ໊Ϋϥεɾϝιουɺ ܕਪɺϥϜμࣜɾɾɾ
ຊ֨త+BWBظ w TUSVUTͷ։ൃऴྃͳͲͰख࣋ͪͷ'8͕ແ͍ɻ w ·ͣ'8બͿͱ͜Ζ͔Β࢝ΊΔ͜ͱʹɻ
นͦͷ̍ '8બͿ͜ͱͳΜͯͳ͔ͬͨɻ
w 7JTVBM4UVEJP༷ʹԿΛ͍͔ͨ͠ਃࠂ͢ΕͦΕͰ Α͔ͬͨɻ 8JOEPXTΞϓϦ ⇛ɹ8JOEPXT'PSN 8FCΞϓϦ ⇛ɹ8FC'PSN
w ͍͍ͤͥாථɺάϦουɺ%#ؔ࿈ΛબͿ͘Β͍ w 81'ͱ͔.7$ͱ͔͋Δ͚Ͳɺతੑ֨ͬ ͖Γҧ͏ͷͰΉ͜ͱ΄΅ͳ͍
ηΩϡϦςΟϑ ϨʔϜϫʔΫ .7$ϑϨʔϜϫʔΫ %*ίϯςφϑϨʔϜϫʔΫ นͦͷ̎ w ͏ϑϨʔϜϫʔΫͬͯݴ༿͕Կͳͷ͔Θ͔Βͳ͍ 03.ϑϨʔϜϫʔΫ +%#$ϑϨʔϜϫʔΫ
/&5ͰʮϑϨʔϜϫʔΫʯͱ͍͑ ͍Θͣͱ͠Εͨ /&5'SBNFXPSL ⇛ڞ௨ϥΠϒϥϦɺ࣮ߦڥɺ࣮ํࣜͳͲ ɹશͯΛ࢘Δ
Ұਆڭͷੈք͔Βଟਆڭͷੈք
'8બͿʹ͋ͨͬͯؾʹͳΔ͜ͱ w ͍͢͞ w ཁ݅ΛຬͨͤΔ͔ w কདྷతͳ֦ுੑʁ w ʢຊޠͷʣใͲͷఔखʹೖΔ͔ʁ w
ֶशίετ w ̑ޙ͑Δ'8͔ʁ
ࠒͷओͳબࢶ w +BWB&& w 4QSJOH#PPU w 1MBZ'SBNFXPSL w ࢀߟ !*5ͭͷϑϨʔϜϫʔΫͰֶͿΤϯλʔϓϥΠζ+BWB։ൃೖ
IUUQXXXBUNBSLJUDPKQBJUBSUJDMFTOFXTIUNM
+BWB&& w ʮ+BWBͷΤϯλʔϓϥΠζ͚ඪ४༷ͰͦΕΛ࣮ ͨ͠ͷɻ8FC'8ʹݶΒͳ͍ൣғΛΧόʔ͠ ͓ͯΓɺ+BWB&&ΞϓϦΛ࣮ߦ͢ΔͨΊʹ (MBTT'JTI8JME'MZ͕ඞཁͰʯɾɾɾͬͯͪΐͬ ͱͬͯ5PNDBU͡Όͳ͍ͷʁ
ύε
w +BWBͳͷʹ&&ʁͳΜͱͳ͘ҧײ w +BWBͬͯ༥௨͕ฉ͔ͳ͍ʢݸਓͷײͰ͢ʣ ͦͷඪ४༷͚ͬͯͩͰ໘ͦ͘͞͏ʢݸਓͷײͰ͢ʣ w 8FCαʔόʔ͕༗ྉͷͷͰͳ͍ͱ͑ͳ͍ͱͳͬ ͨͱ͖ʹ༧ࢉ͕ͳ͔ͬͨɻ 5PNDBU͕͑Δͷ͕ίετ໘ɾࣝ໘Ͱ҆৺ɻ
4QSJOH w ݁ߏલ͔Β͋Δ'8͚ͩͲ࠷ۙ4QSJOH#PPUͬͯͷ ͕Ͱ͖͍͍ͯײ͡Β͍͠ɻ w +BWBͰ࠷ޭͯ͠Δ'8ͱ͍͑ΔɺΒ͍͠ɻ w ʮ࠷৽ٕज़ʹૉૣ͘ै͓ͯ͠Γɺ͞·͟·ͳγ εςϜͰ׆༻Ͱ͖·͢ʯʢ͖ͬ͞ͷ!*5ͷهࣄʣ
ྑͦ͞͏͚ͩͲ ͔͔ͤͬͩ͘Β ৽͍͠'8ͷ΄͏͕͍͍͔ʁ
1MBZ'SBNFXPSL w +BWB&&ͷඪ४ʹ४ڌ͍ͯ͠ͳ͍ɻ w 8FCʹಛԽͨ͠ಠࣗͷ"1*ͱ։ൃڥ w ൺֱతߏ͕γϯϓϧ w 3BJMTͳͲͷಛΛऔΓೖΕͯ։ൃޮͱੜ࢈ੑΛ ߴΊ͍ͯΔ
ͳΜ͔໘നͦ͏ͳͷͰͦΕͰ
ใऩू w ެࣜͷಈըΈͨΓ w ຊړͬͨΓʢδϡϯΫಊ͋Γ͕ͱ͏ʣ w ૉৼΓͨ͠Γ w άάͬͨΓ w
άάͬͨΓ w άάΓ·ͬͨ͘Γɾɾɾ
w ࠷ऴతʹ1MBZ'SBNFXPSLͷϢʔβʔձͰ૬ஊ ˠ݁Ռతʹ4QSJOHΛקΊΒΕΔ
Α͠ɺ4QSJOH#PPUɺ܅ʹܾΊͨʂ ࠷ॳ͔ΒͦΕ͕͍͍ͱࢥͬͯͨΑʂ
݁ہͲ͏ܾͬͯΊΔͷ͔ w ༗ࣝऀʹฉ͚ΔͳΒӽͨ͜͠ͱͳ͍ w ͕࣌ؒ५ʹ͋ΔͳΒ͋Δఔௐ࣮ͯࡍʹ৮Δ Ϡόͦ͏ͳͱ͜·Ͱ࣮Ͱ͖Ε٢
w Ͱ͖Δֶ͚ͩशίετ͕͘ͳΔΑ͏ʹ ʢࢲͷ߹ϛυϧΣΞආ͚ͨʣ w ௐΒΕΔݶΓௐΔ w ٕज़ॻ͕๛Ͱ࣮ࡍʹݟΕΔຊ͋Γ͕͍ͨʂ ʢങ͏ͱ͖ͦ͏͍͏ͱ͜Ͱങ͏ʂʣ w ຊΛݟΔ࣌લॻ͖ɺংஈɺ࣍
w ΞϐʔϧϙΠϯτͷใखʹೖΓ͍͢ w ࠔͬͨɺ͏·͍͔͘ͳ͍ใͳ͔ͳ͔ແ͍ ʮ͜͏͍͏έʔεΊͱ͍ͨํ͕͍͍Αʯ w ༗ࣝऀ͕͍ͳ͍ͳΒ͍Δͱ͜Ζʹߦ͚͍͍ʂ ɹษڧձʹࢀՃʂ ɹίϛϡχςΟʹࢀՃʂ ɹ4/4Ͱɾɾɾʁ
'8બͿʹ͋ͨͬͯؾʹͳΔ͜ͱ w ͍͢͞ w ཁ݅ΛຬͨͤΔ͔ w কདྷతͳ֦ுੑʁ w ʢຊޠͷʣใͲͷఔखʹೖΔ͔ʁ w
ֶशίετ w ̑ޙ͑Δ'8͔ʁ
ਖ਼Θ͔Βͳ͍ w Ͱɺ͕ࣗؔΘ͍ͬͯ͘͜ͱͰ͖Δɻ w ϓϧϦΫ্͛Δ w ใൃ৴ʢษڧձɺ2JJUBɺ5XJUUFSʣ ͬͯΔਓ͕ଟ͍ͱΘΕΔɺϝϯς͞ΕΔ w ษڧձʹࢀՃ͢Δ
Γ্͕Γʹߩݙ
͓·͚ w (PPHMFτϨϯυͰݕࡧͯ͠Έͨ
4QSJOHͱ 4QSJOH#PPU
4QSJOHͬͯԿʁ w ਖ਼͑ΒΕͳ͍ɾɾɾ
๛ͳ4QSJOH1SPKFDU
͍͟͏ͱͳΔͱ৭ʑେม
4QSJOH#PPU w 4QSJOH#PPUࣗମػೳΛఏڙ͠ͳ͍ w ͬ͘͟Γ͍͏ͱ4QSJOHΛ͍͘͢͢Δͷ w ॳظઃఆͷࣗಈԽʢӅṭʣ ʢ4QSJOH.7$ɺ5PNDBUɺ#FBOఆٛʣ w ґଘϥΠϒϥϦΛ·ͱΊͯ͘Ε͍ͯΔ
w ָνϯʂ
4QSJOH*OJUJBMJ[S w ͍͍ͨͷΛબQPNYNMΛ࡞ͬͯ͘ΕΔ ⇛ޙ.BWFO͕KBSϑΝΠϧΛऩूͯ͘͠ΕΔ w Γ͍ͨ͜ͱͰཧ͞ΕͯΔͷͰ୳͍͢͠ w .BWFOॳΊͯͰࣗવͱ͑Δ w ָνϯʂ
454 4QSJOH5PPM4VJUF w &DMJQTFϕʔεͷ*%& w ͍উख&DMJQTFͦͷͷ w 1MFJBEFTͰຊޠԽՄೳ w 4QSJOH*OJUJBMJ[S.BWFO͕Έࠐ·ΕͯΔ
w ָνϯʂ
Ұ௨ΓἧͬͯΔͷ͕͙͢༻ҙͰ͖Δ w શ͕ͯ࠷దͰͳ͍͔͠Εͳ͍͚Ͳɺ ंͷঢ়ଶΛ༻ҙͯ͠Β͑Δɻ ⇛ޙ͔ΒؾʹͳΔ෦͚ͩऔΓସ͑Ε͍͍ w θϩ͔Β࠷దͳ෦Λ̍ͭͣͭબΜͰ͍͘ ⇛Έ߹Θͤͯ͏·͘ಈ͔͘Θ͔Βͳ͍ ෦͕ΓͯΔ͔Θ͔Βͳ͍ w
͙͢ʹίʔυΛॻ͖࢝ΊΒΕΔ
4QSJOH.7$ w 4QSJOHͷ8FCϑϨʔϜϫʔΫ w $POUSPMMFS.PEFM10+0Ͱ࣮Ͱ͖Δ w 8FCը໘"1*ΠέΔ
.7$ͷ$POUSPMMFS @Controller @RequestMapping("thyme") public class SampleController { @RequestMapping("demo") public String
index(Model model){ model.addAttribute("livetext", "͞ΜΔ͜ʙͲ"); // classpath:/templates/ + <String> + .html return "tdemo"; } }
5IZNFMFBG w ςϯϓϨʔτΤϯδϯ 4QSJOH͡Όͳͯ͑͘Δ w φνϡϥϧςϯϓϨʔτͳͷͰͦͷ··)5.-ͱͯ͠ݟΕΔ w +41ͱͳΜͩͬͨͷ͔ w
֮͑Δ͜ͱ͕ͱͯগͳ͍ w UIUFYU͠ͱ͚αχλΠζ͞ΕΔ 944ରࡦ w +BWBͷϩδοΫ͕ೖΓࠐΉ༨͕ͳ͍
5IZNFMFBGͷIUNM <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <body> <label th:text="${livetext}">livetext</label> </body> </html>
.7$ͷ3FTU$POUSPMMFS @RestController @RequestMapping("rest") public class SampleRestConotroller { @RequestMapping("demo") public String
index(){ return "Rest Demo Complete!"; } }
4QSJOH4FDVSJUZ w ηΩϡϦςΟपΓͷॾʑ w ϩάΠϯॲཧɺνΣοΫͳΜ͔͓·͔ͤ w P"VUI͍͚ͩͬͯͪΌ͏ w $43'ରࡦͬͪΓ w
ͱͬͯଟػೳ
4QSJOH4FTTJPO w ηογϣϯใΛ֎෦ʹ࣋ͨͤΔ w ̎Ҏ্ͷ"1αʔόΛಉظͤ͞Δͷʹ͏ w 4QSJOH%BUB3FEJTͱ߹Θͤͯ͑"84Ͱͷ֎ ෦ΩϟογϡԽ &MBTUJ$BDIF ָউ
w ͡Ίͯͷ4QSJOH#PPUಡΊ ͱΓ͋͑ͣͳΜͱ͔ͳΔɻ
4QSJOHͰࠔͬͨ͜ͱ
ͦͦ4QSJOHΘ͔ͬͯͳ͍ w ίΞ%*ίϯςφ w %*ίϯςφ͕Կͯ͠Δͷ͔ɺ #FBOͬͯԿͳͷ͔͕ཧղͰ͖͔ͯΒ ͍ͩͿΘ͔ΔΑ͏ʹͳ͖ͬͯͨɻ w ଟా͞Μͷ ʮ4QSJOHGPS4QSJOH#PPUʯ
IUUQTTQFBLFSEFDLDPNNBTBUPTIJUBEB TQSJOHGPSTQSJOHCPPU
.BWFO͕Α͘Θ͔Βͳ͍ w QPNͷهड़ํ๏άάͬͯͳΜͱ͔͢Δ w KBSXBS454Ͱଂ.BWFO͑࡞ΕΔ͕ ʮΰʔϧʯͷҙຯ͕Θ͔ΒΜ͔ͬͨ ⇛ʮDMFBOQBDLBHFʯͱ͔ॻ͚0, w .BWFO$FOUSBMҎ֎ͷಠࣗϦϙδτϦΛ࡞ͬͯΞ Ϋηε͢Δ͜ͱՄೳ
ઃఆͷॻ͖ํͷҧ͍ w 4QSJOH#PPUͩͱ$POpHΫϥεʹίʔυॻ͘ w Γ͍ͨ͜ͱΛάάͬͨΒYNMͷهड़ํ๏͔͠ग़ͯ ͜ͳ͔ͬͨΓ ⇛ؤுͬͯ׳ΕΔɻ ɹࠓͩͱ#PPUͷهࣄ͔ͳΓଟ͍͚Ͳɻ
นͦͷ̏ ެࣜυΩϡϝϯτ
w ͳΜ͔ͩΜͩͰϚΠΫϩιϑτ ຊޠυΩϡϝϯτ͕༻ҙ͞ΕΔɻ w *%&͔ΒυΩϡϝϯτͷಋઢ͕ͬͪΓ ʢ'ԡ͙ͤ͢υΩϡϝϯτʣ w ׂΓͱຬͨ͞ΕͯΔͷͰίϛϡχςΟ׆ಈൺֱత׆ൃ Ͱͳ͍͔ʁ w
͔࣍Β࣍ʹ৽͍͠ͷ͕ग़ͯ͘Δͱ͍͏ΑΓఆظత ʹ·ͱΊͯ৽͞ΕΔʢͯͨʣ ͦͷλΠϛϯάͰใ͕υόͬͱग़Δ
นͦͷ̐ ຊޠʢͱ͍͏͔ϚϧνόΠτจࣈʣͷน
w /&5ͱͦͷपลʹൺͯʮຊޠͩͱ͏·͘ ͍͔ͳ͍ʢۤ࿑͢Δʣʯ͕ߴ͍ʢͱࢥ͏ʣ w ʢ4QSJOHʹݶΒͳ͍͕ʣ
γϯάϧαΠϯΦϯ 440 w -JOVY্ͷ8FCΞϓϦʹ8JOEPXTΫϥΠΞϯτ͔ ΒΞΫηε w ࣾͷ"DUJWF%JSFDUPSZೝূࡁΈͳΒϩάΠϯෆཁ
w ਖ਼Ұ൪ਏ͔ͬͨͷڥपΓʢಛʹ-JOVYʣ w 440༻63-Λ4QSJOH4FDVSJUZͷྫ֎ʹɻ w 440༻63-Ͱ3FNPUF6TFSΛݕূɻ 0,ͳΒ4QSJOH4FDVSJUZͷೝূΛखಈͰ࣮ߦɻ /(ͳΒϩάΠϯը໘ʹϦμΠϨΫτɻ ϝχϡʔɾۀը໘ ࣗಈೝূ༻63-
ϩάΠϯը໘
.VMUJ%BUBTPVSDF w ϢʔβʔʹΑͬͯܨ͙σʔλϕʔεΛม͑Δ w σʔλιʔε͍ͬͺ͍༻ҙͯ͠ w "CTUSBDU3PVUJOH%BUB4PVSDFͰཧͯ͠ w ηογϣϯมͱ͔ʹܨ͗ઌใ࣋ͨͤͯ w
*OUFSDFQUPSͱ͔'JMUFS "01 ͱ͔ͰΓସ͑Δ
w 2JJUBʹهࣄॻ͍ͨͷͰৄࡉͪ͜ΒͰɻ IUUQRJJUBDPNTZVLBJJUFNT ECGGGFGDEE w 4QSJOH$MPVE$POpHʹ͍ͨ͠ͳ͋ɻɻɻ
4QSJOHʹͯ͠Α͔ͬͨ͜ͱ
w .BWFO͑ΔΑ͏ʹͳͬͨʢڧ੍తʹʣ w 5IZNFMFBG͕͍͍ʂ w ػೳ͕ଟ͍͠ջਂ͍ͷͰ͍͍ͩͨͳΜͱ͔ͳΔ w ઃఆϑΝΠϧ͕গͳ͘ιʔε͔Βใ͕ಡΈऔΕΔ w ϝϯόʔͷڥͮ͘Γָ͕νϯʂ
ʮKBSϑΝΠϧͲ͜ʔʯʮKBSͷόʔδϣϯ͕ʔʯ ʮϏϧυύε͕ʔʯͱ͔ແ͍ʂ ⇛+%,ͱ454ͱ(JU͘Β͍ɻ w ઃఆϑΝΠϧյ͠߹͏͜ͱ͕ແ͍
·ͱΊ w /&5ͳਓҟจԽཧղ͔Βɻ w ݁ՌతʹબΜͰͱͯΑ͔ͬͨʂʢখฒײʣ w ʮͱΓ͋͑ͣ͡ΊΔʯͷ͍͍͚Ͳɺ4QSJOHͷ جૅͪΌΜͱ֮͑Α͏ɻ w ͖ͳϑϨʔϜϫʔΫʹʮࢀՃ͢Δʯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ