Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
4年の開発が積み重なったアプリへのリファクタリング手法
Search
Jun Ikeda
March 12, 2018
Technology
2
2.4k
4年の開発が積み重なったアプリへのリファクタリング手法
Jun Ikeda
March 12, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
390
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
320
pprof vs runtime/trace (FlightRecorder)
task4233
0
160
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
930
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
130
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.8k
AI ReadyなData PlatformとしてのAutonomous Databaseアップデート
oracle4engineer
PRO
0
160
What is BigQuery?
aizack_harks
0
130
ZOZOのAI活用実践〜社内基盤からサービス応用まで〜
zozotech
PRO
0
160
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
6
2.2k
それでも私はContextに値を詰めたい | Go Conference 2025 / go conference 2025 fill context
budougumi0617
4
1.2k
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
100
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How to Think Like a Performance Engineer
csswizardry
27
2k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
GitHub's CSS Performance
jonrohan
1032
460k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Optimizing for Happiness
mojombo
379
70k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
580
Making the Leap to Tech Lead
cromwellryan
135
9.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Typedesign – Prime Four
hannesfritz
42
2.8k
Transcript
ͷ։ൃ͕ੵΈॏͳͬͨ ΞϓϦͷϦϑΝΫλϦϯάख๏ :BIPP+"1"/ాಯ 1
w γεςϜͱνʔϜΛΔ w ͏ٕज़ΛܾΊΔ w औΓΜͰ͍Δઃܭख๏ w औΓΜͩ݁Ռ ࣍ 2
˞͋͘·Ͱख๏ઃܭͷҰྫͰ͢ɻ 3
γεςϜͱνʔϜΛΔ 4
w ݄ʹϦϦʔεͯ͠ܦ͍ͬͯΔ w .71.77.ͳͲͷΞʔΩςΫνϟະಋೖ w "DUJWJUZ'SBHNFOUʹϩδοΫ͕࣮͞Εͯ ͍ΔՕॴଟ͍ w ࣭ͱ։ൃεϐʔυͷ୲อ͕͍͠ঢ়ଶʹ :BIPPχϡʔεΞϓϦ
5
νʔϜͷঢ়گ w "OESPJEΤϯδχΞ໊ɻ w "͞Μɿ͘Β͍୲ w #͞Μɿ͘Β͍୲ w ࢲɿ݄͔Β୲ 6
w .71.77.ͳͲͷΞʔΩςΫνϟະಋೖ w 7JFXʹϩδοΫ͕࣮͞Ε͍ͯΔ w ਓͷதͩͱ͕ࣗҰ൪ઃܭͷܦݧ͋Δ ίʔυݹ͍͠ɺͬͦ͘͞ϦϑΝΫλͯ͠Δʂ 7
w ؒ.71.77.ͷΈͳ͠ w 7JFXʹϩδοΫ͕࣮͞Ε͍ͯΔ w ਓͷதͩͱ͚ࣗͩγχΞΤϯδχΞɺઃܭͷܦݧ͋Δ ίʔυݹ͍͠ɺͬͦ͘͞ϦϑΝΫλͯ͠Δʂ μϝ 8
͍͖ͳΓணख͠ͳ͍ w αʔϏεγεςϜͷ͜ͱΛΒͳ͍ͱྑ͍બ͕Ͱ͖ͳ͍ɻ w ։ൃνʔϜͰߦ͏ͷɻνʔϜϝϯόʔΛΔ͜ͱେɻ w ݱίʔυͰଟ͘ͷϢʔβʔʹͬͯΒ͍ͬͯΔ͠ɺ ച্্͍͛ͯΔɻಈ͍͍ͯΔίʔυʹͬͱϦεϖΫτΛɻ w ϲ݄͘Β͍։ൃۀΛߦ͍ͳ͕Β؍ͨ͠ɻ
9
؍ɿγεςϜΛΔ w ϩʔΧϧ%#ͷΩϟογϡ w هࣄछผͷ͕ࣝଟ͍ ΧςΰϦɾτϐοΫεɾ߸֎ w #''ͳ͘ɺෳͷ"1*Λୟ͍ ͯͭͷϦετΛ࡞Δ͜ͱඞ
ཁ γεςϜͷಛੑ 10
؍ɿγεςϜΛΔ w ϩʔΧϧ%#ͷΩϟογϡ w هࣄछผͷ͕ࣝଟ͍ ΧςΰϦɾτϐοΫεɾ߸֎ w #''ͳ͘ɺෳͷ"1*Λୟ͍ ͯͭͷϦετΛ࡞Δ͜ͱඞ
ཁ γεςϜͷಛੑ w σʔλऔಘઌΛநԽ͍ͨ͠ w ಛఆൣғͷؔ৺ࣄΛՕॴʹू ͍ͨ͠ w ෳͷ"1*͔ΒඇಉظͰऔಘɺ ͪ߹ΘͤɺΈ߹Θͤ ղܾ͍ͨ͜͠ͱ 10
w ΞϓϦʹݶΒͣ χϡʔεαʔϏεͷ͕ࣝ๛ w 7JFXपΓͷ࣮͕ಘҙ w 3Y+BWB%*ͷܦݧ ͋·Γͳͦ͞͏ ؍ɿνʔϜΛΔ 11
w ΞϓϦʹݶΒͣ χϡʔεαʔϏεͷ͕ࣝ๛ w 7JFXपΓͷ࣮͕ಘҙ w 3Y+BWB%*ͷܦݧ ͋·Γͳͦ͞͏ ؍ɿνʔϜΛΔ w
ͷڥքਓʹஅ ͯ͠Β͓͏ w ະܦݧͷٕज़Λͨ͘͞Μಋೖ ͢Δͷֶशίετߴ͍ 11
͏ٕज़ΛܾΊΔ 12
ࢦ͢͜ͱΛ໌֬ʹ w ׳Εɾ؆୯ΑΓɺΈ͕γϯϓϧͰมߋʹڧ͍͜ͱ w ఆٛݪཧͷਖ਼͠͞ΑΓࣗͨͪʹ߹͏͜ͱ w Ϟμϯελϯμʔυͳٕज़ʹै͢Δ͜ͱ ઃܭٕज़બఆͷஅ࣠ 13
αʔϏεಛੑʹ߹͏ w σʔλऔಘઌΛநԽ͍ͨ͠ w ಛఆൣғͷؔ৺ࣄΛՕॴʹू ͍ͨ͠ w ෳͷ"1*͔ΒඇಉظͰऔಘɺ ͪ߹ΘͤɺΈ߹Θͤ ؍ͯ͠ݟ͚ͭͨղܾ͍ͨ͜͠ͱ
14
αʔϏεಛੑʹ߹͏ w σʔλऔಘઌΛநԽ͍ͨ͠ w ಛఆൣғͷؔ৺ࣄΛՕॴʹू ͍ͨ͠ w ෳͷ"1*͔ΒඇಉظͰऔಘɺ ͪ߹ΘͤɺΈ߹Θͤ ؍ͯ͠ݟ͚ͭͨղܾ͍ͨ͜͠ͱ
ϦϙδτϦύλʔϯ %%%ͷΦϒδΣΫτ 3Y+BWB ղܾͷͨΊͷٕज़ 14
͍͖ͳΓֶशίετΛ্͛͗͢ͳ͍ 3Y+BWB ະܦݧͩͱ͜ΕͭͰ ֶशίετߴ͍ -JWF%BUB %BUB#JOEJOH ·ͣ3Y+BWBʹ׳ΕͯΒ͏ %BHHFS ·ͣίϯετϥΫλΠϯδΣ Ϋγϣϯ͢Δ͜ͱʹ׳ΕͯΒ
͏ʢ,PUMJOͷσϑΥϧτҾʣ ࠾༻ ࠓճݟૹΓ 15
ܾΊͨཧ༝ΛυΩϡϝϯτʹ͢ w ࢦ͍ͯ͠Δ͜ͱ w αʔϏεͷಛੑ w ղܾ͍ͨ͜͠ͱ w ΞʔΩςΫνϟͷ֓ཁ w
࣮ͷͨΊͷϥΠϒϥϦͨͪ w ύοέʔδߏ w ଥڠͨ͠ w ࠾༻Λݟૹͬͨͷʢͱͦͷཧ༝ʣϦετ w ࢀߟʹͨ͠ॻ੶8FCϖʔδ ͳͥ͜͏ͳͬͯΔʁΛઆ໌ Ͱ͖Δ ٕज़ͷਐาʹ߹Θͤͯɺ ܧଓతʹมߋͰ͖ΔΑ͏ʹ͢ Δ 16
औΓΜͰ͍Δઃܭख๏ 17
.77. ϨΠϠʔԽ 3FQPTJUPSZ %PNBJO 7JFX.PEFM 7JFX w ΞʔΩςΫνϟ .77. ϨΠϠʔԽ
18
3FQPTJUPSZ w σʔλͷอଘͱऔಘ w 8FC"1*ͱϩʔΧϧʢ%# 1SFGFSFODFTʣΛநԽ 3FQPTJUPSZ %PNBJO 7JFX.PEFM
7JFX 19
%PNBJO w ϏδωεϩδοΫ%PNBJOʹด͡ࠐ ΊΔ w ,PUMJOͷEBUBDMBTTΛͬͯΦϒ δΣΫτΛ࣮ w ෭࡞༻ͷͳ͍ؔΛ࣋ͭ 3FQPTJUPSZ
%PNBJO 7JFX.PEFM 7JFX 20
7JFX.PEFM 7JFX.PEFM w දࣔͷͨΊͷঢ়ଶཧ w 7JFXΠϕϯτ͔Βඞཁͳॲཧ࣮ߦ 3FQPTJUPSZ %PNBJO 7JFX.PEFM 7JFX
21
7JFX w 7JFX.PEFM͔ΒྲྀΕ͖ͯͨσʔλʹ Ԡ͢Δ͚ͩɺϩδοΫΛ࣋ͨͳ͍ w JG จࣈྻ͕ۭ ͷΑ͏ͳఆϩδοΫΛ ॻ͍ͪΌͩΊ w
"DUJWJUZ$POUFYU7JFX͚ͩͰ͏ɺ 7JFXҎ֎"QQMJDBUJPO$POUFYU 3FQPTJUPSZ %PNBJO 7JFX.PEFM 7JFX 22
7JFX͔ΒϩδοΫΛണ͕͢ w ͜Ε·Ͱ7JFXʹϩδοΫ͕ॻ͔Ε͍ͯͯɺͦΕʹ׳Εͨঢ়ଶ ͩͬͨɻ w ॳาతͳ༰͕ͩɺ·ͣͱʹ͔͘7JFXͱϩδοΫΛ͢Δɻ 23
7JFX͔ΒϩδοΫΛണ͕͢ɿվमલ %PNBJO 24
7JFX͔ΒϩδοΫΛണ͕͢ɿվमલ 7JFX %PNBJO 24
େྔͷJT&NQUZ ఆ͕ϘσΟϒϩʔͷΑ͏ʹμϝʔδΛ༩͑Δɻɻɻ 7JFX͔ΒϩδοΫΛണ͕͢ɿվमલ 7JFX %PNBJO 24
7JFX͔ΒϩδοΫΛണ͕͢ɿվमޙ %PNBJO 25
7JFX͔ΒϩδοΫΛണ͕͢ɿվमޙ %PNBJO 25
7JFX͔ΒϩδοΫΛണ͕͢ɿվमޙ %PNBJO 7JFX 25
ίʔυཧͷεςοϓ 7JFX 26 ϩδοΫ" 7JFX 7JFX w 7JFXʹϩδοΫ͕ ॻ͔Ε͍ͯΔঢ়ଶ w
ಉ͡ϩδοΫ͕ෳͷը໘ ʹॏෳ͍ͯ͠Δ ϩδοΫ" ϩδοΫ" ϩδοΫ$ ϩδοΫ# ϩδοΫ#
7JFX 27 7JFX 7JFX ϩδοΫ$ ϩδοΫ" ϩδοΫ" ϩδοΫ# ϩδοΫ" ϩδοΫ#
ίʔυཧͷεςοϓ
7JFX 27 w ཧͯ͠%PNBJOʹ ϩδοΫΛҠಈ %PNBJO %PNBJO 7JFX 7JFX ϩδοΫ$
ϩδοΫ" ϩδοΫ" ϩδοΫ# ϩδοΫ" ϩδοΫ# ίʔυཧͷεςοϓ
৽7JFX 27 w ཧͯ͠%PNBJOʹ ϩδοΫΛҠಈ %PNBJO %PNBJO 7JFX 7JFX ϩδοΫ$
ϩδοΫ" ϩδοΫ" ϩδοΫ# ϩδοΫ" ϩδοΫ# ίʔυཧͷεςοϓ w ͭͷը໘ͷ7JFXΛ ॻ͖͑Δ
ϩδοΫ" ϩδοΫ" ϩδοΫ# ৽7JFX 28 7JFX ϩδοΫ$ %PNBJO %PNBJO ϩδοΫ"
ϩδοΫ# ίʔυཧͷεςοϓ w ผͷը໘%PNBJOʹҠಈ ͨ͠ϩδοΫΛ͏Α͏ʹ ͢Δ 7JFX
৽7JFX 28 w 7JFXͷίʔυ͕ݮΔ 7JFX ϩδοΫ$ %PNBJO %PNBJO ϩδοΫ" ϩδοΫ#
ίʔυཧͷεςοϓ w ผͷը໘%PNBJOʹҠಈ ͨ͠ϩδοΫΛ͏Α͏ʹ ͢Δ 7JFX
৽7JFX 29 %PNBJO %PNBJO ϩδοΫ" ϩδοΫ# 7JFX ϩδοΫ$ ίʔυཧͷεςοϓ 7JFX
w ίʔυ͕ݮͬͨ7JFXΛ ॻ͖͑Δ
৽7JFX 29 w ը໘୯ҐͰϦϑΝΫλΛ ྃͤ͞ɺશମͷஔ͖͑Λ ࢦ͢ %PNBJO %PNBJO ϩδοΫ" ϩδοΫ#
৽7JFX 7JFX ϩδοΫ$ ίʔυཧͷεςοϓ w ίʔυ͕ݮͬͨ7JFXΛ ॻ͖͑Δ
ґଘؔ w 7JFX.PEFM͕7JFXΛΒͳ͍ Α͏ʹ͢Δ͜ͱ w %PNBJO͕ଞʹґଘ͠ͳ͍͜ͱ 7JFX.PEFM 7JFX 3FQPTJUPSZ %PNBJO
30
σʔλͷྲྀΕ %PNBJO4FSWJDF ΦϒδΣΫτ 7JFX.PEFM 7JFX 3FQPTJUPSZ 3Y+BWB4USFBN ؔݺͼग़͠ 31
σʔλͷྲྀΕ %PNBJO4FSWJDF ΦϒδΣΫτ 7JFX.PEFM 7JFX 3FQPTJUPSZ 3Y+BWB4USFBN ؔݺͼग़͠ w 3Y+BWBͷ4USFBNΛ4VCTDSJCF
͢Δͷ7JFXͷΈʹ੍ݶ w 4VCKFDU 1SPDFTTPS Θͳ͍ 3Y+BWBͷར༻ϧʔϧΛઃ͚ɺ ֶशίετԼϝϯςφϯεੑ ্Λࢦ͢ 31
औΓΜͩ݁Ռ 32
औΓΈͱ݁Ռ w ࠷ར༻ͷଟ͍τοϓը໘ΛϦϑΝΫλϦϯάྃ w ݕ౼ɾઃܭɾ։ൃ߹Θͤͯϲ݄͘Β͍ w େ͖ͳόάͳͲͳ͘ɺίʔυͷݟ௨͕͠ྑ͘ͳͬͨ w ։ൃ͍͢͠ঢ়ଶʹͳΓɺΤϯδχΞ͔Β৽ػೳͷఏҊ 33
νʔϜͷมԽ w ઃܭʹ͍ͭͯٞ͢Δස͕૿͑ͨɻ ڭ͑ΔڭΘΔ͔ؔΒ͓ޓ͍ʹֶΔؔͷมԽɻ w ݟૹͬͨ෦ଥڠʹରͯٙ͠ɺ࣍ʹऔΓΉ͖͜ͱ͕ݟ͖͑ͯͨɻ w ίϯετϥΫλΠϯδΣΫγϣϯݫ͘͠ͳ͍ʁ w ࣮ײ͢Δͷخ͍͠ʂ
34
͋Γ͕ͱ͏͍͟͝·ͨ͠ :BIPPχϡʔεΞϓϦͥͻ͝ར༻͍ͩ͘͞ 35