Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
1400万ユーザーのWebサービスを 15年運用して考える、 Javaである理由
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
masaozi3
May 18, 2019
Technology
4.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
1400万ユーザーのWebサービスを 15年運用して考える、 Javaである理由
masaozi3
May 18, 2019
More Decks by masaozi3
See All by masaozi3
異動した瞬間にリモートワーク生活になった人の話
masao0127s
0
380
モチベーション革命て本を読んだ話
masao0127s
0
110
Kotlinでアプリ書いてみた
masao0127s
4
1.6k
Other Decks in Technology
See All in Technology
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
290
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
210
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
130
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
260
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
280
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
170
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
1.3k
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
320
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
250
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
420
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Thoughts on Productivity
jonyablonski
76
5.4k
Faster Mobile Websites
deanohume
310
32k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Rails Girls Zürich Keynote
gr2m
96
14k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Transcript
ϑϦϡʔגࣜձࣾླਅੜ !NBTBP[Jʣ ສϢʔβʔͷ8FCαʔϏεΛ ӡ༻ͯ͠ߟ͑Δɺ +BWBͰ͋Δཧ༝
w ϑϦϡʔגࣜձࣾ!ژ w ࣾձਓྺ+BWBྺ w +BWBͱ4QSJOHͰz(*3-4Λ)"11:ʹz͢ΔࣄΛ͍ͯ͠·͢ w େֶ࣌1ZUIPOͰ8FCΞϓϦΛ։ൃ ͖ͳͷ ษڧձͷελοϑɺϊϕϧςΟͷൃɺ͓͍͍͓͠ञ
ϔΞΧϥʔϒϦʔνɺͷૹঢ়گΛோΊΔ ླਅੜ !NBTBP[J !2 ʘ·͓͞Ͱ͢ʗ w w w
w ࠓͷΰʔϧ w ͷ͖͔͚ͬ w ฐࣾͷαʔϏεͱٕज़બͷ w ʑͷӡ༻͔ΒΈΔ+BWBͰ͋Δཧ༝ w ʲ͓·͚ʳ+%,ͷҠߦͷ
w ݁ w ͓͠Βͤ ࠓ͢͜ͱ !3 ੩͔ʙʹฉ͘ΑΓ ΘʔΘʔݴ͍ͳ͕Β ฉ͍ͯΒ͑Εخ͍͠Ͱ͢ʂ
w ࠓͷΰʔϧ w ͷ͖͔͚ͬ w ฐࣾͷαʔϏεͱٕज़બͷ w ʑͷӡ༻͔ΒΈΔ+BWBͰ͋Δཧ༝ w ʲ͓·͚ʳ+%,ͷҠߦͷ
w ݁ w ͓͠Βͤ ࠓ͢͜ͱ !4 ʮӡ༻ͯ͠ʯͱ͍͍ͭͭ ϲ݄͔͠ݟͯͳ͍ͷͰ ௐͨใ͋Γ·͢
ࠓͷΰʔϧ
!6 ʮ+BWB͕దͨ͠αʔϏεͱԿ͔ʯ ͷҰͭͷղΛݟ͚ͭΔ͜ͱ
ͷ͖͔͚ͬ
w 4DBMB͕େ͖ͳઌഐ͕+BWBΛॻ͍͍ͯͯʑۤͦ͠͏Ͱ͋Δ w पғͷ༑ਓ͕ʮ+BWBઈରॻ͖ͨ͘ͳ͍ʯͳͲݴ͍ͬͯͯɺ ͳΜ͔ͩ൵͍͠ w ͱ͍͑ࣗ+BWB͕͖͘͢͝ͱ͍͏Θ͚Ͱͳ͍ w ྡͷνʔϜαʔόʔαΠυ,PUMJOΛݕ౼͍ͯ͠ΔΑ͏ͩʁ w
ผͷݴޠΛݕ౼ͨ͜͠ͱ͋ΔΒ͍͠ɹɹɹɹɹͳͲͳͲ ͷ͖͔͚ͬ !8
w 4DBMB͕େ͖ͳઌഐ͕ʑۤͦ͠͏Ͱ͋Δ w पғͷ༑ਓ͕ʮ+BWBઈରॻ͖ͨ͘ͳ͍ʯͳͲݴ͍ͬͯͯɺͳΜ͔ͩ൵ ͍͠ w ͱ͍͑ࣗ+BWB͕͖͘͢͝ͱ͍͏Θ͚Ͱͳ͍ w ྡͷνʔϜαʔόαΠυ,PUMJOΛݕ౼͍ͯ͠ΔΑ͏ͩʁ w
ผͷݴޠΛݕ౼ͨ͜͠ͱ͋ΔΒ͍͠ ͷ͖͔͚ͬ !9 ͳΜͰ+BWBΛ͍ͬͯΔΜͩΖ͏ʁ +BWB͕ద͍ͯ͠ΔͷͬͯͳΜͩΖ͏ʁ ଐ͞ΕͨϓϩμΫτ͕+BWB͔ͩͬͨΒ Ҏ֎ͷཧ༝ͳ͍ͷͩΖ͏͔ʁ
w 4DBMB͕େ͖ͳઌഐ͕ʑۤͦ͠͏Ͱ͋Δ w पғͷ༑ਓ͕ʮ+BWBઈରॻ͖ͨ͘ͳ͍ʯͳͲݴ͍ͬͯͯɺͳΜ͔ͩ൵ ͍͠ w ͱ͍͑ࣗ+BWB͕͖͘͢͝ͱ͍͏Θ͚Ͱͳ͍ w ྡͷνʔϜαʔόαΠυ,PUMJOΛݕ౼͍ͯ͠ΔΑ͏ͩʁ w
ผͷݴޠΛݕ౼ͨ͜͠ͱ͋ΔΒ͍͠ ͷ͖͔͚ͬ !10 ⾠ܾͯ͠ϚαΧϦΛ͛ʹདྷͨͷͰͳ͍Ͱ͢ ʮ͏͔Βʹɺྑ͞ΛΓ͍ͨʯ Έͳ͞Μͷ+BWBΛબΜͩཧ༝ +BWBͷ͖ͳͱ͜ΖͳͲͥͻฉ͖͍ͨͰ͢
ฐࣾͷαʔϏεͱ ٕज़બͷ
w ϓϦըऔಘαʔϏε ϓϦϯτγʔϧػͰࡱӨͨ͠ը૾Λ εϚϗΨϥέʔʹμϯϩʔυ͢Δ w ϓϦըΛͬͨ4/4 w ԽহͷϓϨθϯτ w ϓϦᝑମͷޱίϛ
ฐࣾͷαʔϏεϐΫτϦϯΫ !12
w தֶੜʙେֶੜͷ(*3-4͕λʔήοτ ˞(*3-4ʜࣗΛ(*3-4ͱೝ͍ࣝͯ͠Δͯ͢ͷਓ w ձһສਓҎ্ w ଔۀࣜɺϋϩΟϯɺΫϦεϚεͳͲʹ ΞΫηε͕૿͑Δ ฐࣾͷαʔϏεϐΫτϦϯΫ
!13
w Ψϥέʔ͚αΠτΛϦϦʔε αʔόʔͷ࣮+BWB w εϚϗ͚αΠτωΠςΟϒΞϓϦΛϦϦʔε αΠτΞϓϦͷαʔόʔͱʹ+BWB "OESPJEΞϓϦ+BWB w ݱࡏʜ ਓͰӡ༻։ൃத
ฐࣾͷαʔϏεϐΫτϦϯΫ !14
w Ψϥέʔ͚αΠτΛϦϦʔε αʔόʔͷ࣮+BWB w εϚϗ͚αΠτωΠςΟϒΞϓϦΛϦϦʔε αΠτΞϓϦͷαʔόʔͱʹ+BWB "OESPJEΞϓϦ+BWB w ݱࡏʜ ਓͰӡ༻։ൃத
ฐࣾͷαʔϏεϐΫτϦϯΫ !15 ࠓมΘΒͣ+BWB+BWB͍ͯ͠Δʂ
ٕज़બͷ+BWB !16 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ ݟ͕ઌબࢶͷগͳ͞
w ʙࠒ+BWB͕ग़࢝Ίͨ࣌ ιϑτΣΞ։ൃݚڀͷΑ͏ͳͱ͜Ζ +BWBͰԿ͔ࣄۀ͕Ͱ͖ͳ͍͔ͱࡧ ٕज़બͷ !17 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ +BWBͰ Կ͔ʜ
ٕज़બͷ !18 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ w ʙࠒ+BWB͕ग़࢝Ίͨ࣌ +BWBͰԿ͔ࣄۀ͕Ͱ͖ͳ͍͔ͱࡧ w ௨৴ܥϛυϧΣΞ͕
ٕज़બͷ !19 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ Τϯλϝ ͍ͨ͠ͳ w ΤϯλʔςΠϯϝϯτܥͷ͜ͱ͍ͨ͠ʂ ϓϦػͱΨϥέʔͷ௨৴ͱ͔Ͳ͏ͩΖ͏͔
ٕज़બͷ !20 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ w ΤϯλʔςΠϯϝϯτܥͷ͜ͱ͍ͨ͠ʂ w ଞͷݴޠݕ౼ͯ͠Έͨˠબࢶ͕গͳ͍ w "QBDIF5PNDBUͰͭ͘ΔΑ͏ͳͷ 1FSM
"QBDIF "QBDIF 5PNDBU +BWB
ٕज़બͷ !21 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ w ΤϯλʔςΠϯϝϯτܥͷ͜ͱ͍ͨ͠ʂ w ଞͷݴޠݕ౼ͯ͠Έͨˠબࢶ͕গͳ͍ w "QBDIF5PNDBUͰͭ͘ΔΑ͏ͳͷ w
ࣾʹ+BWBͷݟ͕ཷ·͍ͬͯΔͳʜ 1FSM "QBDIF "QBDIF 5PNDBU +BWB
ٕज़બͷ !22 Ψϥέʔ͚αʔϏε͕+BWBͰ͋ͬͨཧ༝ w ΤϯλʔςΠϯϝϯτܥͷ͜ͱ͍ͨ͠ʂ w ଞͷݴޠݕ౼ͯ͠Έͨˠબࢶ͕গͳ͍ w "QBDIF5PNDBUͰͭ͘ΔΑ͏ͳͷ w
ࣾʹ+BWBͷݟ͕ཷ·͍ͬͯΔͳʜ +BWB ݟ͕ઌબࢶͷগͳ͞Ͱ+BWBʹ
ٕज़બͷ !23 ҆ఆͱલαʔϏεɺ+7. εϚϗ͚αʔϏε͕+BWBʹͳͬͨཧ༝
w ʙͷϦϦʔεʹ͚ٕͯज़ݕ౼Λ͢Δ +BWBʹݶΒͣଞͷݴޠϑϨʔϜϫʔΫݕ౼ w ֶशίετ͕Ͳͷ͘Β͍ͳͷ͔ w ϑϨʔϜϫʔΫͷ҆ఆ߹͍ɹɹͳͲͳͲ ٕज़બͷ !24 εϚϗ͚αʔϏε͕+BWBʹͳͬͨཧ༝
4 1MBZ +BWB ʜ 1)1 4DBMB
w ʙͷϦϦʔεʹ͚ٕͯज़ݕ౼Λ͢Δ +BWBʹݶΒͣଞͷݴޠϑϨʔϜϫʔΫݕ౼ w ࣾࢿ࢈׆༻͍ͨ͠ͷͰ+7.ݴޠ͕ྑ͍ Ψϥέʔ͚αʔϏεͰ։ൃͨ͠ϥΠϒϥϦͳͲ ٕज़બͷ !25 εϚϗ͚αʔϏε͕+BWBʹͳͬͨཧ༝ 4
1MBZ +BWB ʜ 1)1 4DBMB
w ʙͷϦϦʔεʹ͚ٕͯज़ݕ౼Λ͢Δ +BWBʹݶΒͣଞͷݴޠϑϨʔϜϫʔΫݕ౼ w ࣾࢿ࢈׆༻͍ͨ͠ͷͰ+7.ݴޠ͕ྑ͍ Ψϥέʔ͚αʔϏεͰ։ൃͨ͠ϥΠϒϥϦͳͲ w 1MBZͱ4DBMBͷΈ߹Θ͕ͤ҆ఆ͍ͯ͠ͳ͍࣌ظ ٕज़બͷ !26
εϚϗ͚αʔϏε͕+BWBʹͳͬͨཧ༝ 4 1MBZ +BWB ʜ 1)1 4DBMB
w ʙͷϦϦʔεʹ͚ٕͯज़ݕ౼Λ͢Δ +BWBʹݶΒͣଞͷݴޠϑϨʔϜϫʔΫݕ౼ w ࣾࢿ࢈׆༻͍ͨ͠ͷͰ+7.ݴޠ͕ྑ͍ Ψϥέʔ͚αʔϏεͰ։ൃͨ͠ϥΠϒϥϦͳͲ w 1MBZͱ4DBMBͷΈ߹Θ͕ͤ҆ఆ͍ͯ͠ͳ͍࣌ظ ٕज़બͷ !27
εϚϗ͚αʔϏε͕+BWBʹͳͬͨཧ༝ 4 1MBZ +BWB ʜ 1)1 4DBMB ҆ఆͱલαʔϏεɺ+7.Ͱ+BWBʹ
w Ψϥέʔ͚αΠτΛϦϦʔε ݟ͕ઌબࢶͷগͳ͔͞Β+BWBʹ w εϚϗ͚αΠτωΠςΟϒΞϓϦΛϦϦʔε ҆ఆͱલαʔϏεɺ+7.͔Β+BWBʹ ٕज़બͷ·ͱΊ !28 ݴޠ༷Ͱͳ͍෦͕ओͳཧ༝
ʑͷӡ༻͔ΒΈΔ +BWBͰ͋Δཧ༝
!30 ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ
!31 ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ
Ϣʔβʔͷগͳ͍ݴޠϑϨʔϜϫʔΫΛ͍ͬͯͨࠒ w ࣅͨ͜ͱΛ͍ͯ͠Δਓ͕ډͳ͍ w ຊهࣄ͋Μ·Γͳ͍ ࠔ͔ͬͯΒղܾ·Ͱ͕ԕ͔ͬͨ ݴޠͷϢʔβʔ͕ଟ͍ !32 ͍ͬͺ͍ͭΒ͍
Ͱ+BWBͳΒ w ࣅͨ͜ͱΛ͍ͯ͠Δਓ͕ࢁډΔ w ຊهࣄࢁ͋Δ ࠔͬͯௐΕॿ͔Δ͕ߴ͍ ٯʹใʹຒΕͯ͠·͏͜ͱ͋Δ ݴޠͷϢʔβʔ͕ଟ͍ !33 ͭΒ͘ͳ͍ʂ
ϝϯςφϯε͞Ε͍ͯΔͷ͕ଟ͘ɺ͍ଓ͚ΒΕΔ҆৺͕͋Δ w ϥΠϒϥϦɺϑϨʔϜϫʔΫͳͲ w ͏ਓ͕ډΔ͠ɺίϛοτ͢Δਓ͕͍Δ େنͳαʔϏεͱͯ҆͠৺ͯ͑͠Δ͜ͱ͕خ͍͠ ⾠ར༻͢Δ͚ͩͰͳ͘ίϛοτ͍͖ͯ͠·͠ΐ͏ͱ͍͏ ݴޠͷϢʔβʔ͕ଟ͍ !34
ࣾ֎ΘͣਓతϦιʔε͕५Ͱ͋Δ w ଞ෦ॺͱਓΛߦ͖དྷͰ͖Δ w શ͘ҟͳΔΛ࡞Δ෦ॺͱٕज़ަྲྀ͕Ͱ͖Δ ᝒମͷΈࠐΈιϑτΣΞͷνʔϜͳͲ w ࣾ֎ͰਓΛݟ͚͍ͭ͢ w ++6($$$ͱָ͔͍͋ͬͯ͠☺
ݴޠͷϢʔβʔ͕ଟ͍ !35
!36 ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ
+BWB੩తܕ͚ݴޠ ɹɹɹίϯύΠϧ࣌ʹܕνΣοΫΛͯ͘͠ΕΔ ྫ͑ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !37
ϥΠϒϥϦଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !38 public interface VegetableService { /** *
ݱࡏͷ०ͷࡊΛฦ͢ * @return */ Vegetable getInSeason(List<Vegetable> vegetables); }
ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !39 public class KithenController { @Resource VegetableService
vegetableService; @RequestMapping(path = "/recommend") public ModelAndView recommendMenu() { List<Vegetable> vegetables = refrigeratorService.findVegetables(); Vegetable vegetable = vegetableService.getInSeason(vegetables); //ฦ͖ͬͯͨࡊͰ͓͢͢ΊͷݙཱΛߟ͑Δ… return new ModelAndView("/reccomend.html"); } }
ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !40 public class KithenController { @Resource VegetableService
vegetableService; @RequestMapping(path = "/recommend") public ModelAndView recommendMenu() { List<Vegetable> vegetables = refrigeratorService.findVegetables(); Vegetable vegetable = vegetableService.getInSeason(vegetables); //ฦ͖ͬͯͨࡊͰ͓͢͢ΊͷݙཱΛߟ͑Δ… return new ModelAndView("/reccomend.html"); } } ०ͷࡊͬͯ Ұݸ͡Όͳ͍Αͳ
ϥΠϒϥϦଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !41 public interface VegetableService { /** *
ݱࡏͷ०ͷࡊΛฦ͢ * @return */ List<Vegetable> getInSeason(List<Vegetable> vegetables); }
ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !42 public class KithenController { @Resource VegetableService
vegetableService; @RequestMapping(path = "/recommend") public ModelAndView recommendMenu() { List<Vegetable> stockVegetables = refrigeratorService.findVegetables(); List<Vegetable> vegetables = vegetableService.getInSeason(stockVegetables); //ฦ͖ͬͯͨࡊͰ͓͢͢ΊͷݙཱΛߟ͑Δ… return new ModelAndView("/reccomend.html"); } }
ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !43 public class KithenController { @Resource VegetableService
vegetableService; @RequestMapping(path = "/recommend") public ModelAndView recommendMenu() { List<Vegetable> stockVegetables = refrigeratorService.findVegetables(); List<Vegetable> vegetables = vegetableService.getInSeason(stockVegetables); //ฦ͖ͬͯͨࡊͰ͓͢͢ΊͷݙཱΛߟ͑Δ… return new ModelAndView("/reccomend.html"); } } ίϯύΠϧ Τϥʔ
ಉ͘͡ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !44 public class ShoppingController { @Resource VegetableService vegetableService;
@RequestMapping(path = "/market") public ModelAndView market() { List<Vegetable> vegetables = specialPriceService.findVegetables(); Vegetable vegetable = vegetableService.getInSeason(vegetables); //ฦ͖ͬͯͨ०ͷࡊΛͲ͜… return new ModelAndView("/market.html"); } } Θʔ͍͢·ͤΜ ͦͬͪͬͯͨ
ʮ͍͍ͦΕͳ͍ʯʮͦΜͳ͠ΐͬͺ͍ϛεʜʯ ʮͦͦͦΜͳमਖ਼ͷํʜʯ ͱࢥ͍·͕͢ w ٸ͍Ͱमਖ਼͍ͯ͠Δͱ͖ w σʔλΞΫηεʙϓϨθϯςʔγϣϯ·ͰҰؾʹ͔͍͍ͯΔͱ͖ w ϥΠϒϥϦ·ͱΊͯॻ͍ͯΔͱ͖ ͳͲɺҊ֎ͬͯ͠·͏ɻ
੩తܕ͚ͰίϯύΠϥ͕ڧྗ !45
ʜઌఔͷίʔυΛϦϦʔε͔ͯ͠Βϲ݄ޙʜ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !46
ϥΠϒϥϦଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !47 public interface VegetableService { /** *
ݱࡏͷ०ͷࡊΛฦ͢ * @return */ List<Vegetable> getInSeason(List<Vegetable> vegetables); }
ϥΠϒϥϦଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !48 public interface VegetableService { /** *
ݱࡏͷ०ͷࡊΛฦ͢ * @return */ List<Vegetable> getInSeason(List<Vegetable> vegetables) throws NoVegetablesException; } ۭͳΒ ྫ֎ʹͨ͘͠ ͳ͖ͬͯͨ
ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !49 List<Vegetable> vegetables = vegetableService.getInSeason(stockVegetables); try
{ List<Vegetable> vegetables = vegetableService.getInSeason(stockVegetables); } catch (NoVegetablesException e) { e.printStackTrace(); } ,JUDIFO$POUSPMMFSͱ 4IPQQJOH$POUSPMMFSͰ ͚ͬͯͨͬͳʙ
ར༻ଆͰ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !50 List<Vegetable> vegetables = vegetableService.getInSeason(stockVegetables); try
{ List<Vegetable> vegetables = vegetableService.getInSeason(stockVegetables); } catch (NoVegetablesException e) { e.printStackTrace(); } ίϯύΠϧ Τϥʔ
ػೳՃ͞Ε͍ͯͨʂ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !51 public class FlyerController { @Resource VegetableService vegetableService;
@RequestMapping(path = "/available") public ModelAndView availableFlyerView() { List<Vegetable> vegetables = specialPriceService.findVegetables(); Vegetable vegetable = vegetableService.getInSeason(vegetables); //ฦ͖ͬͯͨ०ͷࡊΛͲ͜… return new ModelAndView(“/available.html"); } } Θʔ͓ ͦͬͪͬͯͨ
ͪ͜ΒʮͦΜͳ͜ͱ͋Δʁʯͱࢥ͏͔͠Ε·ͤΜ͕ w େ͖ͳ࣮ ϲ݄Ҏ্͔͔ΔͳͲ Λ͍ͯ͠Δͱ͖ w ಉ͡ϓϩμΫτʹରͯͦ͠Μͳ࣮͕ฒߦͰΔঢ়گͷͱ͖ ͳͲΓͬͯ͠·͏໘͕͋Δɻ ੩తܕ͚ͰίϯύΠϥ͕ڧྗ !52
੩తܕ͚ͰίϯύΠϥ͕ڧྗ !53 ࡉ͔͍ϛεಈ͔͢લʹؾ͚ͮΔ΄͏͕ Ұͭͣͭண࣮ʹ࣮ΛਐΊΒΕΔͷͰ ॻ͖͡Ί͔Βྃ·Ͱ͕ૣ͍ ͱ͍͑*%&͕ݡ͘ར༻ՕॴΛ୳ͤͨΓ͢ΔͷͰ ίϯύΠϥΛ௨ͣ͞ͱؾ͚ͮΔͱ͍͏
!54 ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ
Ϣʔβʔ͕ສਓ͍Δͱʮكͳҟৗܥʯׂ͕ͱΑ͘ൃੜ͢Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ !55 //΄΅ى͜Γ͑ͳ͍͕… if(hoge.isEmpty()) { return new Collections.emptyList(); }
Ϣʔβʔ͕ສਓ͍Δͱʮكͳҟৗܥʯׂ͕ͱΑ͘ൃੜ͢Δ w ࣮࣌Ͱຊʹك͕ͩͬͨଞͷػೳՃͰى͖͘͢ͳͬͨ w ϦϦʔε͔ͯ͠Β݁ߏك͡Όͳ͍ͳͱൃ֮ɹͳͲͳͲ ྫ֎Λ໌֬ʹॲཧͰ͖Δ !56
Ϣʔβʔ͕ສਓ͍Δͱʮكͳҟৗܥʯׂ͕ͱΑ͘ൃੜ͢Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ !57 //΄΅ى͜Γ͑ͳ͍͕… if(hoge.isEmpty()) { return new Collections.emptyList(); }
ى͜ΔΜ͔ʜ
Ϣʔβʔ͕ສਓ͍Δͱʮكͳҟৗܥʯׂ͕ͱΑ͘ൃੜ͢Δ ͜͏͍͏ಛघέʔεʹରͯ͠ɺ ͕ࣗͨͪѻ͍͍͢ྫ֎Λఆٛͯ͠ॲཧΛଅͤΔͷར ྫ֎Λ໌֬ʹॲཧͰ͖Δ !58 //΄΅ى͜Γ͑ͳ͍͕… if(hoge.isEmpty()) { return
throw new HogeIsEmptyException(); } ྫ֎ʹͨͬͨ͠ ΄͏͕͍ͳ
!59 ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ
!60 ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ Ћ
ศརͳͷ͕ࢁ͋Γɺ։ൃεϐʔυ͕ૣ͍ w *%&͕ڧྗ ϦϑΝΫλϦϯάҰͭͰݡ͍ػೳ͕උΘ͍ͬͯΔͷ͕͋Δ ิ͕ڧྗɺ$POWFSU5P,PUMJOͱ͔·Ͱ͋Δ ॻ͘εϐʔυ͕ૣ͘ͳΔ w ඪ४ϥΠϒϥϦ͕ॆ࣮͍ͯ͠Δ ϥΠϒϥϦΛ୳͕࣌ؒ͢ݮΔͷͰ࣮ʹूதͰ͖Δ ʲ
Ћʳ ։ൃڥ͕ڧྗͳ !61
ศརͳͷ͕ࢁ͋Γɺ։ൃεϐʔυ͕ૣ͍ ॳ৺ऀͰʮ·ͣಈ͘ͷʯ͕ग़དྷ্͕Δ·Ͱ͕ૣ͍ w ࠔͬͨˠͰָ͖͍͕ͨ͠ૣ͍ w ࣗ৴ͱ͔Ϟνϕʔγϣϯʹ݁͢Δ ʲ Ћʳ ։ൃڥ͕ڧྗͳ !62
ʲ͓·͚ʳ +%,ͷҠߦͷ
w ϐΫτϦϯΫͰ0SBDMF+%,Λ͍ͬͯͨ +%,ͷҠߦ !64 0SBDMF +%,ʙ̇
w ϐΫτϦϯΫͰ0SBDMF+%,Λ͍ͬͯͨ w 0SBDMFͷαϙʔτϙϦγʔ͕มΘͬͨ ࣮ӡ༻Ͱ͑Δ+%,݄·Ͱ Ҿ͖ଓ͖͏ʹܖ͕ඞཁ ͦΕؒͰαϙʔτऴྃͷ༧ఆ +%,Ҏ߱ಉ͘͡ܖ͕ඞཁ w Կ͔͠ΒରԠΛ͠ͳͯ͘ͳΒͳ͍ঢ়گ
+%,ͷҠߦ !65 αϙʔτ ऴΘΔΑʂ
ߟ͑ΒΕΔબࢶ͍͔ͭ͘ w 0SBDMF+%,Ͱܖ͢Δ w 0SBDMF+%,Ͱܖ͢Δ w ֤ࣾஂମͷ+%,ʹҠߦ͢Δ w ͍ͬͦଞͷݴޠʹͯ͠͠·͏ +%,ͷҠߦ
!66
ߟ͑ΒΕΔબࢶ͍͔ͭ͘ w 0SBDMF+%,Ͱܖ͢Δ w 0SBDMF+%,Ͱܖ͢Δ w ֤ࣾஂମͷ+%,ʹҠߦ͢Δ w ͍ͬͦଞͷݴޠʹͯ͠͠·͏ +%,ͷҠߦ
!67 ͙͢ʹରԠ͢Δͷ͍͠ ͙͢ʹରԠ͢Δͷ͍͠ ͳ͔ͳ͔ͷֹۚʹͳΓͦ͏ʜ ͳ͔ͳ͔ͷֹۚʹͳΓͦ͏ʜ
w ͻͱ·ͣ"EPQU0QFO+%,ʹҠߦ͢Δ͜ͱʹ w खॱʹಛผͳ͜ͱͳ͍ w ΞϓϦέʔγϣϯ͔Β"EPQU0QFO+%,Λࢀর͢ΔΑ͏ʹ͢Δ w ςετڥͰϏϧυɺϢχοτςετ͕௨Δ͔νΣοΫ w ϲ݄΄Ͳςεταʔόʔʹஔ͍ͯΞϓϦέʔγϣϯΛ৮Γ͓ͨ͢
w όάΈ͋ͨΒͳ͚ΕϦϦʔε +%,ͷҠߦ !68 ࠓίί
ࠓޙ w վΊͯͲͷ+%,ʹ͢Δͷ͔ w +BWBͷόʔδϣϯͲ͏͢Δͷ͔ ͳͲΛݕ౼ͯͬͯ͠ରԠΛ͍ͯ͘͠༧ఆ +%,ͷҠߦ !69
ͱɺ͞Βͬͱ͕͓ΘΓ·͕ͨ͠ +%,ͷҠߦ !70
w ରԠ͢ΔதͰɺ+BWBࣗମʹର͢ΔࠔΓ͝ͱಛʹແ͔ͬͨ w ਓͰ·ͳͯ͘ɺੈքதͷਓͷҙݟ͕ಘΒΕΔ w 0SBDMFҎ֎ʹ+%,ͷఏڙऀ͕͍Δ w ݟ͔ͭͬͨ՝ࣾͷ͔Γ w ৽͍͠όʔδϣϯʹ͙͢ʹରԠͰ͖ͳ͍ঢ়گΞʔΩςΫνϟ
+%,ͷҠߦ !71
݁
ྺ࢙తܦҢ ࣾʹઌʹݟ͕͋ͬͨɺଞͷબࢶͷͳ͞ ݴޠͷϢʔβʔ͕ଟ͍ ੩తܕ͚ͰίϯύΠϥ͕ڧྗͰ͋Δ ྫ֎Λ໌֬ʹॲཧͰ͖Δ ϐΫτϦϯΫ͕+BWBͰ͋Δཧ༝
!73
!74 ʮ+BWB͕దͨ͠αʔϏεͱԿ͔ʯ
!75 w Ϣʔβʔ͕ଟ͘ɺن͕େ͖͍αʔϏε w ίϛοτ͢Δϝϯόʔ͕มԽ͍͢͠ɺ ͍ͭ୭͕Ͳ͜Λ৮Δ͔ಡΊͳ͍αʔϏε
!76 w Ϣʔβʔ͕ଟ͘ɺن͕େ͖͍αʔϏε w ίϛοτ͢Δϝϯόʔ͕มԽ͍͢͠ɺ ͍ͭ୭͕Ͳ͜Λ৮Δ͔ಡΊͳ͍αʔϏε Έͳ͞Μͷ͝ҙݟ ͥͻฉ͖͍ͨͰ͢ʂ
!77 ϐΫτϦϯΫ+BWBͰΑ͔ͬͨʁ
!78 :&4
w ୭͕Ͳ͜Λ͍ͭ৮Δ͔Θ͔Βͳ͍ঢ়ଶ গͳ͘ͱνʔϜίʔυΛ৮ΔڪΕ͕͋ΔϓϩμΫτ ͪΐͪ͜ΐ͜ଞ෦͔Βਓ͕དྷͨΓνʔϜฤ͕มΘͬͨΓ͢Δ ͳͷͰ w ੩తܕ͚Ͱ͋Δ͜ͱͰࣗͷΒͳ͍ͱ͜ΖͳΔ҆͘શʹ͍͢͠ w ଞ෦ॺ+BWBྺͷ͋Δਓ͕ଟ͍ͷͰߦ͖དྷ͍͢͠ ϐΫτϦϯΫ͕+BWBͰ͋Δཧ༝
!79
w Ϣʔβ͕ສਓ͍ΔͰ͔͍αʔϏεͰ͋Δ ίϯύΠϧஈ֊Ͱ͔ͬ͠ΓνΣοΫͨ͠ͷΛੈʹग़ͤΔͷ͍ͩ͡ ϥΠϒϥϦͳͲϝϯς͞ΕͯΔͷ͕͔ͭ͑Δͷخ͍͠ ҆શͳαʔϏεΛఏڙ͍͢͠ w ίʔυͷϘϦϡʔϜɺաڈͷࢿ࢈͔ͳΓͰ͔͍ աڈͷࢿ࢈ͱ͍͏ҙຯͰ+7.ݴޠͰ͋Ε׆༻Ͱ͖Δ ϐΫτϦϯΫ͕+BWBͰ͋Δཧ༝ !80
͓͠Βͤ
͓Βͤͦͷ̍ !82 Ұॹʹಇ͘ϝϯόʔΛืूதͰ͢ɻ ΤϯδχΞืूதʂ
͓Βͤͦͷ̍ !83 w ژӺɹెา w ΧϯϑΝϨϯεࣾඅͰʂ ަ௨අ॓ധඅࢀՃඅ͓څྉग़·͢ w ࣾͰͷษڧձ͍Ζ͍Ζ w
ৄͪ͘͜͠Β ΤϯδχΞืूதʂ
͓Βͤͦͷ !84 ژ%FW͔;͐ w ژӺલʙ w ςʔϚ৭ʑ w ίʔώʔɺ࠙ձ͖ w
ৄ͘͠DPOOQBTTͰʂ ษڧձͬͯΔͷͰདྷ͍ͯͩ͘͞ʂ
͓Βͤͦͷ !85 ొஃऀืूதͰ͢ʂ $G1ग़͔ͨͬͨ͠3FKFDUͩͬͨ ͕ࣗΈͨηογϣϯ·ͱΊ ͳͲͳͲͳΜͰ͟͝Εʂ
ສϢʔβʔͷ8FCαʔϏεΛ ӡ༻ͯ͠ߟ͑Δɺ+BWBͰ͋Δཧ༝ ϑϦϡʔגࣜձࣾླਅੜ !NBTBP[Jʣ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ