Otemachi.rb#20の発表資料です。 リファクタリングを利用した勉強方法の話をします。
ࠇྺ࢙ϦϙδτϦΛͬͨϦϑΝΫλϦϯάษڧ๏ͷεεϝɹɹɹɹɹɹɹɹ fuqda(@fuqda90)2019.08.14(Wed) Otemachi.rb#20
View Slide
ࣗݾհ Tama.rb Organizor Work @ STORES.jp, inc. RubyͰ!Λ৯ΔΑ͏ʹͳΓ2Ͱ͢Twitter : fuqda(@fuqda90) Github : Shigeyuki-fukuda(JU)VC
ࠓͷ
࣮ۙફͨ݁͠Ռ ޮՌ͕͋ͬͨΦεεϝษڧ๏ͷ"
ʲ࣭ʳ ٕज़ॻಡΜͩޙ࣮ફͯ͠·͔͢ʁ
ʲ࣭2ʳ ಡΜ͚ͩͩͩͱʹ͍͔ͨෆ҆…ͱ͍͏͔…Ε·ͤΜ͔?(ͪͳΈʹͦ͏Ͱ͢#)
ؾܰʹຊͰֶΜͩ༰Λ ࣮ફ͍ͨ͠
(࠷ѱյΕͯྑ͍ΞϓϦͰ$)
ͦ͜ͰΦεεϝ͍ͨ͠ʂ
ۦ͚ग़͠ͷࠒʹॻ͍ͨίʔυ (ࠇྺ࢙ϦϙδτϦ)ͷϦϑΝΫλϦϯά %✨
ཧ༝
୯७ʹϦϑΝΫλϦϯάग़དྷΔ༨͕ଟ͍→͢༨͕গͳ͍ͱ࡞ۀͯͯͭ͠·Βͳ͍ͷͰɹۃʹ伱ͩΒ͚ͷίʔυΛϘίϘίʹ͘͢Β͍͕ɹࡐͱͯ͠ྑ͍ ษڧΛͨ͠ݱ࣌ͱ͢Δલͷ͕ࠩ໌֬→Ͳͷ͘Β͍ʹ͍͍ͯΔ͔ʁΛ͕ࣝͳ͔ͬͨࠒɹͱൺΔ͜ͱͰݱঢ়ͷཧղͷѲʹཱͪͦ͏
ͬͱݴ͏ͱϖΞϓϩͰΔͷΛΦεεϝ͍ͨ͠✋
ϖΞϓϩͰΔํ͕͍͍ཧ༝ ࢥߟͷཧ͕ग़དྷΔ→ҰਓͩͱԿͱͳͬͪ͘͜ͷίʔυͷํ͕ྑ͍͔Βͱɹᐆດʹ͢Δͱ͜ΖΛ૬ख͕͍ΔͱԿނͦͷॻ͖ํ͕ɹྑ͍ͷ͔Λઆ໌͢Δඞཁ͕ग़ͯ͘ΔʂɹͦͷͨΊઆ໌ͷաఔͰᐆດͳཧղʹؾ͚ͯྑ͍→૬खͱࣗͰΞϓϩʔν͕ҧ͏໘͕͋ΔͣͳͷͰɹͦΕ͕ͦͷ··ֶͼʹͳΔ
࣮ࡍʹ͍ͬͯͬͨ͜ͱ
Tama.rbͷ˞ࣗݾհ༻ΨνϟΞϓϦͷ ϦϑΝΫλϦϯά※Tama.rbؔऀͷࢯ͕ۦ͚ग़͠ͷࠒʹ࡞ͬͨΞϓϦΛڐՄΛΒͬͯ͢͜ͱʹ…ϝϯόʔ@fuqda @ken3ypa
ʲΞϓϦ֓ཁʳࣗݾհΨνϟɾQuestion(࣭)ɾConjunction(ଓࢺ)ɾTheme(ςʔϚ)͜ΕΒͷΧςΰϦʔʹ֘͢ΔొϫʔυΛΨνϟͷΑ͏ʹҾ͍ͯϥϯμϜͰը໘ʹදࣔͦ͠ΕΛݩʹࣗݾհͯ͠Β͏ΞϓϦ
ϦϑΝΫλϦϯάͷΰʔϧ ៉ྷͳίʔυʹ͢(ͦΕ͚ͩ͡Όͳ͍)⭕ ۦ͚ग़͔͠Βࠓ·ͰֶΜͩΦϒδΣΫτࢦͷΞϨίϨ֤छॻ੶ͷֶश༰ΛΞτϓοτग़དྷΔ͔ΛϦϑΝΫλϦϯάͷதͰ֬ೝ͢Δ͜ͱ
ϦϑΝΫλϦϯά͢Δ্ͰνΣοΫ߲ͨ͠
ɾ໋໊ͷଥੑνΣοΫɹ (Ϋϥε໊ɾϝιου໊ɾΧϥϜ໊etc…)ͦͷ໊લͰΘΔʁex)ͱ͋ΔϕϯνϟʔاۀͰϗϯτʹ͋ͬͨා໋໊͍class EmailMailer→Կʹର͢Δϝʔϧ͕͍ͨ͠Ϋϥεͳͷ͔શ͘ΘΒΜ ͗͢Δ໋໊͡Όͳ͍ʁex) Ϋϥε໊ɿGroup, Operation→໊͍લʹprefix͕ඞཁͦ͏γεςϜ্Ϳ͔ͭΔ໊લ͡Όͳ͍ʁex) ΧϥϜ໊ɿsize, count→ͦͷੲϑΝογϣϯܥαʔϏεͰͷαΠζΛsizeͱ͍͏ΧϥϜͰཧͨ͠ͱ͜ΖORϚούʔͷ෦ͷϝιουͱͿ͔ͭͬͯҙਤ͠ͳ͍ڍಈΛͨ͜͠ͱ͕͋ͬͨͦ͏ͳ
ɾΫΤϦͷଥੑνΣοΫ
ɾϞσϦϯάͷଥੑνΣοΫ ຊʹ͜ͷϞσϧඞཁʁ→QuestionϞσϧҰͭʹɹ ActiveRecord::EnumΛੜͯ͠ཧ͢Εɹ Conjunction(ଓࢺ)ͱɹ ThemeϞσϧෆཁͳͷͰʁ※Πϝʔδenum category: { conjunction: 0, theme: 1 }
ɾRailsత/OOPత͔νΣοΫ ͕దʹׂ͞ΕͯΔʁ→AΫϥε͕BΫϥεͷதͷॲཧΛΓա͗ͯͳ͍͔→ԿͰͷαʔϏεΫϥεͱ͔࡞ͬͯͨΒຣࡴ(ࠓճແ͠)͜ͷ࣮ͳ͍ͱμϝʁ→ෳͷϞσϧͰڞ௨ͨ͠ॲཧ͕ɹActiveSupport::Concernʹ·ͱΊΒΕ͍͕ͯͨͦͦແବͳϞσϧΛআͨ͠ΒActiveSupport::Concern͍Βͳ͘ͳ͍ʁ^_^;ɹ➡ ຣࡴ
૯
ɾϦϑΝΫλϦϯάͰग़ͯ͘ΔΞΠσΞɹͦͷͷ͕ࠓͷࣗͷ࣮ྗɾۀͩͱେਓͷࣄͰϦϑΝΫλϦϯάʹɹͳ͔ͳ͔खΛ͚ΒΕͳ͍͔ͳͷͰ…झຯͷίʔυͰͿͬյ͠ͳ͕ΒֶΜͰɹۀίʔυʹөग़དྷͨΒྑͦ͞͏✨ɾϖΞϓϩɾϞϒϓϩͰࠓճͷΑ͏ͳϦϑΝΫλϦϯάΛ͢Δͱ୯७ʹָ͍͠ & ษڧʹͳΔͷͰʑͷֶशϚϯωϦଧഁʹ͓ࢼ͋͠Ε
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠3͝ਗ਼ௌ