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

大規模リファクタリングに投資する価値

 大規模リファクタリングに投資する価値

『リプレイスしたあと、実際どう?システム再構築への挑戦LT大会』で登壇した内容です。
https://findy.connpass.com/event/287140/

===
『大規模リファクタリングの極意』
https://speakerdeck.com/imairi/da-gui-mo-rihuakutaringufalseji-yi
https://www.youtube.com/watch?v=yWO47AFkDls

Yosuke Imairi

July 03, 2023
Tweet

More Decks by Yosuke Imairi

Other Decks in Technology

Transcript

  1. © GO Inc. 2 自己紹介 プロフィール写真 GO株式会社 ユーザーシステム1グループ / 今入庸介

    タクシーアプリ『GO』のiOSアプリ開発 • 新機能開発 • アーキテクチャの選定・導入 • アプリ全体の設計、新機能開発 • CI 環境の構築・整備、自動化の促進 • チーミング、エンジニアの育成 @kamekiti
  2. © GO Inc. 本日お話すること 3 • 『GO』iOS アプリで行った大規模リファクタリングの概要 • 大規模リファクタリングの成功の鍵

    ◦ どういう観点に気をつけると成功につながるか • 大規模リファクタリングによる効果 ◦ 2年経ってどんな恩恵が受けられたのか
  3. © GO Inc. 『GO』iOS アプリにおける大規模リファクタリング • リアーキテクチャ ◦ 「MVVM(画面ベースのアーキテクチャ) +

    独自ルーティング」だった仕組みを RIBs アーキテクチャ(ロジックベースのアーキテクチャ)に変更 • リアーキテクチャをした背景 ◦ アプリの機能拡大に伴い、独自ルーティングの仕組みに限界がきた ◦ 画面遷移が少ないアプリに置いて MVVM だと設計が困難になった ◦ これらが原因で開発速度の低下、バグや運用コストの増加が発生していた • リアーキテクチャによる影響範囲 ◦ 最初の1年で15万行以上のコードを書き直した 5
  4. © GO Inc. 大規模リファクタリングの成功の鍵 ① • リファクタリングの対象範囲を限定する ◦ まず課題を明確にしておく ◦

    課題に直結する部分に限定してリファクタリングした ▪ 今回はビジネスロジックのルーティング部分 ◦ やらないことも決めておく ▪ 目的から大きく逸れる部分は手を付けないようにした ▪ いろいろ手を付けると収拾がつかなくなる 7
  5. © GO Inc. • リファクタリング専門部隊を構成した ◦ 事業戦略上の案件を止めることはできない ▪ リファクタリングが原因でリリースを遅らせることは厳しい ◦

    リファクタリングに集中できるので効率もよい 大規模リファクタリングの成功の鍵 ② 事業戦略上の案件を開発するチーム リファクタリングや自動化に専念するチーム 8
  6. © GO Inc. 大規模リファクタリングの成功の鍵 ③ • まわりからの理解を得る / まわりの状況に配慮する ◦

    モチベーションは何で、どういう効果が得られるのか、どう解決するのか ▪ 事業戦略上の案件開発のチームメンバーにも納得してもらう ◦ リファクタリング専門部隊も事業のロードマップは把握しておく ▪ どのようにリファクタリングを進めていくかの参考になる ▪ どのタイミングでリリースするか検討する材料になる 9
  7. © GO Inc. アプリも組織も成長を続けられるようになった 大規模リファクタリングから2年、どう変わったのか? ① • 増え続ける新機能、開発メンバー ◦ ビジネスロジックが凄まじい勢いで拡張し続けている

    ▪ 160個のコンポーネントが296個まで拡大 ▪ 適切な単位で分解し、スケールさせることができている ◦ アプリ開発メンバーも 1.5 倍になった ▪ 事業戦略上の案件開発チームが 3 チーム、改善チームが 1 チーム 12
  8. © GO Inc. エンジニアにとって開発がしやすい環境になった • 日々の開発体験が向上 ◦ 設計思想が共有され、遵守されている ▪ 責務が明確になった

    • コードレビューでの着目すべき点が明瞭になる • どこに何を書けばよいのか迷わなくなった ◦ 実装前に設計を共有して認識合わせができる ▪ 実装後の大きな手戻りが防げる 大規模リファクタリングから2年、どう変わったのか? ② 13
  9. © GO Inc. 大規模リファクタリングから2年、どう変わったのか? ③ • リファクタリングも継続されている ◦ 大規模なリファクタリングを一度やれば解決というわけではない ▪

    技術的負債は日々溜まり続ける ▪ 適度なタイミングで小さくリファクタリングが必要 ◦ 事業戦略上の案件と共にリファクタリングができるようになった ▪ リファクタリング専門部隊はすでに解体されている 最初の1年は大変だったが、 現在は小さくリファクタリングする余裕が生まれている 14
  10. © GO Inc. • 大規模リファクタリングに投資する価値 ◦ 短期的にはその費用対効果は低いかもしれない ▪ 莫大な時間とコストがかかる ▪

    リファクタリングをしてもユーザに届ける価値に本質的な変化はない ◦ 長期的にみると大きな恩恵を受けられる ▪ 日々の開発体験がよくなり、開発スピードが向上する ▪ 組織の拡大に伴い、並行して取り組めることが増える ▪ 見通しのよい設計や仕組みになり、バグを減らせる(運用コスト削減) ▪ その結果、余裕が生まれて、事業戦略上の案件も進めやすくなる まとめ 16