iOSサードパーティ製ライブラリへの依存を減らし続けアプリサイズ約30MB減った話
こんにちは、スペースマーケットでモバイルエンジニアをしている村田です。
2022年2月に入社し、早いもので3年が経ちました。振り返ると、ライブラリ削除やObjective-CからSwiftへのリファクタリング、FatViewControllerのSwiftUI化など、少ないメンバーで絶えず負債返却を続けてきたな〜と、少し自画自賛しています。
入社当初、そういえば100MB近くあったゲストiOSアプリのサイズが、現在では60MB台にまで減少しました。サードパーティ製ライブラリの削除が大きな要因だと感じているので、このタイミングでどのようなライブラリを削除してきたのかをまとめつつ、今後のライブラリ削除のギアを上げたいと思います。
負債解消モチベーション
とっ散らかった部屋では快適に過ごせないのと同様に、技術的負債のゴミ山の中では気持ちよくコードが書けないです。自分の仕事現場を綺麗に保つため、文句を言わず全て自分ごととして技術的負債返却を続けるのは当たり前なのかなと考えています。
(と言いつつ作業部屋めちゃくちゃ汚いです💩)
削除したライブラリ
2025年現在に至るまで削除してきたライブラリを2022年から振り返ります!
2022年
DateTools(削除PR作成日: 2022/03/11)
NSDate型を取り扱いやすくするためのライブラリ
予約後メッセージやり取り画面のクラスでisToday/isYesterdayメソッドのみ利用していました。
if (date as NSDate).isToday() {
return "Today".localize()
} else if (date as NSDate).isYesterday() {
return "Yesterday".localize()
}
Unbox(2022/06/08)
Swiftの構造体やクラスとJSONデータを簡単にマッピングするためのライブラリ。
2019年にアーカイブされており、Swift4で登場したCodable
の影響でお役御免になったようですね(歴史を感じる)
Codextended(2022/06/13)
Codableのエンコードやデコード処理をより簡単にするためのライブラリ。
自分の確認時にはそもそも未使用だったため削除。
// Before
let data = try JSONEncoder().encode(value)
// After
let data = try value.encoded()
UILabel+Copyable(2022/06/23)
UILabelのテキストをタップしてコピー可能にするためのライブラリ。
スペース詳細画面のタイトル名などをコピー可能にするために使用していましたが、ユーザー目線でコピー可能テキストの判別ができず、効果の程が微妙だったため削除しました。
Wrap(2022/10/03)
Jsonエンコードを簡単に行うためのライブラリ。
Unboxと同じ作者で、こちらも2021年にアーカイブされているようでした。
2023年
AppsFlyer(2023/01/17)
ディファードディープリンク機能を利用していましたが、施策の完了と共に不要になったため削除。
MagazineLayout(2023/04/13)
グリッドレイアウトを簡単に実装するためのUIライブラリ。
以前は検索結果一覧画面をグリッド表示するために利用していましたが、スペース画像を大きく見せたいため表示をリストのみにしたタイミングで削除。
MercariQRScanner(2023/05/24)
QRコードスキャンライブラリ。
友人招待QRコード読み取りのために利用していたが、招待機能クローズと共に削除。
JSONModel(2023/08/28)
Unbox/WrapようなObjective-C版ライブラリですね。
削除経緯や対応方針など以下記事にまとめてます🙏
AFnetworking(2023/10/24)
Alamofireの前進となるObjective-C製HTTPネットワーキングライブラリ。
2023年1月にメンテナンス終了しており、Issueでプライバシーマニフェストのサポートしないことを表明(comment)していたため気合い入れて削除。
Objective-C製のRESTクライアントクラスががっつり依存していたため、プライバシーマニフェスト対応の渦中でスピード感持って対応するの大変でした。
利用箇所の洗い出しと工数見積もり懐かしいエモい。
PanModal(2023/11/17)
ハーフモーダルを簡単に実装するためのUIライブラリ。
iOS15以降sheetPresentationControllerで簡単に実装できるようになったため不要になりました。
検索条件の入力画面など数画面で利用していたものを移行対応して削除。
当時の対応PR見て思い出したけど、そういえばiOS16以降じゃないと任意の高さ指定出来ませんでしたね。
Before: PanModal | After: iOS15 | After: iOS16~ |
---|---|---|
![]() |
![]() |
![]() |
2024年
Firebase/Functions(2024/01/15)
FirebaseのCloudFunctionsを実行するためのライブラリ。
以前短期間実施していた施策の機能をFunctionで実装しアプリから実行していましたが、終了後呼び出しがなくなったため削除しました。
RealmSwift(2024/02/26)
簡単にデータの保存、取得、管理ができるDBライブラリ。
プライバシーマニフェスト対応時にメジャーバージョン更新対応に時間がかかりそうだったため、どうせ時間がかかるならということでSwiftDataへ移行しました。
ROSCAさんが運営する「ROSCAFE」に登壇した際に、詳細話しているのでスライド覗いてみて下さい🙏
LineKit(2024/05/26)
シェアモーダル(UIActivityViewController
)へLINEを追加するために使用していたが、現在は標準で表示されるため削除。
FirebaseAnalytics(2024/05/26)
Firebaseのユーザー行動を分析できる機能を利用するためのライブラリ。
ユーザートラッキングツールは別サービスへ1本化したため削除。
UICKeyChainStore(2024/12/27)
Keychain(パスワード管理システム)を簡単に扱うためのライブラリ。
OAuth認証アクセストークン管理の為に利用していましたが、Firebaseのカスタムトークン認証へ移行したことでトークン保持をSDKがよしなにやってくれるため不要になり削除。
2025年
Alamofire(2025/02/18)
Swift製のObjective-C製HTTPネットワーキングライブラリ。
自分が入社後Alamofireへ依存していないRESTクライアントクラスを作成し、ちょこちょこそちらへ移行進めていました。2/17時点で5リクエストが旧RESTクライアントクラス利用していましたが、夜中急にテンション上がり一気に移行しました(連続で飛んでくるレビューを許してくれるメンバーに感謝)
FloatingPanel(2025/02/18)
半モーダルを簡単に実装するためのUIライブラリ
お気に入り一覧画面にて利用していましたが、デザイン変更に伴い利用箇所がなくなったため削除。
Before | After |
---|---|
![]() |
![]() |
アプリサイズの減少
他要因もあると思いますが計18ライブラリをプロジェクトから削除し、入社当初100MB近かったアプリサイズが現在 67.6MB まで減少しました!要らないものを消したいというお掃除心だけでサードパーティ製ライブラリへの依存を剥がしてきた結果、思わぬ副産物としてこの成果を得ることができました。
アプリサイズはDL数に影響が出ることが調査結果として出ているため、今後も継続して不要なライブラリの削減を進めていきたいです。まだまだアルヨ。
アプリの機能などには変化を加えず、アプリサイズだけを元々の3MBから99MB、123MB、そして150MBへと徐々に上げていき、DL数に影響があるのかを調べるテストを行いました。すると、アプリサイズを増加させたことで最大66%もCVRが低下するという結果が出たのです。
最後に
スペースマーケットでは一緒に働く仲間を絶賛募集中です!
詳しくは以下をご確認の上ご応募ください。

スペースを簡単に貸し借りできるサービス「スペースマーケット」のエンジニアによる公式ブログです。 弊社採用技術スタックはこちら -> whatweuse.dev/company/spacemarket
Discussion