Slide 1

Slide 1 text

ଵଦͳ3VCZJTU΁ͷಓ &OVNFSBUPS-B[Zͷ࢖͍͔ͨ $IJLBOBHB5PNPZVLJ !OBHBDIJLB 'VLVPLBSC 'VLVPLB3VCZ,BJHJ

Slide 2

Slide 2 text

"HFOEB &OVNFSBCMF &OVNFSBUPS &OVNFSBUPS-B[Z

Slide 3

Slide 3 text

"HFOEB &OVNFSBCMF ͷ৽ػೳ /&8 &OVNFSBUPS &OVNFSBUPS-B[Z

Slide 4

Slide 4 text

"55&/5*0/ ࠓ೔ͷ࿩͸ 3VCZͷ ৽ػೳʹ͍ͭͯ

Slide 5

Slide 5 text

3VCZ ೥ϦϦʔε༧ఆ ΑΓ "VHCJHGFBUVSFGSFF[F 0DUGFBUVSFGSFF[F 'FCSFMFBTF 3VCZͷੜ஀प೥

Slide 6

Slide 6 text

3VCZ "VHCJHGFBUVSFGSFF[F 0DUGFBUVSFGSFF[F /PWQSFWJFXSFMFBTFE ˡࠓίί %FDQSFWJFXSFMFBTFE 'FCSFMFBTF

Slide 7

Slide 7 text

JTJO EFWFMPQNFOU ˞஫˞ ࢓༷͸։ൃதͷ΋ͷͰ͋Γ ϦϦʔε൛Ͱ͸มߋ͞ΕΔ৔߹͕͋Γ·͢

Slide 8

Slide 8 text

*OTUBMM3VCZ ͰະདྷΛ֞ؒݟΔ SWN SCFOWΛ࢖͍ͬͯΕ͹ SWNJOTUBMMSVCZIFBE SCFOWJOTUBMMEFWFM

Slide 9

Slide 9 text

4FMG*OUSPEVDUJPO UXJUUFSJE!OBHBDIJLB SVCZUSVOLDIBOHFT IUUQEIBUFOBOFKQOBHBDIJLB $3VCZDPNNJUUFS :PLPIBNBSCˠ'VLVPLBSC 4PVOESC SVCZDPSFBVEJP SVCZQVSFEBUB

Slide 10

Slide 10 text

3FDFOU"DUJWJUZ 3%PDˠ 3VCZ(FNTˠ 3BLFˠ 3BLF .JOJ5FTUˠ ۭલͷϝδϟʔόʔδϣϯΞοϓϥογϡ

Slide 11

Slide 11 text

3FDFOU"DUJWJUZ ͔͚͜Έίϛοτϥογϡ

Slide 12

Slide 12 text

/FX'FBUVSFT ΩʔϫʔυҾ਺ .PEVMFQSFQFOE 3FGJOFNFOU &OVNFSBUPS-B[Z %5SBDFରԠ 5SBDF1PJOU "SSBZCTFBSDI ($CJUNBQNBSLJOH %FCVHHFS1SPGJMFS "1* εΫϦϓτΤϯίʔσΟϯά 65'Խ 4USJOHC

Slide 13

Slide 13 text

,FZXPSE"SHVNFOUT EFGUVQQMF LFZlBz WBMVFlCz \LFZWBMVF^ FOE UVQQMFLFZlLz WBMVFlWz \lLzzWz^ UVQQMFWBMVF\lBz^ UVQQMF\lBzlCz^

Slide 14

Slide 14 text

.PEVMFQSFQFOE DMBTT$JODMVEF.FOE .PEVMFJODMVEF .JYJO ͸ఆٛࡁΈͷϝιουΛ্ॻ͖Ͱ͖ͳ͍ C M Object obj DMBTT$QSFQFOE.FOE .PEVMFQSFQFOE͸$ͷϝιουΛ্ॻ͖Ͱ͖Δ "SPVOE"MJBT BMJBT@NFUIPE@DIBJO ͷ͔ΘΓʹ࢖͑Δ C M Object obj

Slide 15

Slide 15 text

.PEVMFQSFQFOE NPEVMF5JUMF EFGJOJUJBMJ[F UJUMF OBNF !UJUMFUJUMF TVQFS OBNF FOE EFGOBNF !UJUMFTVQFS FOE FOE DMBTT1FSTPO EFGJOJUJBMJ[F OBNF !OBNFOBNFFOE EFGOBNF !OBNF FOE QSFQFOE5JUMF FOE 1FSTPOOFX l.Sz lOBHBDIJLBz OBNFl.SOBHBDIJLBz

Slide 16

Slide 16 text

.PEVMFQSFQFOE QSFQFOEͳͩ͠ͱ JODMVEFͩͱ DMBTT1FSTPO FOE NPEVMF5JUMF FOE DMBTT.FO1FSTPO JODMVEF5JUMF EFGJOJUJBMJ[F TVQFS !UJUMFl.Sz FOE FOE

Slide 17

Slide 17 text

3FGJOFNFOU େ෯ ࿏ઢ มߋ

Slide 18

Slide 18 text

!B@NBUTVEB

Slide 19

Slide 19 text

&OVNFSBUPS-B[Z

Slide 20

Slide 20 text

&OVNFSBUPS-B[Z ͷલʹ

Slide 21

Slide 21 text

&OVNFSBCMF

Slide 22

Slide 22 text

&OVNFSBCMF ΋ͪΖΜ࢖ͬͯ·͢ΑͶ

Slide 23

Slide 23 text

"SSBZ )BTI *0 "SSBZ΍)BTI *0͸ &OVNFSBCMFΛ JODMVEF͍ͯ͠Δ

Slide 24

Slide 24 text

&OVNFSBCMF ʲܗ༰ࢺʳ਺͑ΒΕΔ<೔ຊޠ8PSE/FU ӳ࿨ ՄࢉʀՄ෇൪<Ϋϩεϥϯήʔδ෼໺ઐ໳ޠࣙॻ> $BQBCMFPGCFJOHFOVNFSBUFE DPVOUBCMF<8JLJUJPOBSZ>

Slide 25

Slide 25 text

&OVNFSBCMF ʮFBDIϝιουΛݺͿͱɺԿ͔͕ ॱʹ /ճ ZJFMEͰ౉͞ΕΔʯ ͱ͍͏ϧʔϧ /

Slide 26

Slide 26 text

&OVNFSBCMF FBDIϝιου͕ఆٛ͞Εͯ ͍ΔΫϥεʹJODMVEFͯ͠ ࢖͏ .JYJO

Slide 27

Slide 27 text

&OVNFSBCMF FBDI͚ͩ༻ҙ͓͚ͯ͠͹ NBQ TFMFDU SFKFDU HSFQ FUD ͱ͍ͬͨϝιου͕࢖͑ΔΑ͏ʹͳΔ ͜ΕΒͷϝιου͕FBDIΛ࢖ͬͯ ࣮૷͞Ε͍ͯΔ

Slide 28

Slide 28 text

"O&YBNQMF DMBTT" JODMVEF&OVNFSBCMF EFGFBDI ZJFME ZJFME ZJFME FOE FOE "OFXNBQ\]J]J^< >

Slide 29

Slide 29 text

͜͜·Ͱͷ·ͱΊ &OVNFSBCMF͸FBDIϝιουΛ࢖ͬͯ ଟ࠼ͳϝιουΛ௥Ճ͢Δ ͳʹ͕ʮ਺্͑͛ΒΕΔʯͷ͔͸ FBDIϝιου͕ͲͷΑ͏ʹ ZJFMEΛݺͼग़͔͢Ͱܾ·Δ

Slide 30

Slide 30 text

&OVNFSBUPS &OVNFSBUPS ࢖ͬͯ·͢

Slide 31

Slide 31 text

&OVNFSBUPS FBDIʹ౉͢ϒϩοΫΛอཹͨ͠ ঢ়ଶͰΦϒδΣΫτͱͯ࣋ͪ͠ճΔ

Slide 32

Slide 32 text

UP@FOVN FOVN@GPS &OVNFSBUPSͷ࡞Γ͔ͨ w &OVNFSBUPSOFX PCK NFUIPEFBDI BSHT w PCKUP@FOVN NFUIPEFBDI BSHT w PCKFOVN@GPS NFUIPEFBDI BSHT w &OVNFSBUPSOFX\]Z]^ ˢ͜Ε͚ͩͪΐͬͱಛघ

Slide 33

Slide 33 text

0CKFDUFOVN@GPS FBDIҎ֎ͷ೚ҙͷϝιουͷݺͼग़͠Λ &OVNFSBUPSʹͰ͖Δ ࣮͸&OVNFSBCMFͰͳͯ͘΋͍͍ F@CZUFTUEJOFOVN@GPS FBDI@CZUF όΠτ͝ͱʹZJFME F@MJOFTUEJOFOVN@GPS FBDI@MJOF ߦ͝ͱʹZJFME

Slide 34

Slide 34 text

&OVNFSBUPSOFX\]Z]^ F&OVNFSBUPSOFX\]Z] Z ZGPP Z ^ ϒϩοΫ͕FBDIͷ୅ΘΓɻ ϒϩοΫύϥϝʔλZʹ͢Δͱ ZJFME͢Δ͜ͱʹͳΔɻ

Slide 35

Slide 35 text

&OVNFSBUPSOFX\]Z]^ DMBTT" EFGFBDI ZJFME ZJFMECBS ZJFME FOE FOE "OFXUP@FOVN ͱಉ͡

Slide 36

Slide 36 text

&OVNFSBUPSBT &YUFSOBM*UFSBUPS ֎෦ΠςϨʔλͱͯ͠࢖͑Δ F UP@FOVN FOFYUFBDI͕ZJFME͢Δ஋͕ FOFYUॱʹOFYUͰऔΓग़ͤΔ FOFYU FOFYU 4UPQ*UFSBUJPOJUFSBUJPOSFBDIFEBOFOE

Slide 37

Slide 37 text

.FUIPE$IBJO NBQ TFMFDUͳͲҰ෦ͷϝιου͸ϒϩο ΫΛলུ͢Δͱ&OVNFSBUPSΛฦ͢ͷͰ ෳ਺ͷϝιουΛ૊Έ߹Θͤͯ࢖͏ BSZNBQXJUI@JOEFY\]W J]^

Slide 38

Slide 38 text

.FUIPE$IBJO <B C D E>NBQXJUI@JOEFYEP]TZN J] JFWFO TZNJ FOE <B D > &OVNFSBUPS ಠࣗͷϝιου

Slide 39

Slide 39 text

XJUI@JOEFY .BU[XSPUF lNBQ͕FOVNFSBUPSΛฦ͢ͱ PCKNBQXJUI@JOEFY\]Y J]^ ͕Ͱ͖Δͷ͕خ͍͠ͷͰಋೖͨ͠ͷͰͨ͠ɻͱ͍͏Θ͚Ͱɺ FBDIʹ΋NBQʹ΋XJUI@JOEFY͕෇͚ΒΕͯخ͍͠ ͱ͍͏ͷ͕ຊ౰ͷཧ༝Ͱ͢ɻz

Slide 40

Slide 40 text

4FDSFU4UPSZPG &OVNFSBUPS &OVNFSBUPS͸ XJUI@JOEFYͷҝʹ ੜ·Εͨ

Slide 41

Slide 41 text

͜͜·Ͱͷ·ͱΊ w&OVNFSBUPS w֎෦ΠςϨʔλԽ wϝιουνΣʔϯ w

Slide 42

Slide 42 text

&OVNFSBUPS-B[Z ͷ৽ػೳ

Slide 43

Slide 43 text

&OVNFSBUPS-B[Z &OVNFSBUPSͷαϒΫϥε

Slide 44

Slide 44 text

&OVNFSBCMFMB[Z &OVNFSBUPS-B[Zͷ࡞Γ͔ͨ &OVNFSBCMFMB[ZΛݺͿ MB[Z &OVNFSBUPS-B[Z

Slide 45

Slide 45 text

&OVNFSBUPS-B[Z -B[ZͷNBQ TFMFDU [JQͳͲҰ෦ͷϝιο υ͕͞Βʹ-B[ZΛฦ͢ MB[ZNBQ\]J]J^ &OVNFSBUPS-B[Z &OVNFSBUPS-B[ZNBQ

Slide 46

Slide 46 text

&OVNFSBUPS-B[Z > Enumerator::Lazy.instance_methods(false) map collect flat_map collect_concat select find_all reject grep zip take take_while drop drop_wihle cycle lazy force [ruby 2.0.0dev (2012-05-30 trunk 35844)]

Slide 47

Slide 47 text

GPSDF &OVNSBUPS-B[ZGPSDF UP@BͷBMJBT ஗Ԇ͞Ε͍ͯΔΠςϨʔλͷධՁΛ࣮ߦ

Slide 48

Slide 48 text

"-B[Z%FNP >> l = (0..5).lazy => >> l_map = l.map{|i| p i; i * 2 } => :map> # ͜ͷ࣌఺Ͱ͸·ͩϒϩοΫͷ಺༰͸࣮ߦ͞Ε͍ͯͳ͍! >> l_map.force 0 1 2 3 4 5 => [0, 2, 4, 6, 8, 10] # force ΛݺͿͱ࣮ߦ͞ΕΔ

Slide 49

Slide 49 text

&OVNFSBUPSͱͷҧ͍ .FUIPE$IBJOͷ࢖͍͔͕ͨΑΓڧྗʹ தؒσʔλͷ཈੍

Slide 50

Slide 50 text

1JUGBMMPG &OVNFSBUPS NBQ TFMFDUͷΑ͏ʹϒϩοΫͷ໭Γ஋ Λར༻͢ΔϝιουΛෳ਺ܨ͛Δ͜ͱ͕Ͱ ͖ͳ͍ ͯ͠΋ҙຯ͕ͳ͘ͳΔ NBQTFMFDU\]J]J^ < > ˢNBQͷҙຯ͕ͳ͘ͳ͍ͬͯΔ

Slide 51

Slide 51 text

5SVF.FUIPE$IBJO NBQ΍TFMFDUͱ͍ͬͨϝιου΋͍ͭ͘Ͱ΋ .FUIPE$IBJOͰ͖Δɻ ͦ͏ɺ-B[ZͳΒͶɻ ͔Βͷ͏ͪ೚ҙͷܻʹΛؚΉ਺Λฦ͢ MB[ZNBQ UP@T TFMFDU\]T] _T ^GPSDF

Slide 52

Slide 52 text

1JUGBMMPG &OVNFSBUPS NBQ TFMFDUͷΑ͏ʹϒϩοΫͷ໭Γ஋ Λར༻͢ΔϝιουΛ֎෦ΠςϨʔλԽ͠ ͯ΋ҙຯ͕ͳ͍ F NBQ FOFYU FOFYU FOFYU FOFYU ˢNBQͷҙຯ͕ͳ͘ͳ͍ͬͯΔ

Slide 53

Slide 53 text

5SVF&YUFSOBM *UFSBUPS NBQͳͲʹϒϩοΫΛ౉ͤΔͷͰ ద༻ͨ݁͠ՌΛॱʹऔΓग़ͤΔ M MB[ZTFMFDU\]J]JFWFO ^ MOFYU MOFYU MOFYU

Slide 54

Slide 54 text

&GGJDJFOU.FNPSZ 6TBHF -B[Z͸ZJFMEຖʹ.FUIPE$IBJOͷ ࠷ޙ·Ͱॲཧ͞ΕΔ

Slide 55

Slide 55 text

&OVNFSBCMFWFSTJPO MBSHF@BSSBZNBQ\^TFMFDU\^

Slide 56

Slide 56 text

&OVNFSBCMFWFSTJPO MBSHF@BSSBZNBQ\^TFMFDU\^ NBQ

Slide 57

Slide 57 text

&OVNFSBCMFWFSTJPO MBSHF@BSSBZNBQ\^TFMFDU\^ NBQ TFMFDU

Slide 58

Slide 58 text

&OVNFSBCMFWFSTJPO MBSHF@BSSBZNBQ\^TFMFDU\^ NBQ TFMFDU ($͞ΕΔ

Slide 59

Slide 59 text

&OVNFSBCMFWFSTJPO MBSHF@BSSBZNBQ\^TFMFDU\^ NBQ TFMFDU ($͞ΕΔ map ݁ՌͷͨΊ large_array ͱಉ͘͡Β͍ͷ தؒσʔλ͕ඞཁ

Slide 60

Slide 60 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF

Slide 61

Slide 61 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF

Slide 62

Slide 62 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF ($`FE

Slide 63

Slide 63 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF

Slide 64

Slide 64 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF ($`FE

Slide 65

Slide 65 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF

Slide 66

Slide 66 text

-B[ZWFSTJPO MBSHF@BSSBZMB[ZNBQ\^TFMFDU\^GPSDF தؒσʔλ͕ෆཁ

Slide 67

Slide 67 text

-B[Z$IBJO%FNP >> (0..4).lazy.select{|i| p “select:#{i}”; i.event? }.map{|i| p “map:#{i}”; i * 2 }.force “select:0” “map:0” “select:1” “select:2” “map:2” “select:3” “select:4” “map:4” => [0, 4, 8]

Slide 68

Slide 68 text

-B[ZXJUI*0 ྫ TUEJO͔ΒۭߦΛಡΉ·Ͱͷ֤ߦͷ จࣈ਺ͷ഑ྻΛฦ͢ TUEJOMB[ZUBLF@XIJMF\]M] MDIPNQFNQUZ ^NBQ\]M]MDIPNQTJ[F^

Slide 69

Slide 69 text

-B[ZXJUI*0 &OVNFSBCMF &OVNFSBUPSͩͱۭߦ·Ͱઌ ʹಡΜͰ͠·͏ɻ -B[ZͳΒߦಡΉͨͼʹUBLF@XIJMFNBQ ͷϒϩοΫ͕࣮ߦ͞ΕΔ ˠஞ࣍ॲཧͰ͖Δ

Slide 70

Slide 70 text

-B[Z-JTU ແݶʹଓ͘ཁૉΛѻ͑Δ MJTU 'MPBU*/'*/*5: MJTUNBQ\]J]J^UBLF ฦͬͯ͜ͳ͍ MJTUMB[ZNBQ\]J]J^UBLF GPSDF < >

Slide 71

Slide 71 text

*OUFSBDUJWJUZ ࣮ߦॱংΛར༻ͯ͠ΠϯλϥΫςΟϒʹ 'MPBU*/'*/*5: MB[ZNBQ\]J] QOVN MJOFTUEJOHFUT MJOFDIPNQJGMJOF ^UBLF@XIJMF\]M] MBOEOPUMFNQUZ ^GPSDF

Slide 72

Slide 72 text

1JUGBMMPG-B[Z ϝϞԽ͞Εͳ͍ GPSDFΛճݺͿͱ΋͏Ұ౓FBDI͕ ݺ͹ΕΔ *0ͳͲ෭࡞༻ͷ͋ΔFBDIͩͱ݁Ռ͕ มԽ͢Δ FY TUEJOMB[ZUBLF FOVN@GPSͷΑ͏ʹFBDIͷ͔ΘΓʹͳ ΔϝιουΛࢦఆͰ͖ͳ͍ TUEJOFOVN@GPS FBDI@CZUF MB[Z TUEJOMB[Z FBDI@CZUF ͱॻ͖͍ͨ

Slide 73

Slide 73 text

-B[ZBTB#FUUFS &OVNFSBUPS -B[Z͸ &OVNFSBUPSͷ ਖ਼౷ਐԽ൛

Slide 74

Slide 74 text

)BQQZ-B[Z 1SPHSBNNJOH