#RAKUSMeetup
MeetupMeetupMeetupMeetupMeetupMeetupMeetupMeetupMeetupMeetupMeetup©2020 RAKUS Co. Ltd.技術的負債を⾒つめなおす技術的負債を⾒つめなおすやなせ たかし
View Slide
#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技術的負債に⽴ち向かう技術的負債に⽴ち向かう
その前にその前に
漠然としたイメージP/Lへのインパクトが少ないうちに返せばよさそう
質問本当に技術的負債は致命的な問題に直結する︖回答たぶんそう 部分的にそう
なぜ「たぶん」「部分的」なのか技術的負債は、多くの場合局所的なものそこに触れなければ問題は表⾯化しない全体に対して影響があるものは問題アーキテクチャレベルでの負債要件レベルでの負債これは別の問題
技術的負債にも種類がある技術的負債にも種類がある局所的な技術的負債全体に影響を及ぼす技術的負債
局所的な技術的負債返さなくてもいい場合が多い直接関係なければ影響がない壊れていないコードを直すな→ コスパが悪いと判断されがち
全体に影響を及ぼす技術的負債まず直す価値があるのはこちら修正コストが⾼くなりがち影響が⼤きいため問題と認識された頃には影響が⼤きすぎる→ コスパが悪いと判断されがち
#RAKUSMeetup返済戦略を考える返済戦略を考える
基本戦略基本戦略費⽤対効果が⾒込めそうなときに、技術的負債の返済をする
ビジネスなので仕⽅ない
おさらいすると、局所的な技術的負債→ コスパが悪いと判断されがち全体に影響を及ぼす技術的負債→ コスパが悪いと判断されがち
なぜなのか技術的負債の返済にもコストがかかる→ ⾒込めるリターンが説明しづらい問題が表⾯化したときには影響が⼤きすぎる→ コスト⼤、費⽤対効果が⾒込めない
詰んでます︖
もちろん修正コストが低いうちから返済するのがベスト→ コストが低いうちは費⽤対効果も⾼い
でも気づかれないでも気づかれない
#RAKUSMeetup結論︓技術的負債の返済はコスパが悪いいわゆる気づいたときには⼿遅れ状態
#RAKUSMeetupもういちど基本戦略もういちど基本戦略費⽤対効果が⾒込めそうなときに、技術的負債の返済をする
どんな時がチャンス︖
技術的負債を返済できるチャンス返済コストが安く、すぐに効果が⾒込めるとき返済しなければ破綻するとき⼤きな⼯数を稼げそうなとき
いわゆるレガシーシステムの場合返済コストが安く、すぐに効果が⾒込めるとき返済しなければ破綻するとき⼤きな⼯数を稼げそうなとき
つらいケースつらいケース
返済しなければ破綻するとき借⾦の返済期限が来た問題が肥⼤化しており、返済コストが⾼い状態
品質の低下で損失を出す、納期の⼤幅超過が続くなど危険な状態
⻑く苦しい戦い⻑く苦しい戦い
ベターなケースベターなケース
⼤きな⼯数を稼げそうなとき技術的負債の返済を紛れ込ませる過去の技術的負債を取り込まない品質を作りこむチャンス
こちらを狙いたい
#RAKUSMeetupじつは最近チャンスが到来しました⼤きな新機能の追加があるかなりの規模の開発になる追加部分からアーキテクチャ刷新に着⼿
チャンスを逃さないためにチャンスを逃さないためにレガシーでもあきらめない座して死を待つだけではただつらいだけできることを考える
チャンスを逃さないためにチャンスを逃さないために負債の局所化負債を作りこまない汚染を広げないリファクタリングしやすい状況を整える
#RAKUSMeetupまとめ技術的負債 と 負債 は確かに似ている技術的負債は⾒えにくい返済もコスパが⼤事チャンスはやってくるそのための準備はしておく