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
レガシーコードの触り方 / Working Effectively with Legacy Code
Search
Takuto Wada
PRO
May 13, 2017
Programming
79
17k
レガシーコードの触り方 / Working Effectively with Legacy Code
オープンセミナー2017@岡山
Takuto Wada
PRO
May 13, 2017
Tweet
Share
More Decks by Takuto Wada
See All by Takuto Wada
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
73
26k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
30
9.7k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.9k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
14
6.5k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
28
27k
開発生産性の観点から考える自動テスト(2024/06版) / Automated Test Knowledge from Savanna 202406 Findy dev-prod-con edition
twada
PRO
36
25k
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
14
3.3k
変更容易性と理解容易性を支える自動テスト(2024/02版) / Automated Test Knowledge from Savanna 202402 YAPC::Hiroshima edition
twada
PRO
22
14k
実録レガシーコード改善 / Working with Legacy Code: the True Record
twada
PRO
111
51k
Other Decks in Programming
See All in Programming
SideKiqでジョブが二重起動した事象を深堀りしました
t_hatachi
0
260
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
270
Signal-Based Data FetchingWith the New httpResource
manfredsteyer
PRO
0
110
リアルタイムレイトレーシング + ニューラルレンダリング簡単紹介 / Real-Time Ray Tracing & Neural Rendering: A Quick Introduction (2025)
shocker_0x15
1
240
Defying Front-End Inertia: Inertia.js on Rails
skryukov
0
350
リアクティブシステムの変遷から理解するalien-signals / Learning alien-signals from the evolution of reactive systems
yamanoku
2
1.1k
Productivity is Messing Around and Having Fun
hollycummins
0
160
Go1.24 go vetとtestsアナライザ
kuro_kurorrr
2
700
MCP世界への招待: AIエンジニアが創る次世代エージェント連携の世界
gunta
4
800
AHC 044 混合整数計画ソルバー解法
kiri8128
0
310
snacks.nvim内のセットアップ不要なプラグインを紹介 / introduce_snacks_nvim
uhooi
0
360
ノーコードツールの裏側につきまとう「20分岐」との戦い
oguemon
0
110
Featured
See All Featured
Bash Introduction
62gerente
611
210k
Writing Fast Ruby
sferik
628
61k
Speed Design
sergeychernyshev
28
870
Music & Morning Musume
bryan
46
6.4k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
How to Ace a Technical Interview
jacobian
276
23k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
102
18k
Making Projects Easy
brettharned
116
6.1k
How STYLIGHT went responsive
nonsquared
99
5.4k
Transcript
ϨΨγʔίʔυͷ ৮Γํ ాਓ !U@XBEB .BZ !ΦʔϓϯηϛφʔԬࢁ
ాਓ JEUXBEB !U@XBEB HJUIVCUXBEB
None
ひとり歩きするスタンド ελϯυ໊ϫΠϧυɾαόϯφ
assert(typeof item.id === 'strong') | | | | | |
| false | | "foo" | Item{id:"foo",name:"bar"} "string" --- [string] 'strong' +++ [string] typeof item.id @@ -1,6 +1,6 @@ str -o +i ng https://github.com/power-assert-js/power-assert power-assert
ΑΖ͓͘͠ئ͍͠·͢
ݱ͔ΒͷதܧͰ͢
ർฐ͖ͬͨ͠ݱ
IUUQTXXXqJDLSDPNQIPUPTPLJOBXBTPCB ߥΈ͖ͬͨίʔυ
രॲཧͷΑ͏ͳϦϦʔε
ͭͷlͳΒΘ͠z
IUUQTXXXqJDLSDPNQIPUPTELBMP lςετΛॻ࣌ؒ͘ͳ͍z
ετϨε ςετ
ࣗಈςετ ετϨε
ςετΛॻ͕࣌ؒ͘ͳ͍ͷͰ ͳ͘ɺςετΛॻ͔ͳ͍͔ Β͕࣌ؒͳ͘ͳΔͷͰ͢ɻ
lಈ͘ίʔυʹ৮ΕΔͳz IUUQTXXXqJDLSDPNQIPUPT!/
&EJU1SBZࢮ͕͍ͬͯΔ
$PWFS.PEJGZ
w ʮςετΛॻ͕࣌ؒ͘ͳ͍ʯͷͰ ͳ͘ʮςετΛॻ͔ͳ͍͔Β͕࣌ؒ ͳ͘ͳΔʯ w ʮಈ͘ίʔυʹ৮ΕΔͳʯͱಆ͏ɻ ৮Βͳ͘ͱपΓ͕มΘͬͯಈ͔ͳ ͘ͳΔɻ৮Εͳ͚Είʔυ؇ ͔ʹࢮΜͰ͍͘ ͭͷʮͳΒΘ͠ʯͱಆ͏
ͭͷlಓ͠Δz
w ʮϨΨγʔίʔυͷδϨϯϚʯ w lίʔυΛมߋ͢ΔͨΊʹςετΛඋ͢Δ ඞཁ͕͋Δɻଟ͘ͷ߹ɺςετΛඋ͢Δ ͨΊʹɺίʔυΛมߋ͢Δඞཁ͕͋Δz w ϨΨγʔίʔυʹ৮ΔͨΊͷ ޠኮͱٕ๏Λཧͨ͠ຊ w
TUBDLPWFSqPXDPN͔Βͷ ඃݴٴୈҐ ϨΨγʔίʔυվળΨΠυ
w ϨΨγʔίʔυվળΨΠυΑΓந ͕ߴ͍ w ιϑτΣΞͷϦΤϯδχΞϦϯάΛߦ ͏ͭͷબࢶΛ͍ࣔͯ͠Δ w ϦϑΝΫλϦϯά w ϦΞʔΩςΫςΟϯά
w ϏοάɾϦϥΠτ ϨΨγʔιϑτΣΞվળΨΠυ
Ͳ͜ʹςετΛ ॻ͍͍͔ͯ͘
ʮ௧ΜͩՕॴʯͱʮख͕ಧ͘Ռ࣮ʯ
w ϦεΫ w खಈςετͷίετ w ࣗಈԽίετ ςετͷτϦΞʔδ
ςετέʔεΛҰཡʹ·ͱΊΔ ςετέʔε σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ
ϦεΫΛݟੵΔ ςετέʔε ϦεΫ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ
ৼΓࠐΈͷ֬ೝ
खಈςετͷίετΛݟੵΔ ςετέʔε ϦεΫ खಈςετͷ ίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ
ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ
ࣗಈԽίετΛݟੵΔ ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁
৽نϢʔβొ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ
༏ઌॱҐΛ͚ͯฒସ͑Δ ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ ޱ࠲ͷౚ݁ ৼΓࠐΈͷ֬ೝ औҾཤྺ ݕࡧ݁Ռͷฒͼସ͑
͓ۚͷೖۚ ηΩϡϦςΟΞϥʔτ ৽نϢʔβొ σβΠϯมߋ
Ͳ͏ςετΛ ॻ͍͍͔ͯ͘
w ςετ͕ͳ͍ͷطʹઃܭ͕ѱ͍ஹީ w ઃܭ࣮Λม͑Δͷ͕લఏ w ࣮ͷςετΛॻ͔ͳ͍͜ͱ w ςετ͕Χόʔ͢Δൣғʹ༡ͼΛ࣋ͨ ͤɺΧόʔൣғΛϦϑΝΫλϦϯά w
ঢ়گʹԠͯ͡&&ςετΛ͍͜ͳ͢ ઃܭͷՄಈҬΛ֬อ͢Δ
w ࠷ॳ͔Βશ෦Ζ͏ͱ͠ͳ͍ w ςετۦಈʹͩ͜ΘΔͳ w ςετϑΝʔετʹͩ͜ΘΔͳ w ʮϢχοτʯςετʹͩ͜ΘΔͳ w ςετͷ࣮ߦʹͩ͜ΘΔͳ
w ςετͷཏੑʹͩ͜ΘΔͳ ͩ͜ΘΔͳ
w ྑ͍Ϣχοτςετͷࢦඪʹ༏ઌ ͕͋Δ w ࠶ݱɺ܁Γฦ͠Մೳ 3FQFBUBCMF w ಠཱ͍ͯ͠Δ *OEFQFOEFOU
w ଞͦΕ͔ΒͰ͍͍ ͩ͜ΘΖ͏
w ߹෦ͷݕ౼ͱۛຯ w ߜΓࠐΈͷൃݟͱґଘͷ w ࠶ݱੑ͋Δςετϋʔωεͷඋ w ूதฤू )ZQFSBXBSF&EJUJOH
w ίϯύΠϥ*%&·͔ͤ w ༷Խςετ w ࢼߦϦϑΝΫλϦϯά ϨΨγʔίʔυվળͷٕ๏ ৄ͘͠ σϞͰ
σϞطʹୀ৬ͨ͠ ઌഐ͕ॻ͍ͨ ṖͷίʔυΛҾ͖ܧ͙
IUUQTXXXqJDLSDPNQIPUPTUPNQBHFOFU ςετ࣭Λ্͛ͳ͍
w ࣭͕ʮΘ͔ΔʯΑ͏ʹͳΔ w Θ͔Δ͜ͱͦ͜େࣄ w ςετΛॻ͚ͩ͘Ͱɺྑ͘ͳΒͳ͍ w ମॏܭʹΔ͚ͩͰ૫ͤͳ͍ w ࣭Λ্͛Δͷઃܭͱϓϩάϥϛϯά
w ࠶ઃܭͱϦϑΝΫλϦϯάΛςετͰࢧ͑Δ ςετ࣭Λ্͛ͳ͍
lςετͰ্࣭͕Βͳ͍ Ͱ͢Αɻςετ͋͘·Ͱ ࣭Λ͋͛Δ͖͔͚ͬɻ࣭Λ͋ ͛ΔͷϓϩάϥϛϯάͰ͢ɻ ͜Εେੲ͔Βͦ͏ɻz
w ߹෦ͷݕ౼ͱۛຯ w ߜΓࠐΈͷൃݟͱґଘͷ w ࠶ݱੑ͋Δςετϋʔωεͷඋ w ूதฤू )ZQFSBXBSF&EJUJOH
w ίϯύΠϥ*%&·͔ͤ w ༷Խςετ w ࢼߦϦϑΝΫλϦϯά ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠