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

巨大なプロダクトにおける技術負債と戦った成功と失敗の軌跡(途中経過)

 巨大なプロダクトにおける技術負債と戦った成功と失敗の軌跡(途中経過)

技術負債、それは古いプロダクトであればあるほど、巨大なプロダクトであればあるほど頭を悩ませる問題だ。このセッションではかれこれ数年以上運用されているアプリに対し、私がチームの技術責任者として行った技術負債返済の成功と失敗について話そうと思う。
具体的には、
・一人で突っ走っても誰も付いて来れなかった話
・少人数で広く浅く進めていったら無限に終わらなかった話
・メンバー全員でアーキテクチャを決めてルールを整備したらうまく回り始めた話
・技術負債と戦う上で大切なこと
などを話そうと思う。

Keisuke kiuchi

October 28, 2021
Tweet

More Decks by Keisuke kiuchi

Other Decks in Programming

Transcript

  1. 巨⼤なプロダクトにおける技術
    負債と戦った成功と失敗の軌跡
    (途中経過)
    2021/10/28
    ⽊内 啓輔
    Yahoo! JAPAN

    View Slide

  2. 注意事項
    娘(4歳)が突撃してくる可能性があります。
    衝撃に備えてください

    View Slide

  3. Keisuke Kiuchi
    • 職業?:Androidエンジニア兼サーバサイドKotlinエンジニア
    兼iOSエンジニア兼チームの技術責任者兼4歳児のパパ=何でも屋
    • お仕事: 「Yahoo!ファイナンス」アプリの開発
    • 趣味で作ったアレコレ
    • ASのテンプレート:「Clean Architecture Template for kotlin」
    • 技術同⼈誌:「ラノベ⾵?にClean Architectureを学ぶ本」
    • ゲーム(Noita)のMOD:「More shop」,「Long life Gold」,etc..
    • 最近の悩み:最近めっきり勉強する時間が取れない
    • SNS
    • Twitter: @fei_kome
    • Github: @kiuchikeisuke
    • Qiita: @k_keisuke

    View Slide

  4. View Slide

  5. 今回のお話とオチ

    View Slide

  6. 今回のお話とオチ
    •チームビルドに近いお話
    •4年前の夏(私JOIN)〜今に⾄るまでの
    技術負債返済の軌跡のお話
    •⼤体は失敗ばっかしてたよってお話
    •でも今はいい感じになったよってお話

    View Slide

  7. 今回のお話とオチ
    •まずは信頼を勝ち取れ
    •負債返済だけ!開発だけ!ってやると
    (多分)失敗するぞ
    •チーム全員で同じ⽅向を向けるように
    しよう

    View Slide

  8. 時系列
    •転職前
    •今のチームにJOIN~JOINから1年くらい
    •JOINから1年後~2年後
    •JOIN2年後~今

    View Slide

  9. 転職前の私…
    •Android 完 全 に 理 解 し た 状態
    •改善・負債返済
    ⼀⼈でもやっていくぞ!!!
    •他チームの改善にも
    どんどん⼝を出すぞ!!!
    こう⾒えてこいつ、
    チームジョインして
    半年未満である

    View Slide

  10. 何が起きたか

    View Slide

  11. 総スカンを喰らう…
    •チームメンバー
    •「まずは普通の開発してね?」
    •「今はまだその時ではないんだよ…」
    •別チームメンバー
    •「いや君、誰よ…」
    •「うちのやり⽅があるんで…」

    View Slide

  12. 学び
    •⼀⼈で突っ⾛って返済しようとしてもダメ
    •「こいつなら任せてもいいな」
    と思われるようにまずは信頼を得る

    View Slide

  13. 時系列
    •転職前
    •今のチームにJOIN~JOINから1年くらい
    •JOINから1年後~2年後
    •JOIN2年後~今

    View Slide

  14. JOIN〜JOIN1年くらい
    •急がば回れ、まずは
    普段の開発をしっかりやった
    •同時に徐々に改善案を出して
    (根回しして)いった

    View Slide

  15. 何が起きたか

    View Slide

  16. 改善DAYを勝ち取る
    •毎週⾦曜⽇は改善DAY
    •技術負債返済や改善活動専⽤の⽇
    •上司も説得し、堂々と技術負債
    に向き合う時間を獲得

    View Slide

  17. 勝ったな、⾵呂⼊ってk(ry

    View Slide

  18. 時系列
    •転職前
    •今のチームにJOIN~JOINから1年くらい
    •JOINから1年後~2年後
    •JOIN2年後~今

    View Slide

  19. 調⼦に乗って過去の学びを忘れる
    •⼀気に技術負債を返済しようと
    ⼀⼈で実装する
    •マルチモジュール化対応
    •Clean Architecture化対応
    •BuildSrc対応
    •LiveData対応
    •Etc..
    こう⾒えてこいつ、
    過去の学びを忘れている

    View Slide

  20. 何が起きたか

    View Slide

  21. チームメンバー置いてきぼり…
    •「現⾏の開発との兼ね合いどうするの?」
    •「どう実装すればいいかよくわからない…」

    View Slide

  22. 学び
    •⼀⼈で突っ⾛って返済しようとしてもダメ
    •改善DAYで⼀気にやるパワープレイもNG
    •チームメンバーの同意も必要

    View Slide

  23. 時系列
    •転職前
    •今のチームにJOIN~JOINから1年くらい
    •JOINから1年後~2年後
    •JOIN2年後~今

    View Slide

  24. 学びを得た私、やり⽅を変える
    •ペアプロでリファクタリングをする
    •メンバー3⼈のうち⾃分ともう⼀⼈でペアプロ
    •現⾏のコードとの兼ね合いを考え
    無理ない範囲でリファクタリング
    •Clean Architecture化 -> OK
    •マルチモジュール化 -> ⾒送り
    •LiveData対応 -> ⾒送り
    etc..

    View Slide

  25. 何が起きたか

    View Slide

  26. 1画⾯を理想系に置き換えられた
    •共通部&1画⾯のクラスをClean Architecture化!
    •BuildSrc導⼊!
    •Gradle.kts対応!

    View Slide

  27. 1画⾯で半年かかったけどな…

    View Slide

  28. 新たな問題が浮上してくる
    •週1の作業だと遅々として進まない
    •1画⾯で半年なら、アプリ全体(約100画⾯)
    だったら…50年..?
    •チームメンバー全員でゴールを共有
    できてない
    •ここはどう実装どうする?
    •設計⽅針どうなってるの?

    View Slide

  29. 時系列
    •転職前
    •今のチームにJOIN~JOINから1年くらい
    •JOINから1年後~2年後
    •JOIN2年後~今

    View Slide

  30. 学びを得た私、再びやり⽅を変える
    •普段の開発と負債返済を並⾏させる
    •幸運?なことにリプレース系の開発が多く発⽣
    •ゴールとなる設計の⼀枚絵をみんなで作る
    •実装時のルールや⽅針、歴史的背景を
    ドキュメントとしてまとめる
    •アプリの構成図を作る
    •↑を実現するための
    IFクラスやツールを整備する

    View Slide

  31. ゴールとなる設計の⼀枚絵
    ※:社外秘情報が含まれるため⼀部ぼかしを⼊れてます

    View Slide

  32. 何が起きたか

    View Slide

  33. 何も(問題が)起きなくなった
    •細かい相談事はあるけど、ちゃぶ台返しの
    ような問題は発⽣しなくなった
    •新メンバーの参画が激早になった
    •JOIN2⽇⽬で開発開始
    •メンバー個々⼈が、設計や
    負債返済を考える⽂化ができた
    •問題が起きても即仕組みで改善
    する⽂化ができた

    View Slide

  34. まとめ

    View Slide

  35. まとめ
    •まずは信頼を勝ち取れ
    •負債返済だけ!開発だけ!ってやると
    (多分)失敗するぞ
    •チーム全員で同じ⽅向を向けるように
    しよう
    •ドキュメント、構成図、クラス設計、etc..
    •みんなフッ軽であれ

    View Slide