Slide 1

Slide 1 text

!HJTIJ@ZBNB +BWBϢʔβʹ఻͍͑ͨ (VBWB$BDIFೖ໳

Slide 2

Slide 2 text

Slide 3

Slide 3 text

IUUQTDPEFSEPKPTBQQPSPDPOOQBTTDPNFWFOU

Slide 4

Slide 4 text

&BSMZ IUUQXXXUPPDPNTVQQPSUBQQMFOFXTIUNM জᢣᦍᣀ

Slide 5

Slide 5 text

όεϩέʔγϣϯγεςϜͷ։ൃʹͯ ᣪఞⷭӒҵヹ➥ᕕ࿼ӒҵѬᥥ᡾㛯ᏌҶ৵ҮԯդԧӼ
 Ტ༪%#ҵӳ4FMFDUҿӅӵԛԡ԰ӬӍӉҮӔҮӲҰӔ᳈ҶӃӵ ȤѫԕՋԫԟՍӁӐөӵҵ

Slide 6

Slide 6 text

ǖ +BWBӘԕՋԫԟՍՑԌԾՑՒ
 (PPHMFӘ+BWB᳣⇹ՑԌԾՑՒ(VBWBӘकᮿ⥎㮣 ǖ ⼀ᇰԽԉԌՓՔԡ㮢ԛդԱञӑ⼀ᇰ㮣ӑಌਃ ǖ IUUQTHJUIVCDPNHPPHMFHVBWBXJLJ$BDIFT&YQMBJOFE ǖ NBWFO (VBWB$BDIF EFQFOEFODZ HSPVQ*EDPNHPPHMFHVBWBHSPVQ*E BSUJGBDU*EHVBWBBSUJGBDU*E WFSTJPOWFSTJPO EFQFOEFODZ

Slide 7

Slide 7 text

αϯϓϧɿΩʔΛ༩͑ΔͱࣗಈతʹΩϟογϡσʔλΛੜ੒ LoadingCache randomIntCache = CacheBuilder.newBuilder() .expireAfterWrite(5, TimeUnit.SECONDS) .build(new CacheLoader() { @Override public Integer load(String key) throws Exception { return getRandomInt(); }
 }); HFU ǒGPPǒ ӑѬMPBE ǒGPPǒ Әᇴ⷗✿᧠ӼǒGPPǒӒҮҰԕդӑԕՋԫԟՍӃӵѭ ⓬ᒁӉӍӉӳѬԕՋԫԟՍӁӉԌ՛ԡԧ՛ԡӼ⏺᪨Ӄӵ Integer v1 = randomIntCache.get(”foo”); ← (1) loadϝιουΛ࣮ߦ͠ɺ݁ՌΛΩϟογϡ Integer v2 = randomIntCache.get(”foo”); ← (2) (1)ͷ࣮ߦ݁Ռͱશ͘ಉ͡ΠϯελϯεΛฦ͢

Slide 8

Slide 8 text

LoadingCache randomIntCache = CacheBuilder.newBuilder() .expireAfterWrite(5, TimeUnit.SECONDS) .build(new CacheLoader() { @Override public Integer load(String key) throws Exception { return getRandomInt(); }
 }); ԕՋԫԟՍӘ⻎ᠶᦴঽӔӓ LFZ 7BMVF ԕՋԫԟՍӃӵ7BMVFྞԌ՛ԡԧ՛ԡӘ⇰ᘻᢅᴿѭ,FZӼਜӍӉ௡ⅈӑ⇰ᘻӬ൧⥎ѭ ,FZ 7BMVFәԗՑԡѭ
 $BDIF-PBEFSәѬ,FZҾӒӕԕՋԫԟՍӃӵ7BMVFԌ՛ԡԧ՛ԡӘ⇰ᘻᢅᴿӼఙᒐӃӵѭ ԕՋԫԟՍӘ⻎ᠶᦴঽӔӓә⹋ᡔ⼀ᇰӑҷӵѭ㮢ఙ㖟ᣪ㔿ѬԕդӘᡔӔӓ㮣 $BDIF-PEFSӼ ਜҰӒҷә -PBEJOH$BDIF αϯϓϧɿΩʔΛ༩͑ΔͱࣗಈతʹΩϟογϡσʔλΛੜ੒ LFZ 7BMVF LFZ 7BMVF

Slide 9

Slide 9 text

αϯϓϧɿΩʔΛ༩͑ΔͱࣗಈతʹΩϟογϡσʔλΛੜ੒ LoadingCache randomIntCache = CacheBuilder.newBuilder() .expireAfterWrite(5, TimeUnit.SECONDS) .build(CacheLoader.from(() -> getRandomInt())); +BWBӘMBNCEBᐛ㮢'VODUJPO 4VQQMJFS㮣ӼਜӍӐ$BDIF-PBEFSӼਃӶӵѭѫ 'VODUJPO LFZ LFZӼਜҰ௡ⅈ 4VQQMJFS LFZӼਜӹӔҮ௡ⅈ -BNCEBᐛӼਜҰ࿾൶Ѭ&YDFQUJPOҶԡՕդҿӶӔҮӘӑѬHFU6ODIFDLFE ,FZ ӼਜҰѭ
 㮢⼳✦әᒁ㈨ѭӉӊӁHFUӘӨӨӑӬහӝ௲Ӂ୤ӕਦႌ௡ⅈҶᒨ⺙ӔҽӒলႌәใ㛸әᾩҮ㮣 Integer v1 = randomIntCache.getUnchecked(”foo”); ← ExceptionͷνΣοΫΛ͠ͳ͍৔߹ Integer v2 = randomIntCache.getUnchecked(”foo”);

Slide 10

Slide 10 text

ΩϟογϡͰ͖Δσʔλͷߏ଄ɿ&OUSZ ,FZԌ՛ԡԧ՛ԡ 7BMVFԌ՛ԡԧ՛ԡ Ǒ"ǒ ǑҴәӲҰǒ Ǒ#ǒ ǑҽӽӕӋәǒ Ǒ$ǒ ǑҿӲҰӔӳǒ ,FZԌ՛ԡԧ՛ԡ 7BMVFԒԾԠԏԗ԰ ǑBǒ ǑCǒ ǑDǒ ǑFǒ ǑGǒ ǑHǒ ǑIǒ ǑJǒ ǑKǒ ,FZԌ՛ԡԧ՛ԡ㮴7BMVFԌ՛ԡԧ՛ԡӘՂԊӼԐ՛԰ՒӒӁӐᩈ✊ӑҷӵѭ
 㮢.BQӒൺӂ㮣 ȔԐ՛԰Ւ

Slide 11

Slide 11 text

ΤϯτϦͷഁغ৚݅ɿ&WJDUJPO ǖ FYQJSF"GUFS8SJUF MPOHEVSBUJPO 5JNF6OJUVOJU 
 Ԑ՛԰ՒӼਃᘻӁӐҵӳ⏺᪨ҿӶӵӨӑӘ᥶౵ᦆ㖟ѭ ǖ FYQJSF"GUFS"DDFTT MPOHEVSBUJPO 5JNF6OJUVOJU 
 Ԑ՛԰ՒӕᥰᒁӘԊԗԣԡҶҬӍӐҵӳ⏺᪨ҿӶӵӨӑӘ᥶౵ᦆ㖟ѭ ǖ NBYJNVN4J[F MPOHTJ[F 
 Ԑ՛԰ՒӼ੢ᛝӃӵᡔѭᛡᇰᡔলञӘԐ՛԰ՒᡔӕӔӵӒѬ'*'0ӑ⏺᪨ѭ ǖ NBYJNVN8FJHIU㮢MPOHTJ[F 
 Ԑ՛԰ՒӼ੢ᛝӃӵᡔѭৼҵҶᛡᇰলञӘᡔӕӔӵӒѬ'*'0ӑ⏺᪨ѭ
 ѷৼҵѸӘ☑௲ՓդՓә8FJHIFSԒԾԠԏԗ԰ӑḉӃѭ
 㮢ਦҲӚѬԕՋԫԟՍӃӵ7BMVFӘ➜൶ᡡᆻᡔѬ-JTUᡔӔӓ㮣

Slide 12

Slide 12 text

ΤϯτϦͷഁغ৚݅ɿ3FGSFTI ǖ SFGSFTI"GUFS8SJUF MPOHEVSBUJPO 5JNF6OJUVOJU 
 Ԑ՛԰ՒӼਃᘻӁӐҵӳ᡾Ӊӕ7BMVFӼᥥ᡾Ӂ⍃ӃӨӑӘ᥶౵ᦆ㖟ѭ
 
 FYQJSF9999ӒӘ㉹Ү㮴
 FYQJSFәѬᦴঽӼṅӉӃӒԐ՛԰ՒӼ⏺᪨Ӄӵ
 ⏺᪨ӘҬӒѬൺӂԕդӑHFUҿӶӵӒѬ7BMVFҶṍ૨ҿӶӵӨӑ⽠ө㈆өᑻӋӕӔӵ
 
 SFGSFTIәѬԕդӕሽӁӐ᡾ӁҮ7BMVFӼṍ૨ӃӵӨӑѬ൜Ү7BMVFӼ㈘Ӂ❰һӵ
 㮢⽠ө㈆өᑻӋӕӁӔҮ㮣

Slide 13

Slide 13 text

ͦͷ΄͔ͷઃఆɿΨϕʔδίϨΫγϣϯͱͷ݉Ͷ߹͍ ǖ TPGU7BMVFT 
 WBMVFӼ4PGU3FGFSFODFӕӃӵ ǖ XFBL,FZT 
 ,FZӼ8FBL3FGFSFODFӕӃӵ ǖ XFBL7BMVFT 
 WBMVFӼ8FBL3FGFSFODFӕӃӵ ԕդӬӁҹә7BMVFӼᐹീ῍㮢($ҿӶӮӃҹ㮣ӕӃӵѭ 8FBLӒ4PGUӘ㉹ҮәতӘねᡭӔӓӕ⽟ᣀӼ⿤ӴӉҮҶѬ
 Ԍ՛ԡԧ՛ԡҶീ῍ҿӶӔҹӔӍӉ㗖Ә($ҿӶӮӃҿӒ⢰ҲӶӚӲҮ 㮢8FBLӘᢅҶ($ҿӶӮӃҹѬ4PGUӘᢅҶԕՋԫԟՍൿҷ㮣

Slide 14

Slide 14 text

αϯϓϧɿࣗ෼ͰΤϯτϦΛొ࿥͢Δ Cache origCache = CacheBuilder.newBuilder() .expireAfterWrite(5, TimeUnit.SECONDS) .build(); ⧞ಌ⋵ӕ7BMVFӼՕդԱӁӔҮ$BDIFԌ՛ԧդԽԏդԡྞӘԕՋԫԟՍӼਃӴѬ QVU LFZ 7BMVF㮣ӑѬ⧞௻ӑԐ՛԰ՒӼ⋭㑤ӃӵҽӒӬӑҷӵ &YQJSFӔӓӘ⼀ᇰӬ-PBEJOH$BDIFൺ᭦ѭ origCache.put(”foo”, 1); origCache.put(”bar”, 2); Integer v1 = origCache.getIfPresent(”foo”); $BDIF-PEFSӼਜӹӔҮӒҷә$BDIF

Slide 15

Slide 15 text

ΤϯτϦͷഁغɿJOWBMJEBUF $BDIF-PBEJOH$BDIFӘႁᡔӕᇴ⷗ӑҷӵ ǖ JOWBMJEBUF LFZ 
 ᛡᇰҿӶӉԕդӘԐ՛԰ՒӼ⏺᪨Ӄӵ ǖ JOWBMJEBUF"-- LFZT 
 ᛡᇰҿӶӉ஁ӐӘԕդӘԐ՛԰ՒӼ⏺᪨Ӄӵ ǖ JOWBMJEBUF"-- 
 ஁ӐӘԐ՛԰ՒӼ⏺᪨Ӄӵ

Slide 16

Slide 16 text

HFUͷछྨͱ࢖͍෼͚ ǖ HFU ,LFZ 
 -PBEJOH$BDIFӑѬLFZӕሽӃӵ7BMVFӼ൐ᒉӃӵѭ
 7BMVFӘՕդԱसӕԐՑդҶ⋬⇰ӃӵӒѬ&YFDVUJPO&YDFQUJPOӼUISPXӃӵѭ ǖ HFU6ODIFDLFE ,LFZ 
 -PBEJOH$BDIFӑѬLFZӕሽӃӵ7BMVFӼ൐ᒉӃӵѭ
 HFUӒൺӂӊҶѬ$BDIF-PBEFS஗ӑԩԏԫԗਦႌӼ⋬ӁӔҮ࿾൶ӕਜҲӵѭ
 ਦ㮣$BDIF-PBEFSӑMBNCEBᐛӼਜҰᣪ ǖ HFU*G1SFTFOU 0CKFDULFZ 
 $BDIFӑѬLFZӒӁӐᢡӕᆼཡӁӐҮӵӬӘҶҬӶӚ7BMVFӼ൐ᒉӃӵѭᾩһӶӚOVMMѭ ӇӘӥҵѬ஁ӐӘԐ՛԰ՒӼ.BQӒӁӐ㈘ӃBT.BQ HFU"MM1SFTFOUӔӓӬҬӵѭ

Slide 17

Slide 17 text

·ͱΊ (VBWB$BDIFӼਜҰӒѬᡔ⷗ӑԊԿՒ૏ӕԕՋԫԟՍӘণ✵өӼ⇹ᖌӑҷӵѭ Ԑ՛԰Ւ㮢LFZӒWBMVFӘՂԊ㮣ҶԕՋԫԟՍҿӶѬLFZӑWBMVFӼහӝ௲Ӄѭ -PBEJOH$BDIFӑәѬLFZӕሽӃӵWBMVFӼ$BDIF-PBEFSӑ⇰ᘻӃӵѭ 
 $BDIFӑәѬ⧞௻ӑLFZӕሽӃӵWBMVFӼQVUӃӵѭ FYQJSF9999 NBYJNVN9999SFGSFTI9999ӔӓӑѬ
 Ԑ՛԰ՒӘ⏺᪨Ӯᥥ᡾Әᦆ㖟ӮᦴঽӼᴀӫӵҽӒҶ௲ᦸӵѭ $BDIFӘ┣㜇Ӯ$BDIF-PBEFSӘਃӴᢅ ਦႌӘ᥶ᾩ㮣ӑHFUӘᢅᴿҶႁӹӵ

Slide 18

Slide 18 text

αϯϓϧίʔυ IUUQTHJUIVCDPNHJTIJZBNBKBWBEP 4UBSUԗՑԡӼゼಌӁӐԾՑԎԞӑ␼⽇ӃӵҵѬ 0UIFS4BNQMFTԗՑԡӼಌਃҿӅӐҹӊҿҮѭ ⋬ⷭ஗ሉӘ஁Ӑә➃⡣ӁӐҮӨӅӽҶѬᒁӑԝ՛ԿՓӒӁӐビӁӉҮӔӒᓤӍӐҮӨӃѭ ӨӉѬീ⢰ᡡ⃀ӘҶѬ⪙⽓ӑӃҶԛդԱਦҶӹҵӴӮӃҹ୦ᇴӁӐӨӃѭ

Slide 19

Slide 19 text

ࢀߟจݙ !LB[VIJSB@S+BWBӑਜҲӵԒդԿ՛ԥդԡգԕՋԫԟՍՑԌԾՑՒ
 IUUQEIBUFOBOFKQ,B[VIJSB !BLJSBLPZBTV㉜ೂӃӵ+BWBՑԌԾՑՒѬ(VBWB
 IUUQXXXBLJSBLPZBTVOFUHVBWBKBWB MJCSBSJFTFWPMWJOH !CBFMEVOH(VBWB$BDIF
 IUUQXXXCBFMEVOHDPNHVBWBDBDIF HPPHMF$BDIFT&YQMBJOFE
 IUUQTHJUIVCDPNHPPHMFHVBWBXJLJ$BDIFT&YQMBJOFE