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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
520
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
740
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
820
社内技術広報のすすめ
buntafujikawa
0
190
テストコードについて (仮)
buntafujikawa
0
650
設計レビューのすすめ
buntafujikawa
1
600
Write Code Every Day
buntafujikawa
0
320
ドラゴン桜から学んだ勉強法
buntafujikawa
1
5k
How to do effective pair programming with junior engineers
buntafujikawa
1
770
Other Decks in Programming
See All in Programming
Creating Composable Callables in Contemporary C++
rollbear
0
160
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
ふつうのFeature Flag実践入門
irof
8
4.1k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
210
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.7k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
250
RTSPクライアントを自作してみた話
simotin13
0
620
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
3
270
The NotImplementedError Problem in Ruby
koic
1
890
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
160
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Mobile First: as difficult as doing things right
swwweet
225
10k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Paper Plane
katiecoart
PRO
1
52k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
First, design no harm
axbom
PRO
2
1.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Paper Plane (Part 1)
katiecoart
PRO
0
9.2k
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