Slide 1

Slide 1 text

ϊϯσεΫϫʔΧʔ޲͚ ϊʔίʔυαʔϏεͷͭΒΈɾ͏·Έ גࣜձࣾΧϛφγ ΞϓϦέʔγϣϯΤϯδχΞ ɹɹɹ ɹɹɹɹ໦ଜ Ұ੒

Slide 2

Slide 2 text

1. ΧϛφγͷαʔϏε঺հ a. ੡଄ݱ৔ͷݱঢ় b. ੡଄ݱ৔Λม͑ΔͨΊͷΧϛφγͷΞϓϩʔν 2. ͏·Έ a. ΧϛφγGoྺ b. ײͨ͡͏·Έ&֤ΤϯδχΞGoྺ 
 3. ։ൃʹ౰ͨͬͯͷͭΒΈ ຊ೔ͷΞδΣϯμ

Slide 3

Slide 3 text

1. ΧϛφγͷαʔϏε঺հ

Slide 4

Slide 4 text

ઃඋɾਗ਼૟ ཱྀ٬ɾӡ༌ ݐઃ ෱ࢱࢪઃ ੡଄ۀ εʔύʔɾখച ઀٬ۀ ҿ৯ళ ݱ৔Ͱಇ͘3,100ສਓ͕ɺࢴத৺Ͱඇޮ཰ͳΦϖϨʔγϣϯʹ೔ʑ௥ΘΕ͍ͯ·͢ɻ ϓϥΠϕʔτͰ͸εϚʔτϑΥϯΛ࢖͍ͬͯΔͷʹɺ৬৔Ͱ͸ͳ͔ͥࢴͱϖϯɺσδΧϝΛ࢖͏ඞཁ͕͋Δͷ͕ݱঢ়Ͱ͢ɻ ೔ຊͷबۀਓޱͷ໿൒਺͕PC΍IT͕࢖͑ͳ͍؀ڥͰಇ͍͍ͯ·͢ Χϛφγ͕ղܾ͍ͨ͜͠ͱ ೔ຊʹ͓͚Δ࿑ಇਓޱͷׂ߹ 9 σεΫ ϫʔΧʔ ϊϯσεΫ ϫʔΧʔ ˋ ˋ 52 48 ※ ಠཱߦ੓๏ਓ࿑ಇ੓ࡦݚڀɾݚमػߏʮ৬ۀผबۀऀ਺ʯΑΓ౰ࣾࢉग़

Slide 5

Slide 5 text

ه࿥ ֬ೝ ूܭɾՄࢹԽ ޱ಄Ͱࢦಋ ͢΂ͯਓྗʹΑΔۀ຿ΦϖϨʔγϣϯ

Slide 6

Slide 6 text

݁Ռͱͯ͠ϛε͕ଟൃ

Slide 7

Slide 7 text

̋×νΣοΫද ࢴͷνΣοΫϦετʢϫʔΫϑϩʔʣ ΧϛφγͰσδλϧԽ ϊʔίʔυͰݱ৔؅ཧΞϓϦΛ࡞Δ͜ͱ͕Ͱ͖Δ ɹۀ຿ϑϩʔΛσδλϧԽ͢Δ

Slide 8

Slide 8 text

৚݅෼ذ ܁Γฦ͠ LOOP IF-ELSE ଟ༷ͳσʔλܕ TYPE ɹϊʔίʔυ͚ͩͲɺᙱ͍ॴʹख͕ಧ͘

Slide 9

Slide 9 text

LOOP IF-ELSE TYPE ܁Γฦ̍͠ ܁Γฦ̎͠ ܁Γฦ̏͠ ਌ϊʔυ ճ౴ YESͷ৔߹ Noͷ৔߹ ໦ߏ଄Ͱදݱ ɹ಺෦ͷσʔλ͸໦ߏ଄Ͱఆ͍ٛͯ͠Δ

Slide 10

Slide 10 text

2. ΧϛφγͷGoྺͱ͏·Έ

Slide 11

Slide 11 text

- 2017೥ͷϓϩμΫτ։ൃ։͔࢝Β4೥໨ - Goαʔόબఆཧ༝ - ඪ४tool܈ͷ๛෋͞ - ౓ॏͳΔมߋʹڧ͍ - ܧঝ͕ଘࡏ͠ͳ͍ - Composition over inheritance (ܧঝΑΓ߹੒) - Πϯϑϥ΁ͷॊೈੑ - ΫϩείϯύΠϧ - ίϯςφԽͱͷ૬ੑ - ౰࣌Go࠾༻ࣄྫ͕গͳ͍ ɹΧϛφγͷGoྺͱ͏·Έ1

Slide 12

Slide 12 text

- ੩తܕ෇͚͕Ͱ͖Δ - 200௒ͷଟ֊૚ͷςʔϒϧ - IDEͷࣗಈิ׬ ɹΧϛφγͷGoྺͱ͏·Έ1 table ᶃ֊૚ߏ଄ʢ਌ࢠؔ܎ʣΛදݱ͢ΔͨΊͷςʔϒϧ ᶄσʔλͷܕ͝ͱʹςʔϒϧ ɹʢྫ͑͹ɺ਺஋ܕͱ೔෇ܕ͸ςʔϒϧఆ͕ٛҟͳΔʣ ɹɹetc...

Slide 13

Slide 13 text

ɹ։ൃʹ͓͚Δ͏·Έ2 (੩తܕ෇͚ݴޠͷதͰ΋) ະܦݧͷΤϯδχΞ͕शಘ͠΍͍͢ - ৽نೖࣾऀ্ཱ͕͙͕ͪ͢Δ - ౰ࣾ಺ͰͷGoܦݧऀׂ߹= 3/7 Go JavaScr ipt TypeScr ipt Python Elixir Ruby Java PHP C# C C++ VB Engineer A ○ ○ ○ ○ B ○ ○ ○ C ○ ○ ○ D ○ ○ ○ E ○ ○ ○ ○ ○ ○ F ○ ○ ○ G ○ ○ ○ ○ ○ ฐࣾͷೖࣾલͷΤϯδχΞ࢖༻ݴޠ

Slide 14

Slide 14 text

3.։ൃʹ౰ͨͬͯͷͭΒΈ

Slide 15

Slide 15 text

ɹͭΒΈ1 ίʔυߦ਺ͷ૿Ճ܏޲ - ϦϨʔγϣϯͷଟ͞ - Preload Λଟ༻

Slide 16

Slide 16 text

ɹͭΒΈ1 ίʔυߦ਺ͷ૿Ճ܏޲ - ϦϨʔγϣϯͷଟ͞ - genericsͷ༗ແ -> switchจʹཔΒ͟ΔΛಘͳ͍ - ໦ߏ଄ͷσʔλ-> forloopͷଟ༻ - ؔ࿈ςʔϒϧͷ૿Ճ - ਌ࢠnodesͷϦϨʔγϣϯ

Slide 17

Slide 17 text

ɹͭΒΈ2 RDBͰͷੑೳ௿Լ - ؔ࿈ςʔϒϧͷ૿ՃʹΑΓɺapplication ⁶ RDBؒͷ௨৴ճ਺ͷ૿Ճ - application ⁶ RDBؒͷ௨৴଎౓͕ϘϧτωοΫʹ gtx. Preload("Rel-A"). Preload("Rel-B"). Preload("Rel-C"). Find(s.ctx, &mainTable).Error; ORMΛ࢖ͬͨίʔυ select ~~~ select ~~~ select ~~~ ࣮ΫΤϦ - ORMଆͰͷେྔͷΫΤϦൃߦ 
 - ࠶ىॲཧ಺ͰͷDBΞΫηεॲཧΛॻ ͍ͯ͠·͍ɺେྔͷΫΤϦൃߦ

Slide 18

Slide 18 text

ɹͭΒΈ2 RDBͰͷੑೳ௿Լ΁ͷରԠ Application ଆ - ΫΤϦൃߦॲཧͱ࠶ىॲཧΛ෼཭ - ORM࢖༻ -> (ςʔϒϧ݁߹Λߦ͏Α͏ͳ) ੜΫΤϦʹมߋ → DB ΫΤϦൃߦճ਺Λ཈͑Δ͜ͱ͕Ͱ͖ͨ DB ଆ - ςʔϒϧ݁߹Ͱ࢖༻͞ΕΔ֎෦Ωʔʹର͢Δindexͷ௥Ճ → ΫΤϦ୯ମͷੑೳͷվળ

Slide 19

Slide 19 text

ɹͭΒΈ3 ςετσʔλͷ༻ҙ ଟ֊૚ͷςʔϒϧɾϦϨʔγϣϯঢ়گԼͰͷςετσʔλ४උ - ౰ॳJsonͰ۪௚ʹॻ͍ͯ͠·͕ͬͨͨΊʹɺAddReport ςετ΁ͷ1 test data ͚ͩͰ3000ߦ΄Ͳʹ

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

ɹͭΒΈ3 ςετσʔλͷ༻ҙ ଟ֊૚ͷςʔϒϧɾϦϨʔγϣϯঢ়گԼͰͷςετσʔλ४උ - ౰ॳJsonͰ۪௚ʹॻ͍ͯ͠·͕ͬͨͨΊʹɺAddReport ςετ΁ͷ1 test data ͚ͩͰ3000ߦ΄Ͳʹ

Slide 22

Slide 22 text

ɹͭΒΈ3 ςετσʔλ४උ΁ͷରԠ Json -> ֎෦module (factory-go) ʹͯɺ֤ objectΛੜ੒͢ΔΑ͏ʹͨ͠

Slide 23

Slide 23 text

ɾϊʔίʔυͰ࡞੒Ͱ͖Δݱ৔؅ཧΞϓϦʹΑΓɺݱ৔ͷDXΛՃ଎ͤ͞Α͏ ͱ͍ͯ͠Δ ɾ੩తܕ෇͚ͷಛੑɺෑډͷ௿͞ͷ఺ͰGoͷԸܙΛड͚͍ͯΔ ɾҰํͰɺଟ֊૚ͳσʔλߏ଄Ώ͑ͷίʔυ૿Ճ܏޲ɺࠓޙ૿͍͑ͯ͘Ͱ͋Ζ ͏RDB΁ͷΞΫηεɺςετσʔλ౳΁ͷରԠ͕՝୊ײͱͯ͋͠Δ ɹ·ͱΊ

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

ΦϑΟεʹ͜΋ͬͯɺ૝૾͚ͩͰҙࢥܾఆ͢Δɻ టष͍͜ͱ͔Βڑ཭Λஔ͖ɺखΛൈ͘ɻ ސ٬ͱ࿩͞ͳ͍ɻݱ৔ͷ੠Λฉ͜͏ͱ͠ͳ͍ɻ Ϣʔβʔࢹ఺Ͱ͸ͳ͘ɺࣗࣾ౎߹Λ༏ઌ͢Δɻ Don'ts ݱ৔ʹϖΠϯΛମײ͠ʹߦ͘ϝϯόʔ Ϣʔβʔͷ੠Λ௚઀ฉͨ͘Ίɺ෦ॺ໰Θͣݱ৔΁ ݱ৔υϦϒϯͳΤϐιʔυ

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

ఆྫϛʔςΟϯάɾࣄۀઓུϛʔςΟϯά શࣾɾνʔϜͰͷΦϑαΠτϛʔςΟϯά ৘ใͷಁ໌ੑɺຊԻΛͿ͚ͭ߹͏Φʔϓϯίϛϡχέʔγϣϯ શ։ΦʔϓϯͳΤϐιʔυ ࣗ෼ͷྑ͍ͱ͜Ζ΍ɺද໘తͳ࿩͔͠ڞ༗͠ͳ͍ɻ ϓϥΠυ͕ߴ͘ɺΞυόΠεΛ߈ܸͩͱड͚औΔɻ ٞ࿦ʹͳΔͱػݏ͕ѱ͘ͳΔɻ ౎߹ͷ͍͍ӕΛͭ͘ɻ ࿦ཧ΍ɺ਺஋ͷΈͰҙࢥܾఆ͠ɺҙݟΛฉ͔ͳ͍ɻ ஥ྑ͜͠Α͠ͰɺͿ͔ͭΔ͜ͱΛڪΕΔɻ ຊਓ͕͍ͳ͍৔ॴͰݴ͏ɻ Don'ts શࣾһͰࣗࣾͷΧϧνϟʔʹ͍ͭͯҙݟΛग़͠߹͏ ΤϯδχΞνʔϜͷϛʔςΟϯάͷ༷ࢠ ਓੜνϟʔτൃද

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

ා͕ͬͯνϟϨϯδ͠ͳ͍ɻ ࣦഊͯ͠΋Կ΋ֶ͹ͳ͍ɻ ࣦഊΛڐ༰͢ΔจԽΛצҧ͍͍ͯ͠Δɻ ͙͢΁ͨ͜ΕΔɻมʹߟ͑͗͢Δɻ ϓϥΠυ͕ߴ͍ɻ ࢹ࠲ɾࢹ఺͕௿͍ɻߴΈΛ໨ࢦ͞ͳ͍ɻ Don'ts Χϛφγͷ࢓ࣄͷελΠϧɻߟ͑ൈ͍ͨΒɺ·ͣ͸΍ͬͯΈΔɻ β൛ϚΠϯυͳΤϐιʔυ ࠾༻΢ΟογϡϦετ νʔϜͷ࢓૊Έͮ͘Γ ࢓૊Έͮ͘Γ΍੍౓ γϦʔζAࢿۚௐୡ ։ൃϓϩδΣΫτ 3

Slide 30

Slide 30 text

EM/ΞϓϦΤϯδχΞ/SRE ੵۃ࠾༻த