Slide 1

Slide 1 text

Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup Meetup ©2020 RAKUS Co. Ltd. 技術的負債を⾒つめなおす 技術的負債を⾒つめなおす やなせ たかし

Slide 2

Slide 2 text

#RAKUSMeetup やなせ たかし つよいプログラマーになりたい 最近Clojureはじめました 18年モノのシステムを開発しています

Slide 3

Slide 3 text

#RAKUSMeetup もくじ 1. 技術的負債ってなんだ 1. 負債とは 2. 技術的負債とは 3. ケーススタディ 2. 技術的負債に⽴ち向かう 1. でもその前に 2. 技術的負債にも種類がある 3. 返済戦略を考える

Slide 4

Slide 4 text

#RAKUSMeetup 技術的負債ってなんだ

Slide 5

Slide 5 text

#RAKUSMeetup そもそも負債とは︖

Slide 6

Slide 6 text

負債とは 負債とは 資産と表裏⼀体 純資産 + 負債 = 総資産

Slide 7

Slide 7 text

会計的な(経営的な)負債 返さなくてはいけない資⾦のこと 他⼈の⾦と考えるとだいたいあってる 返さなくていいなら返さない⽅がお得

Slide 8

Slide 8 text

脱線ここまで

Slide 9

Slide 9 text

#RAKUSMeetup 技術的負債とは 技術的負債とは

Slide 10

Slide 10 text

技術的負債 ⾒逃し(され)た品質の低い部分 アーキテクチャ コード ⻑期的に引き起こす問題 バグの増加 開発速度の低下

Slide 11

Slide 11 text

それでもリリース(価値提供)のためには必要

Slide 12

Slide 12 text

#RAKUSMeetup なぜ︖ なぜ︖

Slide 13

Slide 13 text

ケーススタディ あるソフトウェアの開発 開発費以外は変動しないものとする ちゃんと作ると⾚字になることがわかっている ちょっと何かを改造したら利益が⾒込める ただし技術的負債がたまる

Slide 14

Slide 14 text

損益計算書を⾒てみましょう

Slide 15

Slide 15 text

ちゃんと作る場合 想定通り⾚字になります

Slide 16

Slide 16 text

技術的負債を受⼊れ 技術的負債を受⼊れ 開発コストを下げる 開発コストを下げる

Slide 17

Slide 17 text

するとこうなる 開発費を圧縮・⼀気に⿊字化

Slide 18

Slide 18 text

何が起こった︖ 何が起こった︖ 損益計算書から読み取れること 開発費が下がった 利益が出た すばらしい︕プロジェクトは成功だ︕

Slide 19

Slide 19 text

完 完

Slide 20

Slide 20 text

技術的負債はどこに︖ 技術的負債はどこに︖

Slide 21

Slide 21 text

バランスシートを⾒てみましょう

Slide 22

Slide 22 text

ちゃんと作る 安く作る

Slide 23

Slide 23 text

⾒えない ⾒えない

Slide 24

Slide 24 text

技術的負債が⾒えない理由 技術的負債が⾒えない理由 返済期⽇がない 借りて資産が増えるわけでもない 起こったのはP/Lの費⽤が下がっただけ つまり、帳簿上認識されにくい

Slide 25

Slide 25 text

そのままP/Lに異変が起こるまで 問題に気付かない

Slide 26

Slide 26 text

P/Lに起こる異変 P/Lに起こる異変 開発費・販管費が増加する 開発スピードの低下 品質の低下 → いわゆる技術的負債の「利息」

Slide 27

Slide 27 text

でも技術的負債を受け⼊れないと︖ でも技術的負債を受け⼊れないと︖ ⾚字 ビジネスとして成り⽴たない可能性がある

Slide 28

Slide 28 text

#RAKUSMeetup ここまでのまとめ ここまでのまとめ 技術的負債は⾒えにくい 返済期限がない 短期的にデメリットが⾒えない ある時急に影響が⾒え始める 技術的負債の分布の偏り 指数関数的な利息の増加

Slide 29

Slide 29 text

#RAKUSMeetup もくじ 1. 技術的負債ってなんだ 1. 負債とは 2. 技術的負債とは 3. ケーススタディ 2. 技術的負債に⽴ち向かう 1. でもその前に 2. 技術的負債にも種類がある 3. 返済戦略を考える

Slide 30

Slide 30 text

#RAKUSMeetup 技術的負債に⽴ち向かう 技術的負債に⽴ち向かう

Slide 31

Slide 31 text

その前に その前に

Slide 32

Slide 32 text

漠然としたイメージ P/Lへのインパクトが少ないうちに返せばよさそう

Slide 33

Slide 33 text

質問 本当に技術的負債は致命的な問題に直結する︖ 回答 たぶんそう 部分的にそう

Slide 34

Slide 34 text

なぜ「たぶん」「部分的」なのか 技術的負債は、多くの場合局所的なもの そこに触れなければ問題は表⾯化しない 全体に対して影響があるものは問題 アーキテクチャレベルでの負債 要件レベルでの負債 これは別の問題

Slide 35

Slide 35 text

技術的負債にも種類がある 技術的負債にも種類がある 局所的な技術的負債 全体に影響を及ぼす技術的負債

Slide 36

Slide 36 text

局所的な技術的負債 返さなくてもいい場合が多い 直接関係なければ影響がない 壊れていないコードを直すな → コスパが悪いと判断されがち

Slide 37

Slide 37 text

全体に影響を及ぼす技術的負債 まず直す価値があるのはこちら 修正コストが⾼くなりがち 影響が⼤きいため 問題と認識された頃には影響が⼤きすぎる → コスパが悪いと判断されがち

Slide 38

Slide 38 text

#RAKUSMeetup 返済戦略を考える 返済戦略を考える

Slide 39

Slide 39 text

基本戦略 基本戦略 費⽤対効果が⾒込めそうなときに、 技術的負債の返済をする

Slide 40

Slide 40 text

ビジネスなので仕⽅ない

Slide 41

Slide 41 text

おさらいすると、 局所的な技術的負債 → コスパが悪いと判断されがち 全体に影響を及ぼす技術的負債 → コスパが悪いと判断されがち

Slide 42

Slide 42 text

なぜなのか 技術的負債の返済にもコストがかかる → ⾒込めるリターンが説明しづらい 問題が表⾯化したときには影響が⼤きすぎる → コスト⼤、費⽤対効果が⾒込めない

Slide 43

Slide 43 text

詰んでます︖

Slide 44

Slide 44 text

もちろん 修正コストが低いうちから返済するのがベスト → コストが低いうちは費⽤対効果も⾼い

Slide 45

Slide 45 text

でも気づかれない でも気づかれない

Slide 46

Slide 46 text

#RAKUSMeetup 結論︓技術的負債の返済はコスパが悪い いわゆる気づいたときには⼿遅れ状態

Slide 47

Slide 47 text

#RAKUSMeetup もういちど基本戦略 もういちど基本戦略 費⽤対効果が⾒込めそうなときに、 技術的負債の返済をする

Slide 48

Slide 48 text

どんな時がチャンス︖

Slide 49

Slide 49 text

技術的負債を返済できるチャンス 返済コストが安く、すぐに効果が⾒込めるとき 返済しなければ破綻するとき ⼤きな⼯数を稼げそうなとき

Slide 50

Slide 50 text

いわゆるレガシーシステムの場合 返済コストが安く、すぐに効果が⾒込めるとき 返済しなければ破綻するとき ⼤きな⼯数を稼げそうなとき

Slide 51

Slide 51 text

つらいケース つらいケース

Slide 52

Slide 52 text

返済しなければ破綻するとき 借⾦の返済期限が来た 問題が肥⼤化しており、返済コストが⾼い状態

Slide 53

Slide 53 text

品質の低下で損失を出す、 納期の⼤幅超過が続くなど危険な状態

Slide 54

Slide 54 text

⻑く苦しい戦い ⻑く苦しい戦い

Slide 55

Slide 55 text

ベターなケース ベターなケース

Slide 56

Slide 56 text

⼤きな⼯数を稼げそうなとき 技術的負債の返済を紛れ込ませる 過去の技術的負債を取り込まない 品質を作りこむチャンス

Slide 57

Slide 57 text

こちらを狙いたい

Slide 58

Slide 58 text

#RAKUSMeetup じつは最近チャンスが到来しました ⼤きな新機能の追加がある かなりの規模の開発になる 追加部分からアーキテクチャ刷新に着⼿

Slide 59

Slide 59 text

チャンスを逃さないために チャンスを逃さないために レガシーでもあきらめない 座して死を待つだけではただつらいだけ できることを考える

Slide 60

Slide 60 text

チャンスを逃さないために チャンスを逃さないために 負債の局所化 負債を作りこまない 汚染を広げない リファクタリングしやすい状況を整える

Slide 61

Slide 61 text

#RAKUSMeetup まとめ 技術的負債 と 負債 は確かに似ている 技術的負債は⾒えにくい 返済もコスパが⼤事 チャンスはやってくる そのための準備はしておく