Upgrade to Pro — share decks privately, control downloads, hide ads and more …

技術的負債を見つめなおす

penguin045
September 16, 2020

 技術的負債を見つめなおす

#RAKUSMeetup

penguin045

September 16, 2020
Tweet

More Decks by penguin045

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. #RAKUSMeetup
    そもそも負債とは︖

    View Slide

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

    View Slide

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

    View Slide

  8. 脱線ここまで

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. #RAKUSMeetup
    なぜ︖
    なぜ︖

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide



  19. View Slide

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

    View Slide

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

    View Slide

  22. ちゃんと作る 安く作る

    View Slide

  23. ⾒えない
    ⾒えない

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. その前に
    その前に

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. ビジネスなので仕⽅ない

    View Slide

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

    View Slide

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

    View Slide

  43. 詰んでます︖

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. どんな時がチャンス︖

    View Slide

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

    View Slide

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

    View Slide

  51. つらいケース
    つらいケース

    View Slide

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

    View Slide

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

    View Slide

  54. ⻑く苦しい戦い
    ⻑く苦しい戦い

    View Slide

  55. ベターなケース
    ベターなケース

    View Slide

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

    View Slide

  57. こちらを狙いたい

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide