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
1.5k
技術的負債を見つめなおす
#RAKUSMeetup
penguin045
September 16, 2020
Tweet
Share
More Decks by penguin045
See All by penguin045
20年モノの巨大Webサービスの開発継続戦略 - ミドルウェアのバージョンアップとの向き合い方
penguin045
1
2.4k
言語の力でモデリングを表現する
penguin045
0
280
初めてのClojure
penguin045
0
690
PHPerがこれから「型」とお付き合いしていくために
penguin045
1
2.6k
社内最長老のシステムにPHPUnitで立ち向かう方法
penguin045
1
3.2k
Other Decks in Technology
See All in Technology
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
120
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
420
ガチな登山用デバイスからこんにちは
halka
1
240
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
140
Agile PBL at New Grads Trainings
kawaguti
PRO
1
410
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
230
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
160
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
290
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
450
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
540
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
200
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Six Lessons from altMBA
skipperchong
28
4k
Embracing the Ebb and Flow
colly
87
4.8k
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 まとめ 技術的負債 と 負債 は確かに似ている 技術的負債は⾒えにくい 返済もコスパが⼤事 チャンスはやってくる そのための準備はしておく