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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
penguin045
September 16, 2020
Technology
1
1.6k
技術的負債を見つめなおす
#RAKUSMeetup
penguin045
September 16, 2020
Tweet
Share
More Decks by penguin045
See All by penguin045
20年モノの巨大Webサービスの開発継続戦略 - ミドルウェアのバージョンアップとの向き合い方
penguin045
1
2.6k
言語の力でモデリングを表現する
penguin045
0
290
初めてのClojure
penguin045
0
700
PHPerがこれから「型」とお付き合いしていくために
penguin045
1
2.7k
社内最長老のシステムにPHPUnitで立ち向かう方法
penguin045
1
3.4k
Other Decks in Technology
See All in Technology
三菱UFJ銀行におけるエンタープライズAI駆動開発のリアル / Enterprise AI_Driven Development at MUFG Bank: The Real Story
muit
10
20k
dbt meetup #19 『dbtを『なんとなく動かす』を卒業します』
tiltmax3
0
130
クラウド時代における一時権限取得
krrrr38
1
140
Databricksアシスタントが自分で考えて動く時代に! エージェントモード体験もくもく会
taka_aki
0
250
AWS CDK の目玉新機能「Mixins」とは / cdk-mixins
gotok365
2
310
インシデント対応入門
grimoh
7
5.6k
AI Coding Agentの地殻変動 ~ ai-coding.info の定点観測 ~
kotauchisunsun
1
500
オンプレとGoogle Cloudを安全に繋ぐための、セキュア通信の勘所
waiwai2111
3
1k
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
360
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
8
1.4k
Microsoft Fabric のワークスペースと容量の設計原則
ryomaru0825
2
220
NW構成図の自動描画は何が難しいのか?/netdevnight3
corestate55
2
520
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
77
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
400
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
93
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
190
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup
Meetup ©2020 RAKUS Co. Ltd. 技術的負債を⾒つめなおす 技術的負債を⾒つめなおす やなせ たかし
#RAKUSMeetup やなせ たかし つよいプログラマーになりたい 最近Clojureはじめました 18年モノのシステムを開発しています
#RAKUSMeetup もくじ 1. 技術的負債ってなんだ 1. 負債とは 2. 技術的負債とは 3. ケーススタディ
2. 技術的負債に⽴ち向かう 1. でもその前に 2. 技術的負債にも種類がある 3. 返済戦略を考える
#RAKUSMeetup 技術的負債ってなんだ
#RAKUSMeetup そもそも負債とは︖
負債とは 負債とは 資産と表裏⼀体 純資産 + 負債 = 総資産
会計的な(経営的な)負債 返さなくてはいけない資⾦のこと 他⼈の⾦と考えるとだいたいあってる 返さなくていいなら返さない⽅がお得
脱線ここまで
#RAKUSMeetup 技術的負債とは 技術的負債とは
技術的負債 ⾒逃し(され)た品質の低い部分 アーキテクチャ コード ⻑期的に引き起こす問題 バグの増加 開発速度の低下
それでもリリース(価値提供)のためには必要
#RAKUSMeetup なぜ︖ なぜ︖
ケーススタディ あるソフトウェアの開発 開発費以外は変動しないものとする ちゃんと作ると⾚字になることがわかっている ちょっと何かを改造したら利益が⾒込める ただし技術的負債がたまる
損益計算書を⾒てみましょう
ちゃんと作る場合 想定通り⾚字になります
技術的負債を受⼊れ 技術的負債を受⼊れ 開発コストを下げる 開発コストを下げる
するとこうなる 開発費を圧縮・⼀気に⿊字化
何が起こった︖ 何が起こった︖ 損益計算書から読み取れること 開発費が下がった 利益が出た すばらしい︕プロジェクトは成功だ︕
完 完
技術的負債はどこに︖ 技術的負債はどこに︖
バランスシートを⾒てみましょう
ちゃんと作る 安く作る
⾒えない ⾒えない
技術的負債が⾒えない理由 技術的負債が⾒えない理由 返済期⽇がない 借りて資産が増えるわけでもない 起こったのはP/Lの費⽤が下がっただけ つまり、帳簿上認識されにくい
そのままP/Lに異変が起こるまで 問題に気付かない
P/Lに起こる異変 P/Lに起こる異変 開発費・販管費が増加する 開発スピードの低下 品質の低下 → いわゆる技術的負債の「利息」
でも技術的負債を受け⼊れないと︖ でも技術的負債を受け⼊れないと︖ ⾚字 ビジネスとして成り⽴たない可能性がある
#RAKUSMeetup ここまでのまとめ ここまでのまとめ 技術的負債は⾒えにくい 返済期限がない 短期的にデメリットが⾒えない ある時急に影響が⾒え始める 技術的負債の分布の偏り 指数関数的な利息の増加
#RAKUSMeetup もくじ 1. 技術的負債ってなんだ 1. 負債とは 2. 技術的負債とは 3. ケーススタディ
2. 技術的負債に⽴ち向かう 1. でもその前に 2. 技術的負債にも種類がある 3. 返済戦略を考える
#RAKUSMeetup 技術的負債に⽴ち向かう 技術的負債に⽴ち向かう
その前に その前に
漠然としたイメージ P/Lへのインパクトが少ないうちに返せばよさそう
質問 本当に技術的負債は致命的な問題に直結する︖ 回答 たぶんそう 部分的にそう
なぜ「たぶん」「部分的」なのか 技術的負債は、多くの場合局所的なもの そこに触れなければ問題は表⾯化しない 全体に対して影響があるものは問題 アーキテクチャレベルでの負債 要件レベルでの負債 これは別の問題
技術的負債にも種類がある 技術的負債にも種類がある 局所的な技術的負債 全体に影響を及ぼす技術的負債
局所的な技術的負債 返さなくてもいい場合が多い 直接関係なければ影響がない 壊れていないコードを直すな → コスパが悪いと判断されがち
全体に影響を及ぼす技術的負債 まず直す価値があるのはこちら 修正コストが⾼くなりがち 影響が⼤きいため 問題と認識された頃には影響が⼤きすぎる → コスパが悪いと判断されがち
#RAKUSMeetup 返済戦略を考える 返済戦略を考える
基本戦略 基本戦略 費⽤対効果が⾒込めそうなときに、 技術的負債の返済をする
ビジネスなので仕⽅ない
おさらいすると、 局所的な技術的負債 → コスパが悪いと判断されがち 全体に影響を及ぼす技術的負債 → コスパが悪いと判断されがち
なぜなのか 技術的負債の返済にもコストがかかる → ⾒込めるリターンが説明しづらい 問題が表⾯化したときには影響が⼤きすぎる → コスト⼤、費⽤対効果が⾒込めない
詰んでます︖
もちろん 修正コストが低いうちから返済するのがベスト → コストが低いうちは費⽤対効果も⾼い
でも気づかれない でも気づかれない
#RAKUSMeetup 結論︓技術的負債の返済はコスパが悪い いわゆる気づいたときには⼿遅れ状態
#RAKUSMeetup もういちど基本戦略 もういちど基本戦略 費⽤対効果が⾒込めそうなときに、 技術的負債の返済をする
どんな時がチャンス︖
技術的負債を返済できるチャンス 返済コストが安く、すぐに効果が⾒込めるとき 返済しなければ破綻するとき ⼤きな⼯数を稼げそうなとき
いわゆるレガシーシステムの場合 返済コストが安く、すぐに効果が⾒込めるとき 返済しなければ破綻するとき ⼤きな⼯数を稼げそうなとき
つらいケース つらいケース
返済しなければ破綻するとき 借⾦の返済期限が来た 問題が肥⼤化しており、返済コストが⾼い状態
品質の低下で損失を出す、 納期の⼤幅超過が続くなど危険な状態
⻑く苦しい戦い ⻑く苦しい戦い
ベターなケース ベターなケース
⼤きな⼯数を稼げそうなとき 技術的負債の返済を紛れ込ませる 過去の技術的負債を取り込まない 品質を作りこむチャンス
こちらを狙いたい
#RAKUSMeetup じつは最近チャンスが到来しました ⼤きな新機能の追加がある かなりの規模の開発になる 追加部分からアーキテクチャ刷新に着⼿
チャンスを逃さないために チャンスを逃さないために レガシーでもあきらめない 座して死を待つだけではただつらいだけ できることを考える
チャンスを逃さないために チャンスを逃さないために 負債の局所化 負債を作りこまない 汚染を広げない リファクタリングしやすい状況を整える
#RAKUSMeetup まとめ 技術的負債 と 負債 は確かに似ている 技術的負債は⾒えにくい 返済もコスパが⼤事 チャンスはやってくる そのための準備はしておく