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
Kenichi Takahashi
November 20, 2023
Technology
5
3.6k
負債と言わないことが負債と向き合うこと
技術的負債に向き合う Online Conference - connpass
での発表資料です。
Kenichi Takahashi
November 20, 2023
Tweet
Share
More Decks by Kenichi Takahashi
See All by Kenichi Takahashi
Lv1,2の開発生産性を経営と繋ぐ
kenchan
4
1.7k
「トップ10プランナー」からはじめる目標設定
kenchan
5
3.5k
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティング
kenchan
0
82
カラーミーショップは私たちが作っています
kenchan
0
1.4k
カラーミーショップ 2022 / COLORME SHOP 2022
kenchan
0
610
Amazon RDS移行のための 性能検証でわかった2つのこと
kenchan
3
3.8k
ポストコロナの商売を支えるカラーミーショップのアーキテクチャのこれから / The new architecture of COLORME SHOP in the Post-COVID-19 world
kenchan
2
2k
ペパボのエンジニアリングマネジメント一問一答 / engineering-management-q-and-a-in-gmo-pepabo
kenchan
7
2.5k
POStudy塾で学ぶワークショップデザインとファシリテーション / workshop-design-and-facilitation
kenchan
0
640
Other Decks in Technology
See All in Technology
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
32k
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
310
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
160
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
270
第3回Snowflake女子会_LT登壇資料(合成データ)_Taro_CCCMK
tarotaro0129
0
190
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.3k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.5k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Navigating Team Friction
lara
183
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Unsuck your backbone
ammeep
669
57k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Automating Front-end Workflow
addyosmani
1366
200k
The Cult of Friendly URLs
andyhume
78
6.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Transcript
負債と⾔わないことが 負債と向き合うこと 1 ⾼橋健⼀ @kenchan / GMOペパボ株式会社 2023/11/21 技術的負債に向き合う Online
Conference
2 ⾃⼰紹介 GMOペパボ株式会社 技術責任者 兼 EC事業部シニアエンジニアリングリード ⾼橋 健⼀ Kenichi Takahashi
Rubyとアジャイルなソフトウェア開発が好きな ソフトウェアエンジニア。 ⽇々の仕事は、EMとして全社のエンジニア組織 作りと、カラーミーショップを運営するEC事業 部における実質CTO。 インターネットでは @kenchan で活動中。フォ ロー、チャンネル登録、⾼評価よろしくおねが いします。
3 アジェンダ 1. ”負債”のメタファーを乗り越える 2. 15年以上続くサービスで取り組んでいること 3. AIが前提となる時代における技術的”資本”の重要性
”負債”のメタファーを乗り越える • Ward Cunninghamは、問題領域へのチームの 理解と⽬の前のシステムのギャップを負債と 呼んだ。 • 問題領域への理解はかならずチームの理解が 先⾏する。それをシステムに反映するにあた り必ず時差が⽣じる。
• 負債というメタファーは、⾦融システムの責 任者が理解しやすい⾔葉で状況を説明するた めに考案した。 “負債”のメタファーは⾦融システム開発の中で⽣まれた 4 【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wadaのブログ 図. 時間の経過によってギャップが生まれるイメージ
”負債”のメタファーを乗り越える • 負債というメタファーが優れていたが故に 議論が⽩熱する。 • 例:稚拙なコードは負債か? • Martin Fowlerの四象限の整理やSoftware Engineering
Instituteによる12の分類など整 理が進む。 • メタファーを利⽤しつつ、より具体的な問題 に対して向き合うことが重要となった。 (技術的)負債のメタファーの乱⽤、分類、再考が進む 5 技術的負債の四象限 - Martin Fowler's Bliki (ja) (bliki-ja.github.io) Towards an Ontology of Terms on Technical Debt (researchgate.net)
”負債”のメタファーを乗り越える • チームが問題領域を完全に理解し、それを完 璧にシステムに反映できたら……!? • “なるほど完璧な作戦っスねーーーっ 不可能だと いう点に目をつぶればよぉ~ ” •
市場への投⼊が遅れれば遅れるほどその価値 は⽬減りし、いつか損益分岐点を下回る。 • 例: 競合に先を越される。市場がなくなる。 現代では負債を借り⼊れずにシステム開発をすることは不可能(1) 6 図. 市場価値の損益分岐点のイメージ
”負債”のメタファーを乗り越える • ソフトウェアは何もしないと壊れる。 • ビジネス的にも「何もしない」と顧客からは 「壊れて⾒える」ようになる。 • ある瞬間において完璧なシステムがあったと しても、世の中の変化によってギャップが⽣ まれてしまう。
現代では負債を借り⼊れずにシステム開発をすることは不可能(2) 7 Why is building the Ruby environment hard? - Speaker Deck
”負債”のメタファーを乗り越える • 経営者や事業責任者にとっての負債と”技術的負債”で伝えたいことのギャップ。 • 負債(他⼈資本)は事業をレバレッジさせるための重要な道具であり、具体的な⾦額や返済 期限として認識可能。 • “技術的負債”で伝えたいことは、⽬に⾒えないものであることが多い。 • メタファーは共通の理解を⼿助けするが、課題を解決してくれるわけではない。
• 「技術的負債を返済しなければなりません」「なるほど。どんどんやろう!」 • そんなことありますか? • デリバリー速度を低下させる要因であるなら「(技術的)負債である」で留まらずに 詳細化することが解決に直結する。 負債のメタファーは銀の弾丸ではない 8
”負債”のメタファーを乗り越える • 負債というメタファーは⾦融システム開発において責任者とのコミュニケーション のために⽣まれた。 • 「負債」という⾔葉によってかえってコミュニケーションコストがかかっている場 合も散⾒される。 • 事業としてプロダクト開発をしている限り、負債を0にすることはできないし、そ れを⽬指すべきでもない。
• デリバリー速度が事業成⻑に⼤きく影響があることは周知の事実であり、具体的な 課題について議論することが真に負債と向き合うことではないか。 ここまでのまとめ 9
10 アジェンダ 1. ”負債”のメタファーを乗り越える 2. 15年以上続くサービスで取り組んでいること 3. AIが前提となる時代における技術的”資本”の重要性
None
15年以上続くサービスで取り組んでいること • ロリポップ!のECカート機能を切り出して2005年にリリース。 • バージョン管理がない時代からメンテナンスされているコードベース • 最古のコミットは2010年7⽉2⽇、Subversionへの「新規作成」というコミット • ⾃社データセンターとパブリッククラウドを併⽤したハイブリッドクラウド環境 •
バックエンドはPHPとRuby、フロントエンドはVue.js、Angular、jQuery • “技術的負債”と⽇々向き合いプロダクト開発を進めている。 18年⽬を迎えるECサイト構築サービス「カラーミーショップ」 12
15年以上続くサービスで取り組んでいること • リファクタリング • ボトムアップにコードを綺麗にしていく • リアーキテクティング • ⼤きなシステムをサブシステムに分解し、サブシステム単位で置き換えていく •
リプレイス/リライト • ゼロから書き直す • 葬り • ソースコードを削除して機能を無くす 技術的負債を返済するための3+1つのアプローチを愚直に実⾏する 13 技術的負債を返済するためのエンジニアリングとは? VOYAGE GROUPの実践に学ぶ【デブサミ 2021】
15年以上続くサービスで取り組んでいること テストを⽂化とするための研修とその実践(リファクタリング) 14 t_wadaさんによるTDDワークショップを開催しました - Pepabo Tech Portal
• PHPとjQueryによるMPAにVue.jsを段階的に導⼊ 15年以上続くサービスで取り組んでいること 画⾯をリニューアルする(リアーキテクティング) 15 「defineCustomElement」を活用したサービス共通の UIコンポーネントライブラリ - Vue Fes
Japan 2023
15年以上続くサービスで取り組んでいること • システムとして⼀定の独⽴性がある場合は リプレースも検討する。 • 避けられるなら避けたほうがよいが、やる のであればプロモーション等まで最⼤活⽤ する。 • 葬る場合はユーザメリットを提⽰して移⾏
を促す。 • 例: より便利な決済⽅法を提供する ショッピングカートを作り変える(リプレース+葬り) 16
15年以上続くサービスで取り組んでいること • ドキュメントも問題領域への理解を反映 させることができる対象。 • コードやアーキテクチャの変更が困難な 場合でもas-isとto-beを残す。 ユビキタス⾔語を作る(ドキュメンテーション) 17
15年以上続くサービスで取り組んでいること • ドキュメントは腐りやすい。 • ドキュメントの共同所有は⼈類の夢。 • 夢に近づくためには、使うことと問題解 決した経験を積み重ねること。 • ドキュメントを⾃然⾔語で検索できる
slackbotを導⼊し運⽤している。 ドキュメントを腐らせない唯⼀の⽅法は使うこと 18
15年以上続くサービスで取り組んでいること • 負債というメタファーが、ドメインスペシャリストとのコミュニケーションのため に⽣まれたものであれば、その考え⽅⾃体を応⽤できるはず。 • 会社、部⾨、プロジェクトにおいて重要視されていることはなにか。 • ユーザ体験、デリバリーの速度、セキュリティ、コストetc • ⽬の前にある負債は、何にどのような影響があるのかを説明できるか。
• 共通の認識を育むきっかけにできるものを探す。 負債に向き合う⽂化づくり 〜共通認識を育む〜 19
15年以上続くサービスで取り組んでいること • 負債のメタファーのままでは、借りてきた⾔葉の域を出ない。⽬の前の課題と⾃分達 の⽂化を混ぜ合わせてやるべきことやる。 • GMOペパボでは「やっていき‧のっていき」「ナイストライ」という⽂化と、その前 提としての「ユーザファーストであること」を活⽤する。 • やっていき≒リーダーシップ •
のっていき≒フォロワーシップ • ナイストライ≒挑戦を⾃体を賞賛する ⽂化を育むためには既にある⽂化でレバレッジをかける 20 やっていき、のっていき / The Secret of Leadership and Followership - Speaker Deck
15年以上続くサービスで取り組んでいること • 18年⽬を迎えるカラーミーショップは多分に漏れず様々な技術的負債があり、そ れに対して⽇々改善に取り組んでいる。 • 取り組みは⾄って普通で、リファクタリング、リアーキテクティング、リプレー ス、葬りを組み合わせている。 • 負債というメタファーを活⽤しつつ、課題を解決するためには⾃分達の内にある⼤ 切にしていることとの繋りを活⽤する。
ここまでのまとめ 21
22 アジェンダ 1. ”負債”のメタファーとその限界 2. 15年以上続くサービスで取り組んでいること 3. AIが前提となる時代における技術的”資本”の重要性
AIが前提となる時代における技術的”資本”の重要性 • HTTPサーバのコーディングにおいては GitHub Copilotの有無で開発速度に⼤ きな差があった。 • ⼀⽅で、私達が⽇々向き合っている課 題はHTTPサーバの実装よりもはるかに 不確実性が⾼い上、事業ドメインの深
い知識が必要。 GitHub Copilot利⽤によって開発速度が55%向上 23 調査:GitHub Copilotが開発者の生産性と満足度に与える影響を数値化 - GitHubブログ
AIが前提となる時代における技術的”資本”の重要性 • Med-PaLM 2は医療ドメインに特化した LLMであり、⽶国医師免許試験の問題で 「エキスパート」レベルのパフォーマン スを達成している。 • LangChainやLlamaIndex、ChatGPTの Code
interpreterなど外部から固有の知 識を与えることで精度が向上する。 ドメイン特化LLMやドメイン固有の知識を与える⼿法で精度が上がる 24 Med-PaLM (research.google)
AIが前提となる時代における技術的”資本”の重要性 • 社内の資産を活⽤することで⽣成系AIの 価値はさらに⼤きなものになる。 • ユビキタス⾔語、データベース構造、ナ レッジベースを活⽤できるか。 • ソフトウェアの資産価値が競争⼒に直結 する時代に。
事業ドメインとプロダクトを理解したAIと⼀緒に開発する 25 Universe 2023: CopilotがGitHubをAIを駆使した開発者プラットフォームへと変貌させる - GitHubブログ
AIが前提となる時代における技術的”資本”の重要性 • ソフトウェア資産の構成要素は負債と資本。 • チームの理解とプロダクトのギャップが負債 であるなら、正しく反映されたものが資本。 • 良いコード • 良いアーキテクチャ
• 良いドキュメントetc • 負債を返却するというマインドセットから資 本を増やすマインドセットへ転換。 「技術的負債を返済する」から「技術的資本の割合を増やす」へ 26 Rethinking Technical Debt - Speaker Deck
AIが前提となる時代における技術的”資本”の重要性 • 具体的にやることは⼀緒なので⾔葉遊びであるかもしれない。 • ⼀⽅で、⾔葉を変え、マインドセットを変えることで変化があるかもしれない。 • ⽣成系AIの登場で(技術的)資本は組織の⽣産性に直結することは確実。 • 良いコード‧アーキテクチャ‧ドキュメントの価値はスーパーインフレへ。 負債を減らす
or 資本を増やす 27
AIが前提となる時代における技術的”資本”の重要性 • ⽣成系AIの活⽤は企業の競争⼒の源泉となる可能性が⾼い。 • プロダクト開発においてもコード⽣成をはじめ⼀定の効果が報告されている。 • ソフトウェアの資産価値で⽣成系AIの効果にレバレッジをかける。 • 負債を返却するというマインドセットでうまくいなかければ、資本を増やすとい うマインドセットへの転換はどうか
ここまでのまとめ 28
29 アジェンダ 1. ”負債”のメタファーとその限界 2. 15年以上続くサービスで取り組んでいること 3. AIが前提となる時代における技術的”資本”の重要性
30 Face dept, enjoy coding!