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
penguin045
September 16, 2020
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
技術的負債を見つめなおす
#RAKUSMeetup
penguin045
September 16, 2020
More Decks by penguin045
See All by penguin045
20年モノの巨大Webサービスの開発継続戦略 - ミドルウェアのバージョンアップとの向き合い方
penguin045
1
2.7k
言語の力でモデリングを表現する
penguin045
0
300
初めてのClojure
penguin045
0
730
PHPerがこれから「型」とお付き合いしていくために
penguin045
1
2.8k
社内最長老のシステムにPHPUnitで立ち向かう方法
penguin045
1
3.5k
Other Decks in Technology
See All in Technology
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
160
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.2k
失敗を資産に変えるClaude Code
shinyasaita
0
680
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
270
脆弱性対応、どこで線を引くか
rymiyamoto
1
400
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
180
LLMにもCAP定理があるという話
harukasakihara
0
380
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
170
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
130
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Believing is Seeing
oripsolob
1
150
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
The browser strikes back
jonoalderson
0
1.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Exploring anti-patterns in Rails
aemeredith
3
410
How to Ace a Technical Interview
jacobian
281
24k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
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 まとめ 技術的負債 と 負債 は確かに似ている 技術的負債は⾒えにくい 返済もコスパが⼤事 チャンスはやってくる そのための準備はしておく