Slide 1

Slide 1 text

αʔϏε͕θϩ͔ΒNԯԁن໛ʹͳΔ·Ͱʹ ࣮ફͨ͠7ͭͷ΍͍͖ͬͯ BATTLE CONFERENCE UNDER30 #2019 on 2019/07/06 @kikunantoka

Slide 2

Slide 2 text

ࣗݾ঺հ about: name: Fumitaka Kikukawa work_at: giftee Inc. job: engineer twitter: @kikunantoka age: 28 // ೖࣾͯ͠3೥ऑ // ΪϦΪϦU30

Slide 3

Slide 3 text

ݸਓ։ൃ https://nakamy.com

Slide 4

Slide 4 text

ϘʔυήʔϜ੍࡞ https://tapir-studio.com

Slide 5

Slide 5 text

αʔϏε͕θϩ͔ΒNԯԁن໛ʹͳΔ·Ͱʹ ࣮ફͨ͠7ͭͷ΍͍͖ͬͯ BATTLE CONFERENCE UNDER30 #2019 on 2019/07/06 @kikunantoka \ ͲΜͳαʔϏεΛ։ൃ͍ͯ͠Δͷ͔Λ࿩͠·͢ /

Slide 6

Slide 6 text

• ೔ࠒͷʮখ͞ͳ͋Γ͕ͱ͏ʯͷؾ࣋ͪʹఴ͑ͯɺΪϑτΛଃΕΔαʔϏε • ड͚औͬͨΪϑτ͸ձһొ࿥ͳ͠Ͱ͓ళͰ঎඼ͱަ׵͕Ͱ͖Δ To C

Slide 7

Slide 7 text

• Ϊϑτ͸ϢχʔΫͳURLͳͷͰɺීஈͷLINEͳͲʹ؆୯ʹఴ͑Δ͜ͱ͕Ͱ͖Δ To C https://giftee.co/r/------

Slide 8

Slide 8 text

• ΪϑτͰਓͱਓΛͭͳ͙αʔϏε To C

Slide 9

Slide 9 text

• ΪϑτͰਓͱاۀ΋ͭͳ͍Ͱ͍Δ To B

Slide 10

Slide 10 text

• ΪϑτͷURLΛೲ඼ͯ͠ΪϑτΛΩϟϯϖʔϯʹ׆༻ͯ͠΋Β͏Ϗδωε To B https://giftee.co/r/------ https://giftee.co/r/------ https://giftee.co/r/------ https://giftee.co/r/------ https://giftee.co/r/------ https://giftee.co/r/------ https://giftee.co/r/------

Slide 11

Slide 11 text

• ΪϑτͷURLΛೲ඼ͯ͠ΪϑτΛΩϟϯϖʔϯʹ׆༻ͯ͠΋Β͏Ϗδωε To B

Slide 12

Slide 12 text

• தʹ͸ɺΪϑτΛ্ख͘׆༻͢Δखஈ͕ͳ͍ΫϥΠΞϯτ΋ ΪϑτΛଃΔखஈ͕ͳ͍ To B

Slide 13

Slide 13 text

ᶃ ϑΥϩʔ&ϦπΠʔτ ᶄ Twitterೝূ ᶅ ͦͷ৔Ͱநબ ᶆ Ϊϑτ͕΋Β͑Δ • Πϯελϯτ΢ΟϯΩϟϯϖʔϯΛؾܰʹ࣮ࢪ͢ΔͨΊͷϓϥοτϑΥʔϜΛ։ൃ To B

Slide 14

Slide 14 text

HJGUFFΠϯελϯτ΢ΟϯGPS5XJUUFSͷڧΈᶃ நબ͔Βܠ඼ͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ நબγεςϜ ʢΠϯελϯτ΢Οϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠ඼ʣ ϦΞϧλΠϜʹநબɺ ͦͷ৔Ͱܠ඼Λ෇༩ aࣾ಺Ͱ($1ͱུ͞Εͩ͢ʜ

Slide 15

Slide 15 text

Πϯϑϥ aࣾ಺Ͱ($1ͱུ͞Εͩ͢ʜ ݴޠ ϑϨʔϜϫʔΫ Λࢧ͑Δٕज़

Slide 16

Slide 16 text

αʔϏε͕θϩ͔ΒNԯԁن໛ʹͳΔ·Ͱʹ ࣮ફͨ͠7ͭͷ΍͍͖ͬͯ BATTLE CONFERENCE UNDER30 #2019 on 2019/07/06 @kikunantoka / ͲΜͳ͜ͱΛҙࣝ͠ͳ͕Β։ൃ͖͔ͯͨ͠Λ࿩͠·͢ \

Slide 17

Slide 17 text

ϓϥοτϑΥʔϜΛ࡞͍ͬͯ͘ 1

Slide 18

Slide 18 text

ϓϥοτϑΥʔϜΛ࡞͍ͬͯ͘ • B޲͚αʔϏεͩͱडୗ։ൃʹͳΓ͕ͪ • GCP͸͋ΔΫϥΠΞϯτ͔ΒʮTwitterͷΩϟϯϖʔϯΛ΍Γ͍ͨʯͱ૬ஊ͞Εͨ͜ ͱ͔Β࢝·ͬͨ • ೲظ͕ഭ͍͕ͬͯͨɺฐࣾͷ༏लͳBizνʔϜͳΒଞʹ΋ͲΜͲΜҊ݅Λऔͬͯ͘Δ ͱࢥͬͨͷͰɺ൚༻తͳϓϥοτϑΥʔϜͱͯ͠։ൃΛ࢝Ίͨ • ػೳ௥Ճʹ͓͍ͯ΋ͦͷػೳ͕ଞͷΫϥΠΞϯτ΋ඞཁͱ͍ͯ͠Δ͔ΛݟۃΊΔ

Slide 19

Slide 19 text

খ࢝͘͞Ί͍ͯ͘ 2

Slide 20

Slide 20 text

খ࢝͘͞Ί͍ͯ͘ • ૝ఆ͗͢͠ͳ͍ɺখ͘͞։ൃͯ͠ɺখ͘͞ݕূ͢Δ • ࠷ॳ͸Ϗδωεతʹ΋্ख͍͔͘͘ݟ͑ͳ͍ͷͰɺΠςϨʔςΟϒʹ։ൃ͍ͯ͘͠ • ൚༻తʹ͗͢͠ΔͱDBͷ੍໿Λ͔͚ͮΒ͔ͬͨΓ͢ΔͷͰɺόϥϯεΛͱΔ • 2೥ӡ༻ͯ͠Έͯɺ͍͔ͭඞཁ͔΋͠Εͳ͍…͸ແବʹͳͬͨ͜ͱ͕ଟ͔ͬͨ • YAGNI ͕ຊ౰ʹେ੾

Slide 21

Slide 21 text

OneνʔϜͰ։ൃ͍ͯ͘͠ 3

Slide 22

Slide 22 text

OneνʔϜͰ։ൃ͍ͯ͘͠ • B޲͚αʔϏεͩͱΫϥΠΞϯτͷ੠ΛҰ൪ฉ͍͍ͯΔͷ͸BizνʔϜ • िʹ1౓ͷఆྫΛBizνʔϜͱ߹ಉͰߦ͏ • ࠲੮͸ಉ͡ౡ಺Ͱ޲͔͍߹ͬͯ࠲Δ • ೲಘײΛ࣋ͬͯ։ൃ͢Δ • ࣌ʹ͸ΫϥΠΞϯτʹձ͍ʹߦͬͯੜͷ੠Λฉ͖ʹ͍͘ • B޲͚ͷLPΛҰॹʹ࡞ͬͨΓ΋ͨ͠

Slide 23

Slide 23 text

PMFୡ੒ޙ͸ػೳΛΨϯΨϯ։ൃ͍ͯ͘͠ 4

Slide 24

Slide 24 text

PMFୡ੒ޙ͸ػೳΛΨϯΨϯ։ൃ͍ͯ͘͠ • ϓϩμΫτͱͯ͠ஹ͕͠ݟ͑ͨΒશྗͰίϛοτ͢Δ • ؅ཧը໘։ൃͳͲɺӡ༻λεΫΛଞͷਓʹҠৡ͍ͯͨ͘͠Ίͷ։ൃΛߦ͍ɺ։ൃʹ ॆͯΒΕΔ࣌ؒΛ૿΍͍ͯ͘͠ • αʔϏε͸ӡ༻͕࢝·͔ͬͯΒ͕ຊ൪ • LINEೝূ΍ίʔυೝূͳͲɺೝূͷύλʔϯΛ૿΍͍ͯ͘͠ • ը໘ΧελϚΠζͳͲͷΦϓγϣϯͰՔ͍Ͱ͍͘

Slide 25

Slide 25 text

αʔϏεΛεέʔϥϒϧʹ͍ͯ͘͠ 5

Slide 26

Slide 26 text

GCPͷ2೥ؒʢ˞Πϝʔδʣ • αʔϏεͷ੒௕ͱͱ΋ʹΩϟϯϖʔϯͷ੾Ε͕ؒͳ͘ͳ͖ͬͯͨ • ஍্೾࿈ಈͳͲͷେܕҊ݅΋ೖͬͯ͘ΔΑ͏ʹͳ͖ͬͯͨ • αʔϏεΛམͱͤͳ͍ • Ϩίʔυ਺΋૿͖͑ͯͨ

Slide 27

Slide 27 text

αʔϏεΛεέʔϥϒϧʹ͍ͯ͘͠ • εέʔϧ͢ΔίʔυΛॻ͘ / ϩοΫॲཧɺεϩʔΫΤϦʹ஫ҙ͢Δ • ෛՙݕূͯ͠औΓআ͍͍ͯ͘ • Elastic Beanstalk Λ࢖ͬͯWebαʔόΛ৑௕Խ͠εέʔϥϒϧʹͨ͠ • RDSΛ Aurora ʹ͢Δ͜ͱͰεέʔϧΞοϓͷμ΢ϯλΠϜΛগͳͨ͘͠ • ͍ͭͰ΋εέʔϧΞ΢τ / εέʔϧΠϯͰ͖Δ؀ڥΛ੔͑Δ͜ͱͰΠϯϑϥඅ༻Λ ཈͑Δ͜ͱ͕Ͱ͖ͨ

Slide 28

Slide 28 text

LINEϓογϡ഑৴ʹ΋଱͑ΒΕͨ ☺ ʊਓਓਓਓਓਓਓਓਓਓਓʊ ʼ ࠷େ෼଎30ສϦΫΤετ ʻ ʉY^Y^Y^Y^Y^Y^Y^Y^ʉ • ༑ͩͪ਺2300ສͷΞΧ΢ϯτͰLINEϓογϡΛߦͬͨ݁Ռ

Slide 29

Slide 29 text

ఆظతʹDBͷ੍໿Λݟ௚͍ͯ͘͠ 6

Slide 30

Slide 30 text

ఆظతʹDBͷ੍໿Λݟ௚͍ͯ͘͠ • ϚΠάϨʔγϣϯΛྲྀͨ݁͠Ռͷ db/schema.rb ϑΝΠϧΛ֬ೝ͢Δ • σʔλͷෆ੔߹Λͳ͘͢࠷ޙͷࡆ͸DBͷ੍໿ • ϨϏϡʔͰݟಀ͍ͯͨ͠͏͔ͬΓ੍໿ுΓ๨ΕΛݕ஌Ͱ͖Δ • ౰࣌ͱ૝ఆ͕มΘ͍ͬͯΔ৔߹΋͋Δ • ෆཁͳςʔϒϧΛ࡟আͰ͖Δ • Ϩίʔυ͕ཷ·͔ͬͯΒ੍໿ΛுΓ௚͢ͷ͸େม

Slide 31

Slide 31 text

౰ͨΓલͷ͜ͱΛ౰ͨΓલʹ΍͍ͬͯ͘ 7

Slide 32

Slide 32 text

LinterΛద༻͢Δ • Rubyͩͱ Rubocop • ϝϯόʔ͕OSS׆ಈ΋ҙࣝͰ͖ΔΑ͏ʹrubocop.yml͸Railsʹ४ڌͨ͠ • ൿ఻ͷλϨʢಠࣗϧʔϧʣ͸ͳΔ΂͘࡞Βͳ͍

Slide 33

Slide 33 text

ΤϥʔτϥοΩϯάαʔϏε͸݈શͳঢ়ଶΛอͭ • ேձͰൃੜͨ͠Τϥʔͷ୨Է͠Λ΍Δ • SentryΛͪΌΜͱӡ༻͢Δ

Slide 34

Slide 34 text

ΤϥʔτϥοΩϯάαʔϏε͸݈શͳঢ়ଶΛอͭ • ղܾͨ͠໰୊͸Resolve • 90೔Ҏ಺ʹରԠ͢Δ • ֎෦αʔϏεىҼͷ΋ͷ͸10 times / minͳͲͰIgnore • ֎෦αʔϏεͰେ͖ͳো֐͕ى͖͍ͯͨ࣌ʹ௨஌͕ͪΌΜͱདྷΔ

Slide 35

Slide 35 text

Ruby΍Railsͷόʔδϣϯ͸࠷৽ʹอͭ • ηΩϡϦςΟΞοϓσʔτ͕͍ͭͰ΋Ͱ͖Δ؀ڥΛ੔͑Δ • 2೥ӡ༻͍ͯ͠ΔαʔϏε͕ͩɺRuby (2.6.3) ΋Rails (5.2.3)΋࠷৽ • Ұྫͱͯ͠ɺRubyͷόʔδϣϯΛ্͛Δ͚ͩͰɺCSVͷಡΈࠐΈ / ॻ͖ࠐΈͷߴ଎ ԽͷϝϦοτΛڗडͰ͖Δ • GemͷΞοϓσʔτʹ͸ Dependabot Λ׆༻͢Δ • ͨͬͨͷ2೥͚ͩͲɺ͜ͷੵΈॏͶ͕େ੾

Slide 36

Slide 36 text

αʔϏε͕੒௕͍ͯ͘͠த ౰ͨΓલͷ͜ͱΛ౰ͨΓલʹ΍Δͷ ΊͬͪΌେมͳͷͰ ΈΜͳͰ΍͍͖ͬͯ·͠ΐ͏

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

ίϚʔγϟϧ - We are hiring !!!