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

負債と言わないことが負債と向き合うこと

 負債と言わないことが負債と向き合うこと

Kenichi Takahashi

November 20, 2023
Tweet

More Decks by Kenichi Takahashi

Other Decks in Technology

Transcript

  1. 負債と⾔わないことが
    負債と向き合うこと
    1
    ⾼橋健⼀ @kenchan / GMOペパボ株式会社
    2023/11/21 技術的負債に向き合う Online Conference

    View full-size slide

  2. 2
    ⾃⼰紹介
    GMOペパボ株式会社 技術責任者
    兼 EC事業部シニアエンジニアリングリード
    ⾼橋 健⼀ Kenichi Takahashi
    Rubyとアジャイルなソフトウェア開発が好きな
    ソフトウェアエンジニア。
    ⽇々の仕事は、EMとして全社のエンジニア組織
    作りと、カラーミーショップを運営するEC事業
    部における実質CTO。
    インターネットでは @kenchan で活動中。フォ
    ロー、チャンネル登録、⾼評価よろしくおねが
    いします。

    View full-size slide

  3. 3
    アジェンダ
    1. ”負債”のメタファーを乗り越える
    2. 15年以上続くサービスで取り組んでいること
    3. AIが前提となる時代における技術的”資本”の重要性

    View full-size slide

  4. ”負債”のメタファーを乗り越える
    • Ward Cunninghamは、問題領域へのチームの
    理解と⽬の前のシステムのギャップを負債と
    呼んだ。
    • 問題領域への理解はかならずチームの理解が
    先⾏する。それをシステムに反映するにあた
    り必ず時差が⽣じる。
    • 負債というメタファーは、⾦融システムの責
    任者が理解しやすい⾔葉で状況を説明するた
    めに考案した。
    “負債”のメタファーは⾦融システム開発の中で⽣まれた
    4
    【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wadaのブログ
    図. 時間の経過によってギャップが生まれるイメージ

    View full-size slide

  5. ”負債”のメタファーを乗り越える
    • 負債というメタファーが優れていたが故に
    議論が⽩熱する。
    • 例:稚拙なコードは負債か?
    • 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)

    View full-size slide

  6. ”負債”のメタファーを乗り越える
    • チームが問題領域を完全に理解し、それを完
    璧にシステムに反映できたら……!?
    • “なるほど完璧な作戦っスねーーーっ 不可能だと
    いう点に目をつぶればよぉ~ ”
    • 市場への投⼊が遅れれば遅れるほどその価値
    は⽬減りし、いつか損益分岐点を下回る。
    • 例: 競合に先を越される。市場がなくなる。
    現代では負債を借り⼊れずにシステム開発をすることは不可能(1)
    6
    図. 市場価値の損益分岐点のイメージ

    View full-size slide

  7. ”負債”のメタファーを乗り越える
    • ソフトウェアは何もしないと壊れる。
    • ビジネス的にも「何もしない」と顧客からは
    「壊れて⾒える」ようになる。
    • ある瞬間において完璧なシステムがあったと
    しても、世の中の変化によってギャップが⽣
    まれてしまう。
    現代では負債を借り⼊れずにシステム開発をすることは不可能(2)
    7
    Why is building the Ruby environment hard? - Speaker Deck

    View full-size slide

  8. ”負債”のメタファーを乗り越える
    • 経営者や事業責任者にとっての負債と”技術的負債”で伝えたいことのギャップ。
    • 負債(他⼈資本)は事業をレバレッジさせるための重要な道具であり、具体的な⾦額や返済
    期限として認識可能。
    • “技術的負債”で伝えたいことは、⽬に⾒えないものであることが多い。
    • メタファーは共通の理解を⼿助けするが、課題を解決してくれるわけではない。
    • 「技術的負債を返済しなければなりません」「なるほど。どんどんやろう!」
    • そんなことありますか?
    • デリバリー速度を低下させる要因であるなら「(技術的)負債である」で留まらずに
    詳細化することが解決に直結する。
    負債のメタファーは銀の弾丸ではない
    8

    View full-size slide

  9. ”負債”のメタファーを乗り越える
    • 負債というメタファーは⾦融システム開発において責任者とのコミュニケーション
    のために⽣まれた。
    • 「負債」という⾔葉によってかえってコミュニケーションコストがかかっている場
    合も散⾒される。
    • 事業としてプロダクト開発をしている限り、負債を0にすることはできないし、そ
    れを⽬指すべきでもない。
    • デリバリー速度が事業成⻑に⼤きく影響があることは周知の事実であり、具体的な
    課題について議論することが真に負債と向き合うことではないか。
    ここまでのまとめ
    9

    View full-size slide

  10. 10
    アジェンダ
    1. ”負債”のメタファーを乗り越える
    2. 15年以上続くサービスで取り組んでいること
    3. AIが前提となる時代における技術的”資本”の重要性

    View full-size slide

  11. 15年以上続くサービスで取り組んでいること
    • ロリポップ!のECカート機能を切り出して2005年にリリース。
    • バージョン管理がない時代からメンテナンスされているコードベース
    • 最古のコミットは2010年7⽉2⽇、Subversionへの「新規作成」というコミット
    • ⾃社データセンターとパブリッククラウドを併⽤したハイブリッドクラウド環境
    • バックエンドはPHPとRuby、フロントエンドはVue.js、Angular、jQuery
    • “技術的負債”と⽇々向き合いプロダクト開発を進めている。
    18年⽬を迎えるECサイト構築サービス「カラーミーショップ」
    12

    View full-size slide

  12. 15年以上続くサービスで取り組んでいること
    • リファクタリング
    • ボトムアップにコードを綺麗にしていく
    • リアーキテクティング
    • ⼤きなシステムをサブシステムに分解し、サブシステム単位で置き換えていく
    • リプレイス/リライト
    • ゼロから書き直す
    • 葬り
    • ソースコードを削除して機能を無くす
    技術的負債を返済するための3+1つのアプローチを愚直に実⾏する
    13
    技術的負債を返済するためのエンジニアリングとは? VOYAGE GROUPの実践に学ぶ【デブサミ 2021】

    View full-size slide

  13. 15年以上続くサービスで取り組んでいること
    テストを⽂化とするための研修とその実践(リファクタリング)
    14
    t_wadaさんによるTDDワークショップを開催しました - Pepabo Tech Portal

    View full-size slide

  14. • PHPとjQueryによるMPAにVue.jsを段階的に導⼊
    15年以上続くサービスで取り組んでいること
    画⾯をリニューアルする(リアーキテクティング)
    15
    「defineCustomElement」を活用したサービス共通の UIコンポーネントライブラリ - Vue Fes Japan 2023

    View full-size slide

  15. 15年以上続くサービスで取り組んでいること
    • システムとして⼀定の独⽴性がある場合は
    リプレースも検討する。
    • 避けられるなら避けたほうがよいが、やる
    のであればプロモーション等まで最⼤活⽤
    する。
    • 葬る場合はユーザメリットを提⽰して移⾏
    を促す。
    • 例: より便利な決済⽅法を提供する
    ショッピングカートを作り変える(リプレース+葬り)
    16

    View full-size slide

  16. 15年以上続くサービスで取り組んでいること
    • ドキュメントも問題領域への理解を反映
    させることができる対象。
    • コードやアーキテクチャの変更が困難な
    場合でもas-isとto-beを残す。
    ユビキタス⾔語を作る(ドキュメンテーション)
    17

    View full-size slide

  17. 15年以上続くサービスで取り組んでいること
    • ドキュメントは腐りやすい。
    • ドキュメントの共同所有は⼈類の夢。
    • 夢に近づくためには、使うことと問題解
    決した経験を積み重ねること。
    • ドキュメントを⾃然⾔語で検索できる
    slackbotを導⼊し運⽤している。
    ドキュメントを腐らせない唯⼀の⽅法は使うこと
    18

    View full-size slide

  18. 15年以上続くサービスで取り組んでいること
    • 負債というメタファーが、ドメインスペシャリストとのコミュニケーションのため
    に⽣まれたものであれば、その考え⽅⾃体を応⽤できるはず。
    • 会社、部⾨、プロジェクトにおいて重要視されていることはなにか。
    • ユーザ体験、デリバリーの速度、セキュリティ、コストetc
    • ⽬の前にある負債は、何にどのような影響があるのかを説明できるか。
    • 共通の認識を育むきっかけにできるものを探す。
    負債に向き合う⽂化づくり 〜共通認識を育む〜
    19

    View full-size slide

  19. 15年以上続くサービスで取り組んでいること
    • 負債のメタファーのままでは、借りてきた⾔葉の域を出ない。⽬の前の課題と⾃分達
    の⽂化を混ぜ合わせてやるべきことやる。
    • GMOペパボでは「やっていき‧のっていき」「ナイストライ」という⽂化と、その前
    提としての「ユーザファーストであること」を活⽤する。
    • やっていき≒リーダーシップ
    • のっていき≒フォロワーシップ
    • ナイストライ≒挑戦を⾃体を賞賛する
    ⽂化を育むためには既にある⽂化でレバレッジをかける
    20
    やっていき、のっていき / The Secret of Leadership and Followership - Speaker Deck

    View full-size slide

  20. 15年以上続くサービスで取り組んでいること
    • 18年⽬を迎えるカラーミーショップは多分に漏れず様々な技術的負債があり、そ
    れに対して⽇々改善に取り組んでいる。
    • 取り組みは⾄って普通で、リファクタリング、リアーキテクティング、リプレー
    ス、葬りを組み合わせている。
    • 負債というメタファーを活⽤しつつ、課題を解決するためには⾃分達の内にある⼤
    切にしていることとの繋りを活⽤する。
    ここまでのまとめ
    21

    View full-size slide

  21. 22
    アジェンダ
    1. ”負債”のメタファーとその限界
    2. 15年以上続くサービスで取り組んでいること
    3. AIが前提となる時代における技術的”資本”の重要性

    View full-size slide

  22. AIが前提となる時代における技術的”資本”の重要性
    • HTTPサーバのコーディングにおいては
    GitHub Copilotの有無で開発速度に⼤
    きな差があった。
    • ⼀⽅で、私達が⽇々向き合っている課
    題はHTTPサーバの実装よりもはるかに
    不確実性が⾼い上、事業ドメインの深
    い知識が必要。
    GitHub Copilot利⽤によって開発速度が55%向上
    23
    調査:GitHub Copilotが開発者の生産性と満足度に与える影響を数値化 - GitHubブログ

    View full-size slide

  23. AIが前提となる時代における技術的”資本”の重要性
    • Med-PaLM 2は医療ドメインに特化した
    LLMであり、⽶国医師免許試験の問題で
    「エキスパート」レベルのパフォーマン
    スを達成している。
    • LangChainやLlamaIndex、ChatGPTの
    Code interpreterなど外部から固有の知
    識を与えることで精度が向上する。
    ドメイン特化LLMやドメイン固有の知識を与える⼿法で精度が上がる
    24
    Med-PaLM (research.google)

    View full-size slide

  24. AIが前提となる時代における技術的”資本”の重要性
    • 社内の資産を活⽤することで⽣成系AIの
    価値はさらに⼤きなものになる。
    • ユビキタス⾔語、データベース構造、ナ
    レッジベースを活⽤できるか。
    • ソフトウェアの資産価値が競争⼒に直結
    する時代に。
    事業ドメインとプロダクトを理解したAIと⼀緒に開発する
    25
    Universe 2023: CopilotがGitHubをAIを駆使した開発者プラットフォームへと変貌させる - GitHubブログ

    View full-size slide

  25. AIが前提となる時代における技術的”資本”の重要性
    • ソフトウェア資産の構成要素は負債と資本。
    • チームの理解とプロダクトのギャップが負債
    であるなら、正しく反映されたものが資本。
    • 良いコード
    • 良いアーキテクチャ
    • 良いドキュメントetc
    • 負債を返却するというマインドセットから資
    本を増やすマインドセットへ転換。
    「技術的負債を返済する」から「技術的資本の割合を増やす」へ
    26
    Rethinking Technical Debt - Speaker Deck

    View full-size slide

  26. AIが前提となる時代における技術的”資本”の重要性
    • 具体的にやることは⼀緒なので⾔葉遊びであるかもしれない。
    • ⼀⽅で、⾔葉を変え、マインドセットを変えることで変化があるかもしれない。
    • ⽣成系AIの登場で(技術的)資本は組織の⽣産性に直結することは確実。
    • 良いコード‧アーキテクチャ‧ドキュメントの価値はスーパーインフレへ。
    負債を減らす or 資本を増やす
    27

    View full-size slide

  27. AIが前提となる時代における技術的”資本”の重要性
    • ⽣成系AIの活⽤は企業の競争⼒の源泉となる可能性が⾼い。
    • プロダクト開発においてもコード⽣成をはじめ⼀定の効果が報告されている。
    • ソフトウェアの資産価値で⽣成系AIの効果にレバレッジをかける。
    • 負債を返却するというマインドセットでうまくいなかければ、資本を増やすとい
    うマインドセットへの転換はどうか
    ここまでのまとめ
    28

    View full-size slide

  28. 29
    アジェンダ
    1. ”負債”のメタファーとその限界
    2. 15年以上続くサービスで取り組んでいること
    3. AIが前提となる時代における技術的”資本”の重要性

    View full-size slide

  29. 30
    Face dept, enjoy coding!

    View full-size slide