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

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

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

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

9d4a459864f822fb5aa7a5741e60e26b?s=128

Keisuke kiuchi

October 28, 2021
Tweet

More Decks by Keisuke kiuchi

Other Decks in Programming

Transcript

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

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

  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
  4. None
  5. 今回のお話とオチ

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

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

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

  9. 転職前の私… •Android 完 全 に 理 解 し た 状態

    •改善・負債返済 ⼀⼈でもやっていくぞ!!! •他チームの改善にも どんどん⼝を出すぞ!!! こう⾒えてこいつ、 チームジョインして 半年未満である
  10. 何が起きたか

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

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

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

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

  15. 何が起きたか

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

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

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

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

    過去の学びを忘れている
  20. 何が起きたか

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

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

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

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

    -> ⾒送り •LiveData対応 -> ⾒送り etc..
  25. 何が起きたか

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

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

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

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

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

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

  32. 何が起きたか

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

  34. まとめ

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