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.2k
4年の開発が積み重なったアプリへのリファクタリング手法
Jun Ikeda
March 12, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
3
6.4k
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
290
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
1.2k
本当のAWS基礎
toru_kubota
0
520
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
140
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
570
VSCodeの拡張機能を作っている話
ebarakazuhiro
1
410
require(ESM)とECMAScript仕様
uhyo
3
720
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
530
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
3
240
Featured
See All Featured
Making Projects Easy
brettharned
108
5.5k
Designing for humans not robots
tammielis
248
25k
Unsuck your backbone
ammeep
663
57k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
4 Signs Your Business is Dying
shpigford
175
21k
GraphQLとの向き合い方2022年版
quramy
32
12k
Why Our Code Smells
bkeepers
PRO
331
56k
Building Your Own Lightsaber
phodgson
99
5.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Facilitating Awesome Meetings
lara
42
5.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
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