Slide 1

Slide 1 text

ϓϩάϥϛϯάྺ൒೥ͷ Rubyist͕ GoΛֶͼ࢝Ίͯށ࿭ͬͨ఺ @nagata03

Slide 2

Slide 2 text

ࣗݾ঺հ • Sho Nagata • όοΫΤϯυΤϯδχΞˏΧΧΫίϜ • ৯΂ϩάͷϚΠΫϩαʔϏεԽΛਪਐத • Ruby / Railsʢྺ͸9ϲ݄ʣ • GoΛֶͼ࢝Ίͯ3ϲ݄ • ޷͖ͳݴޠ͸Python ˏs_naga03 Sho Nagata nagata03

Slide 3

Slide 3 text

ʹͳΓ͍ͨ ͕޷͖ͳ ist

Slide 4

Slide 4 text

GoΛֶͼ࢝Ίͯށ࿭ͬͨ͜ͱ 1. ྫ֎ػߏ͕ͳ͍ 2. ΠϯλϑΣʔεͬͯͳΜͧʁ

Slide 5

Slide 5 text

1. ྫ֎ػߏ͕ͳ͍ • Goʹ͸ྫ֎ػߏ͕ͳ͍ʢRubyͰݴ͏ begin~rescue~end ͕ͳ͍ʣ • ؔ਺͸ෳ਺ͷ໭Γ஋Λฦ͢Α͏ఆٛ • Τϥʔ಺༰ΛׂΓ౰ͯΔerrorܕͷม਺Λฦ͢Α͏ʹ͢Δ • ؔ਺ͷ໭Γ஋ͰΤϥʔ͕ൃੜ͔ͨ͠Ͳ͏͔Λࣔ͢

Slide 6

Slide 6 text

1. ྫ֎ػߏ͕ͳ͍ • ؔ਺Λݺͼग़͢͝ͱʹifจͰΤϥʔ൑ఆ • ͘Ͳ͍ʁ • idiomԽͯͯ͠γϯϓϧ • ελοΫτϨʔεऔΕͳ͍ • pkg/errorsύοέʔδΛ࢖͑͹ελοΫτϨʔεऔΕΔʂ͚Ͳ… • osύοέʔδͷOpenؔ਺ • 2ͭ໨ͷ໭Γ஋͸errorܕ

Slide 7

Slide 7 text

1. ྫ֎ػߏ͕ͳ͍ Ҿ༻ɿeurekaϒϩάʮGoݴޠʹ͓͚ΔΤϥʔϋϯυϦϯάΛࠓҰ౓ৼΓฦΔʯ

Slide 8

Slide 8 text

2. ΠϯλϑΣʔεͬͯͳΜͧʁ • ܕͷҰछ • ܕͷॊೈੑΛ୲อ͢Δ • ʮͲͷΑ͏ͳϝιουΛ࣮૷͢Δ΂͖͔ʯΛنఆ

Slide 9

Slide 9 text

3. ΠϯλϑΣʔεͬͯͳΜͧʁ errorΠϯλϑΣʔεΛ࣮૷͢Δʹ͸ stringܕͷม਺Λฦ͢Error()ϝιουΛ࣮૷͢Ε͹ྑ͍ MyErrorܕʹerrorΠϯλϑΣʔεΛ࣮૷ MyErrorܕ͸errorܕͱͯ͠ѻ͑Δ ߏ଄ମͷMyErrorܕΛఆٛ

Slide 10

Slide 10 text

3. ΠϯλϑΣʔεͬͯͳΜͧʁ fmtύοέʔδ͸fmt.StringerΠϯλϑΣʔεΛ࣮૷ͨ͠ܕͰ͋Ε͹ Stringϝιου͕ฦ͢จࣈྻΛग़ྗʹ࢖༻ͯ͘͠ΕΔɻ https://github.com/golang/go/blob/master/src/fmt/print.go Tܕʹfmt.StringerΠϯλϑΣʔεΛ࣮૷

Slide 11

Slide 11 text

2. ΠϯλϑΣʔεͬͯͳΜͧʁ • interface{}ܕ͸͋ΒΏΔܕͱޓ׵ੑΛ࣋ͭʁ - ͋ΒΏΔܕ͸interface{}ܕͱͯ͠ѻ͑Δ - ͦͷٯ͸੒Γཱͨͳ͍

Slide 12

Slide 12 text

2. ΠϯλϑΣʔεͬͯͳΜͧʁ • ͋Δܕ͕ͲͷΠϯλϑΣʔεΛ࣮૷͍ͯ͠Δ͔͸͙͢Θ͔ Δͷʁ - godocίϚϯυʁ - go/typesύοέʔδʁ

Slide 13

Slide 13 text

·ͱΊ • Goʹ͸ྫ֎ػߏ͕ͳ͍ - ྫ֎ػߏ͕ͳͯ͘͘͢͝ࠔΔʂͱ͍͏͜ͱ͸ͳͦ͞͏ - ࣮ࡍGoΛ࢖͍ͬͯΔαʔϏεͰ͸ͲͷΑ͏ʹΤϥʔϋϯυϦϯάͯ͠ ͍Δͷ͔஌Γ͍ͨ • ΠϯλϑΣʔεΛ࢖͏͜ͱͰܕΛॊೈʹѻ͑Δ - ࢖͍ํΛݟ͍ͯΔ͏ͪʹҿΈࠐΊͯ͘Δ - ͲͷΠϯλϑΣʔεΛ࣮૷͍ͯ͠Δͷ͔͸Ͳ͏΍ͬͯௐ΂Δʁ

Slide 14

Slide 14 text

ࢀߟจݙ • ॻ੶ - ʮελʔςΟϯάGoݴޠʯ • eurekaϒϩά - ʮGoݴޠʹ͓͚ΔΤϥʔϋϯυϦϯάΛࠓҰ౓ৼΓฦΔʯ • Qiita - ʮΠϯλϑΣʔεͷ࣮૷ύλʔϯ #golangʯ@tenntenn • GitHub - ʮgo/golang ϦϙδτϦʯ

Slide 15

Slide 15 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ