Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
Search
fuqda
August 13, 2019
Programming
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
Otemachi.rb#20の発表資料です。
リファクタリングを利用した勉強方法の話をします。
fuqda
August 13, 2019
More Decks by fuqda
See All by fuqda
Composition API時代の Pub/Subパターンでの状態管理
fuqda
4
4.1k
RubyでPrettierを使ってみた
fuqda
0
420
RSpecによるOpen API自動テスト
fuqda
3
1.2k
OSSへの プルリクエスト作成の手引き
fuqda
1
380
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
260
OSS初心者がつまづきながらOSSマナーを学んでいく話
fuqda
4
3.5k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
670
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
620
Other Decks in Programming
See All in Programming
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
270
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
650
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
Foundry Localでエージェント開発
seosoft
0
170
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
200
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
440
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
160
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
56
38k
信頼性の目標を誰も求めてない
shubox
0
500
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
The untapped power of vector embeddings
frankvandijk
2
1.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Design in an AI World
tapps
1
310
Speed Design
sergeychernyshev
33
2.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Visualization
eitanlees
152
17k
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 ͝ਗ਼ௌ