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.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
4年の開発が積み重なったアプリへのリファクタリング手法
Jun Ikeda
March 12, 2018
Other Decks in Technology
See All in Technology
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
120
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
240
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
200
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
1
2.1k
Does an AI Watermark Survive Translation?
machinetranslation
0
520
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
0
930
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
130
【試作】IoT x AIエージェント
happysamurai294
0
120
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
2
1.3k
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
150
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
110
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
750
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.1k
How to Ace a Technical Interview
jacobian
281
24k
Navigating Weather and Climate Data
rabernat
0
510
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
230
Become a Pro
speakerdeck
PRO
31
6.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Balancing Empowerment & Direction
lara
6
1.3k
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