Slide 1

Slide 1 text

("&Ͱ.JDSPTFSWJDFTͳόον΁ 'SJOHF$P -UE )JSPLJ,PNVSBTBLJ!QFUJUWJPMFU

Slide 2

Slide 2 text

ࣗݾ঺հ w খࢵ߂و )JSPLJ,PNVSBTBLJ w ΠϯλʔωοτͰ͸!QFUJUWJPMFU w αʔόαΠυΤϯδχΞ! w ͜ͷ೥͘Β͍͸͍͍ͩͨ4DBMBॻ͍ͯΔ

Slide 3

Slide 3 text

͜ͷลͷ࿩Ͱ͢

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ࿩͞ͳ͍͜ͱ ࿩͢͜ͱ w ("&5BTL2VFVF4DBMBͰόονΛ࡞Δ࿩ w ओʹΞʔΩςΫνϟతͳઓུ ࿩͞ͳ͍͜ͱ w ("& 5BTL2VFVFͷࡉ͔͍࿩ w 4DBMBͷ࣮૷ςΫχοΫ

Slide 5

Slide 5 text

ࠓ೔࿩͢͜ͱ࿩͞ͳ͍͜ͱ ࿩͢͜ͱ w ("&5BTL2VFVF4DBMBͰόονΛ࡞Δ࿩ w ओʹΞʔΩςΫνϟతͳઓུ ࿩͞ͳ͍͜ͱ w ("& 5BTL2VFVFͷࡉ͔͍࿩ w 4DBMBͷ࣮૷ςΫχοΫ

Slide 6

Slide 6 text

όονʁ

Slide 7

Slide 7 text

όονʁ ϓϩάϥϜ܈Λॲཧ໨త͝ͱʹ۠੾Γɺ͜ͷ۠੾ Γຖʹॱ࣮࣍ߦͯ͠Ώ͘ॲཧͷ͜ͱ XJLJQFEJB ཁ͢ΔʹɺԿ͔͠ΒͷॲཧΛॱ࣮࣍ߦ͢Δ͜ͱ

Slide 8

Slide 8 text

όονͷ͋Δ͋Δ Α͋͘Δ৚݅͸ҎԼͷΑ͏ͳ΋ͷ w ఆظ࣮ߦ DSPO w σʔλΛཷΊͯ·ͱΊͯॲཧ w FUD

Slide 9

Slide 9 text

όον΁ͷΘ͕·· w ىಈ࣌Ҏ֎͸͓͔͚ۚͨ͘ͳ͍ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞

Slide 10

Slide 10 text

ͦΕɺ("&Ͱग़དྷΔΑ

Slide 11

Slide 11 text

("& w (PPHMF"QQ&OHJOF w ͍ΘΏΔ1BB4 w \4UBOEBSE 'MFYJCMF^&OWJSPONFOUͷछྨ w 4&͸੍ݶ͕ݫ͍͕͠ӡ༻͸͓೚ͤ w '&͸੍ݶ͕؇͍͕ӡ༻͸΍΍खಈ

Slide 12

Slide 12 text

("& ϑϨΩγϒϧ؀ڥ͸ɺελϯμʔυ؀ڥΛิ׬͢ Δ͜ͱΛ໨తͱ͍ͯ͠·͢ɻ IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTqFYJCMFKBWBqFYJCMFGPSTUBOEBSEVTFST IMKB جຊ͸4&Λݕ౼͠ɺμϝͬΆ͍ͳΒ'&ʹ͢Δ

Slide 13

Slide 13 text

("& ϑϨΩγϒϧ؀ڥ͸ɺελϯμʔυ؀ڥΛิ׬͢ Δ͜ͱΛ໨తͱ͍ͯ͠·͢ɻ IUUQTDMPVEHPPHMFDPNBQQFOHJOFEPDTqFYJCMFKBWBqFYJCMFGPSTUBOEBSEVTFST IMKB جຊ͸4&Λݕ౼͠ɺμϝͬΆ͍ͳΒ'&ʹ͢Δ ΠϯελϯελΠϓͰεέʔϧઓུΛม͑ΒΕΔ w BVUPNBUJDҰ൪͓೚ͤͰ("&ͬΆ͍ w CBTJDόονͱ͔ w NBOVBMखӡ༻Ͱ*BB4دΓ

Slide 14

Slide 14 text

όον΁ͷΘ͕·· w ىಈ࣌Ҏ֎͸͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w w σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w

Slide 15

Slide 15 text

5BTL2VFVF

Slide 16

Slide 16 text

5BTL2VFVF w ("&ɺಛʹ4&Ͱ؆୯ʹ࢖͑ΔδϣϒΩϡʔ w \1VTI 1VMM $SPO^Ωϡʔͷछྨ͋Δ w ("&αʔϏεؒͷ࿈ܞʹ1VTIΩϡʔ͕ඇৗʹศར w DSPO΋͋ΔͷͰόονͷىಈ΋؆୯ w εςʔλε͕YYͱ͔ͳΒϦτϥΠͯ͘͠ΕΔ

Slide 17

Slide 17 text

5BTL2VFVF w ઃఆ΋ൺֱత୯७Ͱ؆୯ʹ࡞੒Մೳ w ͜Μͳײ͡ ˡϦτϥΠճ਺ͷ্ݶ ˡλεΫͷੜଘ࣌ؒ

Slide 18

Slide 18 text

όον΁ͷΘ͕·· w ىಈ࣌Ҏ֎͸͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w 5BTL2VFVFʹϦτϥΠػೳ͕͋Δ w σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w

Slide 19

Slide 19 text

όον΁ͷΘ͕·· w ىಈ࣌Ҏ֎͸͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w 5BTL2VFVFʹϦτϥΠػೳ͕͋Δ w σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w σʔλগ σʔλଟ

Slide 20

Slide 20 text

ΦʔτεέʔϧʹΉ͚ͯ w εέʔϧΞοϓ͍ͨ͠ w ("&ͩͱࣗಈͰ͸ग़དྷͳ͍ w εέʔϧΞ΢τ͍ͨ͠ w ("&͸ϦΫΤετ਺૿ͰεέʔϧΞ΢τ w σʔλ਺͕૿͑ΔͱϦΫΤετ਺͕૿͑ΔΑ͏ ʹ࣮૷͢Δ

Slide 21

Slide 21 text

ΦʔτεέʔϧʹΉ͚ͯ w εέʔϧΞοϓ͍ͨ͠ w ("&ͩͱࣗಈͰ͸ग़དྷͳ͍ w εέʔϧΞ΢τ͍ͨ͠ w ("&͸ϦΫΤετ਺૿ͰεέʔϧΞ΢τ w σʔλ਺͕૿͑ΔͱϦΫΤετ਺͕૿͑ΔΑ͏ ʹ࣮૷͢Δ

Slide 22

Slide 22 text

4DBMBͱ("&

Slide 23

Slide 23 text

4DBMBͱ("& w 'SJOHFͰ͸αʔόαΠυ։ൃʹ4DBMBΛΑ͘࢖͏ w ("&4&ͷ+BWBରԠ͸೥݄ w IUUQTDMPVEQMBUGPSNHPPHMFCMPHDPN+BWBPO"QQ&OHJOF4UBOEBSEFOWJSPONFOUJTOPXHFOFSBMMZBWBJMBCMFIUNM w 4&Ͱ+BWB͕ಈ͚͹4DBMB΋ಈ͘ʂ

Slide 24

Slide 24 text

4DBMBͰόονॲཧ w 4DBMB͸ඇಉظॲཧ΍ϧʔϓॲཧ͕هड़͠΍͘͢ɺ όονͰ͋Γ͕ͪͳॲཧΛ؆୯ʹॻ͚Δ w 'VUVSFͱ-JTUNBQͷΑ͏ͳ"1*Λ࢖͏ val targets: List[Data] = ??? val resultFutures: List[Future[Result]] = targets map { target => Future { execute(target) } // 何か重い処理を非同期で実行 } val results: Future[List[Result]] = Future.sequence(resultFutures)

Slide 25

Slide 25 text

͜͜Ͱ໰୊ൃੜ w ("&4&͸γϯάϧίΞ w ඇಉظॲཧͷޮՌ͕ബ͍ w '&ʹͯ͠ϚϧνίΞʹ͢Δʜ

Slide 26

Slide 26 text

ίΞ͕଍Γͳ͚Ε͹ ϚγϯΛ૿΍ͤ͹͍͍͡Όͳ͍

Slide 27

Slide 27 text

5BTL2VFVFΛ࢖ͬͯίΞΛ૿΍͢ ϚϧνίΞγϯά ϧίΞϚϧνΠϯελϯε w ඇಉظॲཧΛλεΫͱͯ͠5BTL2VFVF΁QVU͢Δ w \ಉ͡ ผͷ^("&αʔϏεͰड͚औͬͯඇಉظॲཧ w ϧʔϓॲཧ΋ҰͭͣͭผͷλεΫʹ͢Δ 5BTL2VFVF

Slide 28

Slide 28 text

େ͖ͳόονॲཧΛ খ͞ͳλεΫʹ෼ׂͯ͠ ඇಉظʹॲཧ͢Δ

Slide 29

Slide 29 text

·͞ʹ.JDSPTFSWJDFT

Slide 30

Slide 30 text

ͪͳΈʹ ("&4&ͩͱϝϞϦͷ࠷େαΠζ͕(#ͳͷͰɺ Լखʹେ͖ͳόονΛಈ͔͢ͱ؆୯ʹ00.͕ى ͖ΔͷͰɺόονΛখ͘͞෼ׂͤ͟ΔΛ͑ͳ͍ σʔλଟ

Slide 31

Slide 31 text

.JDSPTFSWJDFTͳόον όονॲཧΛ෼ׂͯ͠ޙଓͷॲཧ΁͸5BTL2VFVF Λ࢖ͬͯܨ͙ 5BTL2VFVF ॲཧର৅ͷ ҰཡΛऔಘ Ұͭͣͭ ॲཧ͢Δ ͞Βʹࡉ͔͘ ॲཧ͢Δ ଴ͪ߹Θͤͯ ΫϦʔϯΞοϓ ʜ ʜ

Slide 32

Slide 32 text

όον΁ͷΘ͕·· w ىಈ࣌Ҏ֎͸͓͔͚ۚͨ͘ͳ͍ w ("&4&ͳΒ࣮ߦ࣌ؒ՝ۚ w ίέͨΒࣗಈͰϦτϥΠ͍ͨ͠ w 5BTL2VFVFʹϦτϥΠػೳ͕͋Δ w σʔλ͕૿͑ͨΒΦʔτεέʔϧ͍ͤͨ͞ w ࡉ͔͘λεΫʹ੾Γ෼͚ͯεέʔϧΞ΢τ 5BTL2VFVF

Slide 33

Slide 33 text

·ͱΊ 4DBMBͰॻ͍ͨόονΛ ("&4&Ͱಈ͔͢ͱ޾ͤʹͳΕΔ