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
テトリスでイメージする 技術的負債とリファクタリング
Search
buntafujikawa
March 01, 2022
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テトリスでイメージする 技術的負債とリファクタリング
エンジニアではない人向けに、技術的負債とリファクタリングのイメージを持ってもらうための話
buntafujikawa
March 01, 2022
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
550
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
770
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
830
社内技術広報のすすめ
buntafujikawa
0
200
テストコードについて (仮)
buntafujikawa
0
670
設計レビューのすすめ
buntafujikawa
1
600
Write Code Every Day
buntafujikawa
0
320
ドラゴン桜から学んだ勉強法
buntafujikawa
1
5k
How to do effective pair programming with junior engineers
buntafujikawa
1
790
Other Decks in Programming
See All in Programming
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
290
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
Security issues being discussed on Web Platforms
petamoriken
0
800
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
56
38k
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
1.1k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
180
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
Intent as Code
shoppingjaws
6
950
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
660
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
140
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
We Are The Robots
honzajavorek
0
370
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
280
Mind Mapping
helmedeiros
1
350
Discover your Explorer Soul
emna__ayadi
2
1.3k
Building the Perfect Custom Keyboard
takai
2
870
Transcript
テトリスでイメージする 技術的負債とリファクタリング コーチェット チェックイン 2022/03/01 Bunta Fujikawa
今日わかること(願望) ・技術的負債がイメージできるようになる ・リファクタリングの重要性がわかる ・開発現場で起こるコミュニケーション齟齬の理由がわかる
エンジニアが思われがちなこと ・なんでその機能にそんな時間かかるの? ・最近仕事遅くない?前の方が開発のスピード早くなかった? ・早く作ってって言ったら見積もりより早く作ってくれた、最初からそうしてよ ・新しい機能作ってないのになんで忙しそうなの?
それ、技術的負債のせいです
技術的負債とは 技術的負債(英語: technical debt)、または設計負債[1]、コード負債とは、ソフトウェア開発における概念であり、時間がかかるより良いアプ ローチを使用する代わりに、今すぐ簡単な(限定的な)解決策を選択することで生じる追加の手直しの暗黙のコストを反映したものである [2]。 金銭的な負債と同様[3]に、技術的負債も返済されなければ、「利子」が蓄積され、変更の実施が困難になる。技術的負債を処理しないと、ソフ トウェアのエントロピーが増大する。金銭的負債と同様に、技術的負債も必ずしも悪いものではなく、プロジェクトを前進させるために(概念実 証として)必要な場合もある。 wikipediaより
技術的負債とは 技術的負債(英語: technical debt)、または設計負債[1]、コード負債とは、ソフトウェア開発における概念であり、時間がかかるより良いアプ ローチを使用する代わりに、今すぐ簡単な(限定的な)解決策を選択することで生じる 追加の手直しの暗黙のコストを反映したもの である[2]。 金銭的な負債と同様[3]に、技術的負債も返済されなければ、「利子」が蓄積され、変更の実施が困難になる 。技術的負債を処理しないと、ソフ トウェアのエントロピーが増大する。金銭的負債と同様に、
技術的負債も必ずしも悪いものではなく 、プロジェクトを前進させるために(概念実 証として)必要な場合もある。 wikipediaより
技術的負債とは 技術的負債(英語: technical debt)、または設計負債[1]、コード負債とは、ソフトウェア開発における概念であり、時間がかかるより良いアプ ローチを使用する代わりに、今すぐ簡単な(限定的な)解決策を選択することで生じる 追加の手直しの暗黙のコストを反映したもの である[2]。 金銭的な負債と同様[3]に、技術的負債も返済されなければ、「利子」が蓄積され、変更の実施が困難になる 。技術的負債を処理しないと、ソフ トウェアのエントロピーが増大する。金銭的負債と同様に、
技術的負債も必ずしも悪いものではなく 、プロジェクトを前進させるために(概念実 証として)必要な場合もある。 wikipediaより 開発のコストが上がる 放置しておくと負債が増える
技術的負債の具体例 ・3行でかける処理が30行で書かれてる ・コピペされたコード ・仕様変更などによる必要以上に複雑なコード ・使われてないコードが残っている ・古すぎるバージョンの言語やフレームワーク などなど
技術的負債の具体例 ・3行でかける処理が30行で書かれてる ・コピペされたコード ・仕様変更などによる必要以上に複雑なコード ・使われてないコードが残っている ・古すぎるバージョンの言語やフレームワーク などなど → 書く量 <
読む量 → 一度コピペされると次もされる → 複雑なコードがさらに複雑になる → 毎回変更した方が良いのか確認する必要性 → 新しいバージョンの便利な機能が使えない
なんとなくわかる
None
技術的負債をテトリスで考えてみる
開発初期 - a
開発が順調 - a
技術的負債が溜まってきた - a
技術的負債が多くなってきた - a
技術的負債が多くなってきた - a
技術的負債が多くなってきた - a 技術的負債 = テトリスの穴・ボコボコ
同じブロックでも 積み上げ方によって難易度が変わる
(再掲)エンジニアが思われがちなこと ・なんでその機能にそんな時間かかるの? ・最近仕事遅くない?前の方が開発のスピード早くなかった? ・早く作ってって言ったら見積もりより早く作ってくれた、最初からそうしてよ ・新しい機能作ってないのになんで忙しそうなの? - a
それぞれの視点 - a 非エンジニアの視点 (難しいブロックじゃないな )
それぞれの視点 - a 非エンジニアの視点 (難しいブロックじゃないな ) エンジニアの視点(どこに積み上げよう...)
これどうしようか...
こうしたい...
こうしたい... リファクタリング
リファクタリングとは リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変え ずにソースコードの内部構造を整理することである。また、いくつかのリファクタリング手法の総称としても使わ れる。
リファクタリングとは リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変え ずにソースコードの内部構造を整理すること である。また、いくつかのリファクタリング手法の総称としても使わ れる。
リファクタリングとは リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変え ずにソースコードの内部構造を整理すること である。また、いくつかのリファクタリング手法の総称としても使わ れる。 ・シンプルに書き直す(30行を3行にする) ・わかりやすい名前を付け直す ・使ってない機能やプログラムは削除する
・自動化できるものは自動化する などなど
リファクタリングとは リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変え ずにソースコードの内部構造を整理すること である。また、いくつかのリファクタリング手法の総称としても使わ れる。 ・シンプルに書き直す(30行を3行にする) ・わかりやすい名前を付け直す ・使ってない機能やプログラムは削除する
・自動化できるものは自動化する などなど
リファクタリングとは リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変え ずにソースコードの内部構造を整理すること である。また、いくつかのリファクタリング手法の総称としても使わ れる。 ・シンプルに書き直す(30行を3行にする) ・わかりやすい名前を付け直す ・使ってない機能やプログラムは削除する
・自動化できるものは自動化する などなど リファクタリング = 綺麗に積み上げ直す
リファクタリングはいつやるのか ・定期的にまとまった時間をとる ・ボーイスカウトルール ・毎週一定の時間をリファクタリングに使う
・金銭的な負債と同じように考えてみる ・今は負債を抱えても前に進めるべき? ・その負債はどれだけ利息がかかるのだろうか? ・いくら借金してるかわからないは怖い ・システムの寿命を考える ・負債に向き合うエンジニアと向き合う 技術的負債との向き合い方
まとめ - 技術的負債はテトリスの穴、ボコボコのイメージ - 技術的負債が多くなると、機能追加・変更の難易度が上がる - リファクタリングは積み上げたテトリスの山を綺麗にするイメージ - リファクタリングをすると、新しい機能ができなくてもその後の開発がやりやすくなる
Author Bunta Fujikawa Twitter @buntafujikawa Qiita @buntafujikawa Github @buntafujikawa