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
テトリスでイメージする 技術的負債とリファクタリング
Search
buntafujikawa
March 01, 2022
Programming
0
970
テトリスでイメージする 技術的負債とリファクタリング
エンジニアではない人向けに、技術的負債とリファクタリングのイメージを持ってもらうための話
buntafujikawa
March 01, 2022
Tweet
Share
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
470
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
670
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
750
社内技術広報のすすめ
buntafujikawa
0
170
テストコードについて (仮)
buntafujikawa
0
580
設計レビューのすすめ
buntafujikawa
1
570
Write Code Every Day
buntafujikawa
0
300
ドラゴン桜から学んだ勉強法
buntafujikawa
1
4.7k
How to do effective pair programming with junior engineers
buntafujikawa
1
700
Other Decks in Programming
See All in Programming
コンテキストエンジニアリング Cursor編
kinopeee
1
710
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
210
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
8
3.2k
学習を成果に繋げるための個人開発の考え方 〜 「学習のための個人開発」のすすめ / personal project for leaning
panda_program
1
110
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
720
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
120
Honoアップデート 2025年夏
yusukebe
1
860
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
TDD 実践ミニトーク
contour_gara
0
150
ソフトウェアテスト徹底指南書の紹介
goyoki
1
110
Langfuseと歩む生成AI活用推進
licux
3
300
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
270
Featured
See All Featured
Scaling GitHub
holman
462
140k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
900
Faster Mobile Websites
deanohume
309
31k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Optimizing for Happiness
mojombo
379
70k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
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