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
950
テトリスでイメージする 技術的負債とリファクタリング
エンジニアではない人向けに、技術的負債とリファクタリングのイメージを持ってもらうための話
buntafujikawa
March 01, 2022
Tweet
Share
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
460
スクラムとコーチングで作る心理的安全性
buntafujikawa
0
660
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
730
社内技術広報のすすめ
buntafujikawa
0
170
テストコードについて (仮)
buntafujikawa
0
570
設計レビューのすすめ
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
680
Other Decks in Programming
See All in Programming
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
240
Create a website using Spatial Web
akkeylab
0
300
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
400
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
100
関数型まつり2025登壇資料「関数プログラミングと再帰」
taisontsukada
2
850
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
180
XP, Testing and ninja testing
m_seki
3
190
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
150
5つのアンチパターンから学ぶLT設計
narihara
1
110
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
320
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
120
Featured
See All Featured
Bash Introduction
62gerente
614
210k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.3k
GitHub's CSS Performance
jonrohan
1031
460k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
How to train your dragon (web standard)
notwaldorf
93
6.1k
Building an army of robots
kneath
306
45k
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