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
レガシーコードの触り方 / Working Effectively with Legacy Code
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takuto WADA
PRO
May 13, 2017
Programming
18k
79
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
レガシーコードの触り方 / Working Effectively with Legacy Code
オープンセミナー2017@岡山
Takuto WADA
PRO
May 13, 2017
More Decks by Takuto WADA
See All by Takuto WADA
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
17
10k
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
48
37k
2026年のソフトウェア開発を考える(2026/05版) / Software Engineering Scrum Fest Niigata 2026 Edition
twada
PRO
28
20k
AI時代のTDD / TDD in AI Era 202604 Edition
twada
PRO
9
2.1k
ソフトウェアエンジニア人生サバイバルガイド / Software Engineers Survival Guide 202604 Edition
twada
PRO
31
28k
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
53
38k
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
47
47k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
194
140k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Other Decks in Programming
See All in Programming
残高管理から台帳サービスへの進化
artoy
0
180
気持ちぃ〜角丸 Squircle
ryu1013
0
150
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
190
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
200
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.9k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
280
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
470
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
570
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.9k
Marketing to machines
jonoalderson
1
5.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
320
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Accessibility Awareness
sabderemane
1
240
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
740
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
510
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building the Perfect Custom Keyboard
takai
2
900
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
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 ࢼߦϦϑΝΫλϦϯά ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠