Slide 1

Slide 1 text

© GO Inc. 2023.07.04 タクシーアプリ『GO』iOSアプリ開発 マネージャー / 今入庸介 GO株式会社 大規模リファクタリングに投資する価値

Slide 2

Slide 2 text

© GO Inc. 2 自己紹介 プロフィール写真 GO株式会社 ユーザーシステム1グループ / 今入庸介 タクシーアプリ『GO』のiOSアプリ開発 ● 新機能開発 ● アーキテクチャの選定・導入 ● アプリ全体の設計、新機能開発 ● CI 環境の構築・整備、自動化の促進 ● チーミング、エンジニアの育成 @kamekiti

Slide 3

Slide 3 text

© GO Inc. 本日お話すること 3 ● 『GO』iOS アプリで行った大規模リファクタリングの概要 ● 大規模リファクタリングの成功の鍵 ○ どういう観点に気をつけると成功につながるか ● 大規模リファクタリングによる効果 ○ 2年経ってどんな恩恵が受けられたのか

Slide 4

Slide 4 text

© GO Inc. 『GO』iOS アプリにおける大規模リファクタリング 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

© GO Inc. 大規模リファクタリングの成功の鍵 6

Slide 7

Slide 7 text

© GO Inc. 大規模リファクタリングの成功の鍵 ① ● リファクタリングの対象範囲を限定する ○ まず課題を明確にしておく ○ 課題に直結する部分に限定してリファクタリングした ■ 今回はビジネスロジックのルーティング部分 ○ やらないことも決めておく ■ 目的から大きく逸れる部分は手を付けないようにした ■ いろいろ手を付けると収拾がつかなくなる 7

Slide 8

Slide 8 text

© GO Inc. ● リファクタリング専門部隊を構成した ○ 事業戦略上の案件を止めることはできない ■ リファクタリングが原因でリリースを遅らせることは厳しい ○ リファクタリングに集中できるので効率もよい 大規模リファクタリングの成功の鍵 ② 事業戦略上の案件を開発するチーム リファクタリングや自動化に専念するチーム 8

Slide 9

Slide 9 text

© GO Inc. 大規模リファクタリングの成功の鍵 ③ ● まわりからの理解を得る / まわりの状況に配慮する ○ モチベーションは何で、どういう効果が得られるのか、どう解決するのか ■ 事業戦略上の案件開発のチームメンバーにも納得してもらう ○ リファクタリング専門部隊も事業のロードマップは把握しておく ■ どのようにリファクタリングを進めていくかの参考になる ■ どのタイミングでリリースするか検討する材料になる 9

Slide 10

Slide 10 text

© GO Inc. より詳細を知りたい方は「大規模リファクタリングの極意」を参考に! https://speakerdeck.com/imairi/da-gui-mo-rihuakutaringufalseji-yi https://www.youtube.com/watch?v=yWO47AFkDls 10

Slide 11

Slide 11 text

© GO Inc. 大規模リファクタリングから2年、どう変わったのか? 11

Slide 12

Slide 12 text

© GO Inc. アプリも組織も成長を続けられるようになった 大規模リファクタリングから2年、どう変わったのか? ① ● 増え続ける新機能、開発メンバー ○ ビジネスロジックが凄まじい勢いで拡張し続けている ■ 160個のコンポーネントが296個まで拡大 ■ 適切な単位で分解し、スケールさせることができている ○ アプリ開発メンバーも 1.5 倍になった ■ 事業戦略上の案件開発チームが 3 チーム、改善チームが 1 チーム 12

Slide 13

Slide 13 text

© GO Inc. エンジニアにとって開発がしやすい環境になった ● 日々の開発体験が向上 ○ 設計思想が共有され、遵守されている ■ 責務が明確になった ● コードレビューでの着目すべき点が明瞭になる ● どこに何を書けばよいのか迷わなくなった ○ 実装前に設計を共有して認識合わせができる ■ 実装後の大きな手戻りが防げる 大規模リファクタリングから2年、どう変わったのか? ② 13

Slide 14

Slide 14 text

© GO Inc. 大規模リファクタリングから2年、どう変わったのか? ③ ● リファクタリングも継続されている ○ 大規模なリファクタリングを一度やれば解決というわけではない ■ 技術的負債は日々溜まり続ける ■ 適度なタイミングで小さくリファクタリングが必要 ○ 事業戦略上の案件と共にリファクタリングができるようになった ■ リファクタリング専門部隊はすでに解体されている 最初の1年は大変だったが、 現在は小さくリファクタリングする余裕が生まれている 14

Slide 15

Slide 15 text

© GO Inc. まとめ 15

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

文章・画像等の内容の無断転載及び複製等の行為はご遠慮ください。 © GO Inc.