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
540
kanjava20170326
.NETでの開発が中心だったけど 本格的にJava始めてみた
syukai
March 26, 2017
Tweet
Share
More Decks by syukai
See All by syukai
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
250
ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
4
800
ノート付き-ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
0
59
TypeScriptとテストをはじめた
syukai
0
1k
一歩ずつ進めるVue.js
syukai
2
390
Other Decks in Technology
See All in Technology
リスクから学ぶKubernetesコンテナセキュリティ/k8s-risk-and-security
mochizuki875
1
320
エムスリー全チーム紹介資料 / Introduction of M3 All Teams
m3_engineering
1
310
Pythonを活用したLLMによる構造的データ生成の手法と実践
brainpadpr
3
330
ADRを運用して3年経った僕らの現在地
onk
PRO
11
5k
AWSの初級者向けAI・ML資格『AWS Certified AI Practitioner』の傾向と対策/So You Want To Pass AWS Certified AI Practitioner
quiver
0
230
PREEMPT_RT over the years
ennael
PRO
0
350
【shownet.conf_】ローカル5Gを活用したウォーキングツアーの体感向上
shownet
PRO
0
350
入門 バックアップ
ryuichi1208
18
6.6k
テストコードの品質を客観的な数値で担保しよう〜Mutation Testのすすめ〜
ysknsid25
11
3.1k
Assisted reorganization of data structures
ennael
PRO
0
250
【shownet.conf_】多様化するネットワーク環境を柔軟に統合するルーティングテクノロジー
shownet
PRO
0
380
【shownet.conf_】トポロジ図の歩き方
shownet
PRO
0
510
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9k
Unsuck your backbone
ammeep
668
57k
How GitHub (no longer) Works
holman
311
140k
Producing Creativity
orderedlist
PRO
341
39k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
A designer walks into a library…
pauljervisheath
202
24k
GitHub's CSS Performance
jonrohan
1030
450k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Web Components: a chance to create the future
zenorocha
310
42k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
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 ͖ͳϑϨʔϜϫʔΫʹʮࢀՃ͢Δʯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ