Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
41
13k
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
43
24k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
173
91k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
90k
The Clean ArchitectureがWebフロントエンドでしっくりこないのは何故か / Why The Clean Architecture does not fit with Web Frontend
twada
PRO
84
35k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
36
13k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
2.9k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
14
7.3k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
34
29k
Other Decks in Programming
See All in Programming
sbt 2
xuwei_k
0
130
FluorTracer / RayTracingCamp11
kugimasa
0
160
JJUG CCC 2025 Fall Javaコミュニティの歩き方 〜参加から貢献まで、すべて教えます〜
takasyou
0
720
【レイトレ合宿11】kagayaki_v4
runningoutrate
0
200
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1.3k
How Software Deployment tools have changed in the past 20 years
geshan
0
26k
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
11
3.8k
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
210
最新のDirectX12で使えるレイトレ周りの機能追加について
projectasura
0
330
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
160
CSC305 Lecture 17
javiergs
PRO
0
220
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
17k
Featured
See All Featured
Scaling GitHub
holman
464
140k
Building an army of robots
kneath
306
46k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Context Engineering - Making Every Token Count
addyosmani
9
450
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Why Our Code Smells
bkeepers
PRO
340
57k
KATA
mclloyd
PRO
32
15k
A better future with KSS
kneath
240
18k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
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 ࢼߦϦϑΝΫλϦϯά ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠