この記事は CyberAgent Developers Advent Calendar 2024 19日目の記事です。
こんにちは。株式会社タップル iOS Groupのリーダー であり iOS の Next Experts を担当している永野(@kazuma_nagano)です。
はじめに
近年、iOSアプリ開発のトレンドは大きく様変わりし続けています。SwiftUI、Swift Concurrency、Observation Frameworkといった新技術が目まぐるしく登場し、画面構築手法や非同期処理、状態管理のプラクティスが変革しています。 しかし、既存のUIKitベースの画面やRxSwiftを多用したコードベースへの段階的な新技術適用は難しく、結果として大規模なリファクタリングが避けられない状況も少なくありません。
こうした大規模リファクタリングは多大な工数を要します。そのため、「投資に見合う効果があるのか?」「どうやって事業価値に結びつけ、組織的に評価される形を作るのか?」といった悩みを抱えるエンジニアリング組織は多いのではないでしょうか。 リファクタリングをエンジニアの自己満足で終わらせず、組織として正しく評価され、次なる改善への礎とするためには、技術選定やプロジェクト進行上の工夫が求められます。
本記事では、マッチングアプリ「タップル」の開発現場における経験や知見を元に、iOS大規模リファクタリングを事業貢献へ繋げるための考え方や手法を紹介します。 特に、「機能刷新とセットで進める」「難易度を下げる」「学習と共に進める」「ドキュメント化を推進する」という4つの視点を整理し、それぞれを深く掘り下げることで、技術的改善がプロダクト価値向上につながるアプローチをお伝えします。
iOS技術進化と大規模リファクタリングの必要性
iOS開発は、ここ数年で飛躍的な変化を遂げています。 UIはUIKitからSwiftUIへ、非同期処理はRxSwiftやGCDからasync/await
を用いたSwift Concurrencyへ、さらにはObservation Frameworkでの状態管理が登場し、開発様式が根本から変わりつつあります。 これらの新技術を組み合わせることで、より高い開発生産性と保守性、ユーザビリティやパフォーマンスの向上が期待できます。
しかし、既存アプリケーションは過去のベストプラクティスやライブラリに根差しており、部分的な変更では限界が生じやすいケースも。 結果として、大規模なリファクタリングによる抜本的なアーキテクチャ再構築が必要になるのです。
タップルにおける課題と大規模リファクタリングの意義
タップルでは、現行のFluxアーキテクチャやRxSwiftに大きく依存したコードベースが、Swift Concurrencyや新APIとの親和性を損ねていました。 さらに、古いUI設計や複雑な非同期処理フローが、Swift 6対応やパフォーマンス向上を阻害。 これらの課題解決のため、抜本的なリファクタリングが必要となりました。
リファクタリングを単なる技術的負債返済で終わらせると、組織からの理解や評価を得にくくなります。 そのため、リファクタリングを事業価値と紐付ける視点が求められます。
事業価値に繋げるための4つの視点(概要)
タップルでは、以下の4つの視点を軸に「技術的改善」を「事業貢献」へ転換しました。
- 機能刷新とセットで進める
- 開発難易度を下げる
- チームの学習成熟度の向上
- 開発ドキュメントの充実
この4つを組み合わせることで、リファクタリングは単なる内部改善に留まらず、組織的に評価される活動に昇華します。 以下、それぞれを詳しく見ていきます。
1. 大きなリファクタリングは機能刷新と共に進める
リファクタリング対象は、多くの場合、古くなった機能であり、そこには必ず事業的な負債(UXの陳腐化、パフォーマンス劣化、不具合リスク)が潜んでいます。 これらの課題を洗い出し、機能改善と技術刷新をセットで提案することで、プロダクトチームやビジネスサイドの理解を得られます。
こうした「機能刷新+技術リファクタリング」のセット提案は、プロジェクトとして事業改善を前面に打ち出せる強みがあります。
2. 難易度を下げる
大規模リファクタリングは、新技術導入による学習コストやキャッチアップ難易度の上昇を伴います。 そのため、事前に開発責務を整理し、BFF責務をバックエンドに移譲したり、KMPの責務を縮小するなどして、iOSチームが集中すべき領域を明確化します。 また、サンプルコードやボイラープレートの整備、仕様書・テストケースの用意によって難易度を下げることも有効です。
これにより、若手メンバーでもスムーズに作業が進められる環境が構築されます。
3. 学習と共に進める
新技術導入にはチーム全体のスキルアップが不可欠です。 タップルでは勉強会やハンズオンを開催し、Swift ConcurrencyやSwift 6対応、新フレームワーク活用手法、UnitTestの書き方などをチームで共有しました。 ロードマップを明確にし、全員が同じ知識基盤を持ってリファクタリングに臨めるようにします。
こうした学習投資は、長期的には組織の成長や保守性の向上、将来的な技術対応力の強化にもつながります。
4. ドキュメント化の推進
大規模リファクタリングは一度きりのイベントではなく、継続的な改善サイクルの一部です。 そのため、得られたノウハウや失敗事例をドキュメント化して蓄積することが重要です。 実装手順ガイド、意義・背景説明、FAQやインシデント集など、複数のレイヤーで情報を残しておけば、新規参画メンバーでもスムーズに参入できます。
これにより、チーム全体の生産性や再現性が高まり、改善サイクルを持続可能なものにします。
まとめ:組織的に評価されるリファクタリングへ
iOSアプリ開発は、SwiftUIやSwift Concurrency、Observation Frameworkなどの新技術によって常に進化しています。 大規模リファクタリングは避け難い一方で、それを事業価値へと結びつけるには戦略的アプローチが必要です。
「機能刷新とセットで進める」「難易度を下げる」「学習と共に進める」「ドキュメント化を推進する」これら4つの視点によって、リファクタリングはエンジニアの内向きな活動から、プロダクト価値の向上に直結する活動へと変わります。 これにより、組織は改善活動を正しく評価・支援し、エンジニアリング改善がビジネス成長を下支えする戦略的投資として認識されるようになります。
大規模リファクタリングを検討している組織の皆さんも、ぜひこれらの視点を参考に、技術的改善と事業成果を両立する取り組みを検討してみてください。