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
76
TypeScriptとテストをはじめた
syukai
0
1.1k
一歩ずつ進めるVue.js
syukai
2
400
Other Decks in Technology
See All in Technology
偏光画像処理ライブラリを作った話
elerac
1
170
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
180
Share my, our lessons from the road to re:Invent
naospon
0
150
JAWS FESTA 2024「バスロケ」GPS×サーバーレスの開発と運用の舞台裏/jawsfesta2024-bus-gps-serverless
ma2shita
3
230
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
200
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5k
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
380
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.2k
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
400
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
2
230
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
11
3.9k
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.8k
Featured
See All Featured
Visualization
eitanlees
146
15k
Git: the NoSQL Database
bkeepers
PRO
427
65k
For a Future-Friendly Web
brad_frost
176
9.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
990
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Bash Introduction
62gerente
611
210k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
Scaling GitHub
holman
459
140k
Side Projects
sachag
452
42k
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 ͖ͳϑϨʔϜϫʔΫʹʮࢀՃ͢Δʯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ