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
510
kanjava20170326
.NETでの開発が中心だったけど 本格的にJava始めてみた
syukai
March 26, 2017
Tweet
Share
More Decks by syukai
See All by syukai
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
130
ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
4
630
ノート付き-ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
0
45
TypeScriptとテストをはじめた
syukai
0
940
一歩ずつ進めるVue.js
syukai
2
380
Other Decks in Technology
See All in Technology
「できる!」を増やすGitHub Copilot活用法 / How to use GitHub Copilot to expand your possibilities
sansan_randd
1
230
生成AIと産業向けソフトウェアの自動生成 〜 ハノーバーメッセ2024より〜
kioto
2
420
Google Cloudを組織(企業)で運用する時のベストプラクティス × 健康の環境分離戦略 #まるクラ勉強会
yasumuusan
0
160
AWS Observability ベストプラクティス 大紹介
o11yfes2023
0
150
Dungeons and Dragons and Rails
joelq
0
220
中年男性がメインフレームから クラウドへキャリアシフトしてみた
uechishingo
1
460
Real World Type Puzzle and Code Generation
yukukotani
4
630
Cloudflare WorkersがPythonに対応したので試してみた
miura55
0
190
TiDBにおけるテーブル設計と最適化の事例
cygames
0
770
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
38k
Observabilityジャーニーを実現するためのAWSサービス:OSS編
o11yfes2023
0
110
The depthes of profiling Ruby - RubyKaigi 2024
osyoyu
0
120
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
20
1.8k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
A better future with KSS
kneath
231
16k
It's Worth the Effort
3n
180
27k
4 Signs Your Business is Dying
shpigford
176
21k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Web Components: a chance to create the future
zenorocha
306
41k
Automating Front-end Workflow
addyosmani
1357
200k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
21
2k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.7k
The Invisible Customer
myddelton
114
12k
Infographics Made Easy
chrislema
238
18k
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 ͖ͳϑϨʔϜϫʔΫʹʮࢀՃ͢Δʯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ