Slide 1

Slide 1 text

ͦΕ/"SSBZͰ Ͱ͖ΔΑ 札幌中央区RRuubbyy会議0011 22001144年22月88日 @@ttmmaaeeddaa

Slide 2

Slide 2 text

!UNBFEB

Slide 3

Slide 3 text

!UNBFEB w3VCZྺ͸΋͏೥ʹͳΓ·͢ɻ

Slide 4

Slide 4 text

!UNBFEB w3VCZྺ͸΋͏೥ʹͳΓ·͢ɻ (C)Ωϟϓςϯཌྷ

Slide 5

Slide 5 text

!UNBFEB w3VCZྺ͸΋͏೥ʹͳΓ·͢ɻ (C)Ωϟϓςϯཌྷ

Slide 6

Slide 6 text

!UNBFEB wͦͷੲຊΛॻ͍ͨΓ΋͠·ͨ͠ɻ

Slide 7

Slide 7 text

!UNBFEB wաڈճ΄Ͳࡳຈ3VCZձٞͰ3BJMTͷ͓࿩Λ͞ ͤͯ௖͖·ͨ͠ɻ

Slide 8

Slide 8 text

!UNBFEB w ג ͑ʹ͠ςοΫͰͲͬ΀Γ3VCZͰ࢓ࣄ͕Ͱ͖ ͯ޾ͤͰ͢ɻ

Slide 9

Slide 9 text

ࠓ೔͸ޚࣾͷϏδωε Ͱ͝׆༻͍͚ͨͩΔ /"SSBZ ͷ͝ఏҊͰ͢ɻ

Slide 10

Slide 10 text

/"SSBZʁ ॳࣖ ໊લ͙Β͍͸ฉ͍ͨࣄ͋Δ ࢖ͬͨ͜ͱ͋Δ Α͘࢖͏

Slide 11

Slide 11 text

/"SSBZ wాதণ޺͞Μ࡞ͷ3VCZ༻ଟ࣍ݩ਺஋഑ྻܭࢉ ϥΠϒϥϦɻ wओʹେྔͷ਺஋ܭࢉΛߴ଎ʹॲཧ͢Δ͜ͱΛ໨ తʹ࡞ΒΕͨ΋ͷɻ http://magazine.rubyist.net/?0006-RLR

Slide 12

Slide 12 text

ͲΕ͙Β͍଎͍͔ʁ ഑ྻཁૉ਺ ඵ਺ ഑ྻʹ͔Β·Ͱͷཚ਺Λ֨ೲ͠ɺͦͷ߹ܭɺฏۉɺ෼ࢄɺ࠷େ஋ɺ࠷খ஋ΛٻΊΔͷʹ͔͔ͬͨ߹ܭඵ਺ 3VCZ /"SSBZ .BD#PPL"JS*OUFM$PSFJ()[

Slide 13

Slide 13 text

ͲΕ͙Β͍଎͍͔ʁ ഑ྻཁૉ਺ ඵ਺ ഑ྻʹ͔Β·Ͱͷཚ਺Λ֨ೲ͠ɺͦͷ߹ܭɺฏۉɺ෼ࢄɺ࠷େ஋ɺ࠷খ஋ΛٻΊΔͷʹ͔͔ͬͨ߹ܭඵ਺ 3VCZ /"SSBZ .BD#PPL"JS*OUFM$PSFJ()[ ໿ഒ ߴ଎

Slide 14

Slide 14 text

ͲΕ͙Β͍଎͍͔ʁ ഑ྻཁૉ਺ ඵ਺ ഑ྻʹ͔Β·Ͱͷཚ਺Λ֨ೲ͠ɺͦͷ߹ܭɺฏۉɺ෼ࢄɺ࠷େ஋ɺ࠷খ஋ΛٻΊΔͷʹ͔͔ͬͨ߹ܭඵ਺ 3VCZ /"SSBZ .BD#PPL"JS*OUFM$PSFJ()[ ໿ഒ ߴ଎ Ͱɾ͢ɾ͕ʜ

Slide 15

Slide 15 text

ඵ ඵ ඵ

Slide 16

Slide 16 text

ສ݅Ҏ ্ͷܭࢉΛΑ ͘ඞཁͱ͢Δ ਓʙʁ ඵ ඵ ඵ

Slide 17

Slide 17 text

Ͱ͸ɺͲΜͳ ʹখͯ͘͞΋ ͍͍ͷͰɺද ܭࢉΛΑ͘ඞ ཁͱ͢Δ ਓʙʁ

Slide 18

Slide 18 text

ͱ͍͏Θ͚Ͱɺࠓ೔͸ /"SSBZͷ଎౓໘ΑΓ ΋ɺදܭࢉػೳʹ ண໨͓ͨ͠࿩Λ͠·͢ɻ

Slide 19

Slide 19 text

ྫ͑͹ɺ͜Μͳද

Slide 20

Slide 20 text

ྫ͑͹ɺ͜Μͳද ߦ໨શମͷ߹ܭ͸ʁ

Slide 21

Slide 21 text

&YDFMͩͱʁ

Slide 22

Slide 22 text

3VCZඪ४ͷ"SSBZͩͱʁ a = [[1,2,3], [4,5,6], [7,8,9]] => [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a[1].inject(:+) => 15

Slide 23

Slide 23 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1] => NArray.int(3): [ 4, 5, 6 ] na[true, 1].sum => 15

Slide 24

Slide 24 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1] => NArray.int(3): [ 4, 5, 6 ] na[true, 1].sum => 15 JOUܕͷ ºͷ࣍ݩ ഑ྻΛ༻ҙͯ͠

Slide 25

Slide 25 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1] => NArray.int(3): [ 4, 5, 6 ] na[true, 1].sum => 15 ࢝·ΓͰɺ ͣͭ૿Ճ͢Δ਺Ͱ ຒΊΔ

Slide 26

Slide 26 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1] => NArray.int(3): [ 4, 5, 6 ] na[true, 1].sum => 15 ศ্ٓɺԣ࣠ΛY࣠ɺ ॎ࣠ΛZ࣠ͱݺͼ·͢ Αɻ Y Z

Slide 27

Slide 27 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1] => NArray.int(3): [ 4, 5, 6 ] na[true, 1].sum => 15 Y࣠͸શ෦ɺ Z࣠͸൪໨ɺ Λऔಘ ศ্ٓɺԣ࣠ΛY࣠ɺ ॎ࣠ΛZ࣠ͱݺͼ·͢ Αɻ Y Z

Slide 28

Slide 28 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1] => NArray.int(3): [ 4, 5, 6 ] na[true, 1].sum => 15 ͦΕΛ߹ܭ

Slide 29

Slide 29 text

·ͱΊΔͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1].sum => 15

Slide 30

Slide 30 text

/"SSBZͷಛ௕ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1].sum => 15 ͪΌΜͱºͷܗ Ͱදࣔͯ͘͠ΕΔ

Slide 31

Slide 31 text

/"SSBZͷಛ௕ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, 1].sum => 15 ૢ࡞͸શͯNBQɻ ࣗ෼ͰNBQ ΍JOKFDUͳͲΛॻ ͘ඞཁ͸ͳ͍ɻ

Slide 32

Slide 32 text

ൺ΂ͯΈ·͠ΐ͏ x࣠ํ޲΁ͷ߹ܭ Array a[1].inject(:+) NArray na[true, 1].sum

Slide 33

Slide 33 text

ൺ΂ͯΈ·͠ΐ͏ x࣠ํ޲΁ͷ߹ܭ Array a[1].inject(:+) NArray na[true, 1].sum /"SSBZͷํ͕௚ײత Ͱ͕͢ɺ "SSBZͰ΋ ·ͩڐͤΔϨϕϧ

Slide 34

Slide 34 text

Z࣠ํ޲ͷ߹ܭ΋ ΍ͬͯΈ·͠ΐ͏

Slide 35

Slide 35 text

ྫ͑͹ɺ͜Μͳද "ྻશମͷ߹ܭ͸ʁ

Slide 36

Slide 36 text

&YDFMͩͱʁ

Slide 37

Slide 37 text

3VCZඪ४ͷ"SSBZͩͱʁ a = [[1,2,3], [4,5,6], [7,8,9]] => [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a.map{|row| row[0]}.inject(:+) => 12

Slide 38

Slide 38 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[0, true] => NArray.int(3): [ 1, 4, 7 ] na[0, true].sum => 12

Slide 39

Slide 39 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[0, true] => NArray.int(3): [ 1, 4, 7 ] na[0, true].sum => 12 Y࣠͸൪໨ɺ Z࣠͸શ෦ Λऔಘ Y Z

Slide 40

Slide 40 text

/"SSBZͩͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[0, true] => NArray.int(3): [ 1, 4, 7 ] na[0, true].sum => 12 ͦΕΛ߹ܭ

Slide 41

Slide 41 text

·ͱΊΔͱʁ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[0, true].sum => 12

Slide 42

Slide 42 text

ൺ΂ͯΈ·͠ΐ͏ x࣠ํ޲΁ͷ߹ܭ y࣠ํ޲΁ͷ߹ܭ Array a[1].inject(:+) a.map{|row| row[0]}. inject(:+) NArray na[true, 1].sum na[0, true].sum

Slide 43

Slide 43 text

ൺ΂ͯΈ·͠ΐ͏ x࣠ํ޲΁ͷ߹ܭ y࣠ํ޲΁ͷ߹ܭ Array a[1].inject(:+) a.map{|row| row[0]}. inject(:+) NArray na[true, 1].sum na[0, true].sum "SSBZͩͱɺྻͷ߹ܭͷͱ͖ͷίʔυͱશ͘ର শੑ͕ͳ্͍ʹɺগ͠௕ͯ͘Կ΍͍ͬͯΔͷ͔ Θ͔Γʹ͍͘Ͱ͢Ͷ

Slide 44

Slide 44 text

͜͜·Ͱͷ·ͱΊ w/"SSBZͰ͸දΛදͱͯ͠ѻ͑·͢ɻ wૢ࡞͸શͯNBQ΍JOKFDUʹ૬౰͢ΔͷͰɺࣗ ෼ͰNBQ΍JOKFDUΛॻ͘ඞཁ͕͋Γ·ͤΜɻ

Slide 45

Slide 45 text

΋ͬͱෳࡶͳྫ΋ ΍ͬͯΈ·͠ΐ͏

Slide 46

Slide 46 text

ूܭද࡞͍ͬͯͩ͘͞Ҋ݅

Slide 47

Slide 47 text

ूܭද࡞͍ͬͯͩ͘͞Ҋ݅ Α͋͘Γ·͢ΑͶʁ

Slide 48

Slide 48 text

୅ͷখܭΛٻΊΔʹ͸ʁ

Slide 49

Slide 49 text

3VCZඪ४ͷ"SSBZͰߟ͑ Δͷ͸΋͏ࢭΊ·ͯ͠ʜ

Slide 50

Slide 50 text

/"SSBZͰ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(1) => NArray.int(3): [ 5, 7, 9 ]

Slide 51

Slide 51 text

/"SSBZͰ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(1) => NArray.int(3): [ 5, 7, 9 ] Y࣠͸શ෦ɺ Z࣠͸൪໨ͱ൪໨ Λऔಘ Y Z

Slide 52

Slide 52 text

/"SSBZͰ na = NArray.int(3,3).indgen!(1,1) => NArray.int(3,3): [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(1) => NArray.int(3): [ 5, 7, 9 ] ͦΕΛZ࣠ํ޲ʹ ߹ܭ

Slide 53

Slide 53 text

ͪͳΈʹ na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(0) na[true, [0,1]].sum(1) na[true, [0,1]].sum => NArray.int(2): [ 6, 15 ] => NArray.int(3): [ 5, 7, 9 ] => 21

Slide 54

Slide 54 text

ͪͳΈʹ na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(0) na[true, [0,1]].sum(1) na[true, [0,1]].sum => NArray.int(2): [ 6, 15 ] => NArray.int(3): [ 5, 7, 9 ] => 21 TVN ͩͱɺ Y࣠ํ޲ʹ߹ܭ͞Εͯ

Slide 55

Slide 55 text

ͪͳΈʹ na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(0) na[true, [0,1]].sum(1) na[true, [0,1]].sum => NArray.int(2): [ 6, 15 ] => NArray.int(3): [ 5, 7, 9 ] => 21 TVN ͩͱɺ Z࣠ํ޲ʹ߹ܭ͞Εͯ

Slide 56

Slide 56 text

ͪͳΈʹ na[true, [0,1]] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, [0,1]].sum(0) na[true, [0,1]].sum(1) na[true, [0,1]].sum => NArray.int(2): [ 6, 15 ] => NArray.int(3): [ 5, 7, 9 ] => 21 TVNͩͱɺ શํ޲ʹ ߹ܭ͞Ε·͢

Slide 57

Slide 57 text

ͭ·Γɺ͜ͷลશ෦ɺTVN ͰٻΊΒΕΔΘ͚Ͱ͢ʂ TVN TVN TVN

Slide 58

Slide 58 text

͜Μͳߟ͑ํ΋ ͋Γ·͢ɻ

Slide 59

Slide 59 text

͍ͭ͘ͷ࣠Ͱ෼ྨ͞Εͨ දͰ͠ΐ͏͔ʁ

Slide 60

Slide 60 text

͍ͭ͘ͷ࣠Ͱ෼ྨ͞Εͨ දͰ͠ΐ͏͔ʁ ੈ୅ͷ࣠

Slide 61

Slide 61 text

͍ͭ͘ͷ࣠Ͱ෼ྨ͞Εͨ දͰ͠ΐ͏͔ʁ ੑผͷ࣠

Slide 62

Slide 62 text

͍ͭ͘ͷ࣠Ͱ෼ྨ͞Εͨ දͰ͠ΐ͏͔ʁ ళͷ࣠

Slide 63

Slide 63 text

ͱ͍͏͜ͱ͸ɺ࣍ݩ ͷදͰ࣋ͭํ͕ࣗવ ͳͷͰ͸ʁ

Slide 64

Slide 64 text

͜Μͳײ͡ "ళ #ళ $ళ உ ঁ ୅ ୅ ººͷදʢۭؒ

Slide 65

Slide 65 text

na = NArray.int(3, 2, 2).indgen!(1, 1) => NArray.int(3,2,2): [ [ [ 1, 2, 3 ], [ 4, 5, 6 ] ], [ [ 7, 8, 9 ], [ 10, 11, 12 ] ] ] /"SSBZͰදݱ͢Δͱʁ

Slide 66

Slide 66 text

na[0, 0, 0] => 1 na[0, 1, 0] => 4 na[0, 0, 1] => 7 ஋Λऔಘͯ͠Έ·͠ΐ͏ "ళ உ ୅ "ళ ঁ ୅ "ళ உ ୅

Slide 67

Slide 67 text

୅ͷ஋શ෦͸ʁ na[true, true, 0] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] na[true, true, 0].sum => 21 ళશ෦ ୅ ੑผશ෦

Slide 68

Slide 68 text

உੑͷ஋શ෦͸ʁ na[true, 0, true] => NArray.int(3,2): [ [ 1, 2, 3 ], [ 7, 8, 9 ] ] na[true, 0, true].sum => 30 ళશ෦ ੈ୅શ෦ உੑ

Slide 69

Slide 69 text

΋ͬͱศརʹʂ w/"SSBZ͸Կ࣍ݩͷσʔλͰ΋ѻ͑Δ w͍͍ͪͪ஋ͱ഑ྻͷΠϯσοΫεΛ಄Ͱߟ͑ͯ ରԠ͚ͮΔͷ໘౗ͳͷͰɺͦ͜Λਓʹ༏͍͠ײ ͡ͷϥούʔΛඃͤͯ͋͛Δͱɺ೚ҙͷ਺ͷ࣠ ͰσʔλΛ੔ཧͰ͖Δശ͕Ͱ͖͕͋Γ·͢ɻ

Slide 70

Slide 70 text

cube = Cube.new([ {key: :mise, values: ["Aళ", "Bళ", "Cళ"]}, {key: :sedai, values: ["10୅","20୅"]}, {key: :sei, values:["உ","ঁ"]} ]) # ళA, 20୅, ঁʹ20Λઃఆ cube.set( { mise: "Aళ", sedai: "20୅", sei: "ঁ" }, 20) # ళA, 20୅, ঁͷ஋Λऔಘ cube.get( { mise: "Aళ", sedai: "20୅", sei: "ঁ" }) => 20 # 10୅ͷ஋Λऔಘ cube.get( { sedai: "10୅"} ) => NArray.int(3,2): [ [ 1, 2, 3 ], [ 7, 8, 9 ] ]

Slide 71

Slide 71 text

·ͱΊ w/"SSBZ͸೚ҙͷ਺ͷ࣠ͷσʔλΛࣗ༝ʹѻ͑ ·͢ɻ w/"SSBZ͸ͦͷσʔλۭؒͷதͷ޷͖ͳ৔ॴͷ σʔλʹॊೈʹΞΫηεͰ͖·͢ɻ w&YDFM͙Β͍ΧδϡΞϧʹ/"SSBZΛ࢖͍·͠ ΐ͏ʂ

Slide 72

Slide 72 text

ࢀߟ wϚχϡΞϧ IUUQOBSSBZSVCZGPSHFPSHJOEFYIUNMKB w3VCZٯҾ͖Ϩγϐ Ϩγϐ wOVNQZؔ܎ͷࢿྉ

Slide 73

Slide 73 text

ͥͻޚࣾͷϏδωε ΁͝׆༻͍ͩ͘͞ɻ