Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
Search
fuqda
August 13, 2019
Programming
1
1.1k
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
Otemachi.rb#20の発表資料です。
リファクタリングを利用した勉強方法の話をします。
fuqda
August 13, 2019
Tweet
Share
More Decks by fuqda
See All by fuqda
Composition API時代の Pub/Subパターンでの状態管理
fuqda
4
3.8k
RubyでPrettierを使ってみた
fuqda
0
350
RSpecによるOpen API自動テスト
fuqda
3
1.1k
OSSへの プルリクエスト作成の手引き
fuqda
2
320
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
200
OSS初心者がつまづきながらOSSマナーを学んでいく話
fuqda
4
3.3k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
600
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
540
Other Decks in Programming
See All in Programming
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
500
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 1
philipschwarz
PRO
0
110
Duke on CRaC with Jakarta EE
ivargrimstad
0
300
Reactive Thinking with Signals and the new Resource API
manfredsteyer
PRO
0
130
JJUG CCC 2025 Fall: Virtual Thread Deep Dive
ternbusty
3
500
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
4
340
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
11
3.6k
「正規表現をつくる」をつくる / make "make regex"
makenowjust
1
970
All(?) About Point Sets
hole
0
230
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
4
820
2025 컴포즈 마법사
jisungbin
0
160
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
620
Featured
See All Featured
The Invisible Side of Design
smashingmag
302
51k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Become a Pro
speakerdeck
PRO
30
5.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Mobile First: as difficult as doing things right
swwweet
225
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Balancing Empowerment & Direction
lara
5
770
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
990
Transcript
ࠇྺ࢙ϦϙδτϦΛ ͬͨϦϑΝΫλϦϯά ษڧ๏ͷεεϝ ɹɹɹɹɹɹɹɹ fuqda(@fuqda90) 2019.08.14(Wed) Otemachi.rb#20
ࣗݾհ 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 ͝ਗ਼ௌ