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
570
kanjava20170326
.NETでの開発が中心だったけど 本格的にJava始めてみた
syukai
March 26, 2017
Tweet
Share
More Decks by syukai
See All by syukai
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
290
ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
4
950
ノート付き-ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
0
74
TypeScriptとテストをはじめた
syukai
0
1.1k
一歩ずつ進めるVue.js
syukai
2
400
Other Decks in Technology
See All in Technology
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
490
AIエージェント元年
shukob
0
150
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
290
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
400
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
540
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
320
短縮URLをお手軽に導入しよう
nakasho
0
140
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
1.2k
デスクトップだけじゃないUbuntu
mtyshibata
0
790
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
560
php-conference-nagoya-2025
fuwasegu
0
150
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
190
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
51
7.4k
Code Review Best Practice
trishagee
67
18k
Adopting Sorbet at Scale
ufuk
74
9.2k
Documentation Writing (for coders)
carmenintech
67
4.6k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Speed Design
sergeychernyshev
27
810
Building an army of robots
kneath
303
45k
Building Your Own Lightsaber
phodgson
104
6.2k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
How to train your dragon (web standard)
notwaldorf
91
5.9k
The Invisible Side of Design
smashingmag
299
50k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
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 ͖ͳϑϨʔϜϫʔΫʹʮࢀՃ͢Δʯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ