Tech Blog

グローバルな家族アプリFammを運営するTimers inc (タイマーズ) の公式Tech Blogです。弊社のエンジニアリングを支える記事を随時公開。エンジニア絶賛採用中!→ https://timers-inc.com/engineering

不要なコードと画像データをお掃除してLet’s spark joy!

はじめまして!iOSエンジニアのてりーです。

初めての投稿で少し緊張しています。

弊社では2週間に1日「タスクデー」という日があり、ある程度自由にやってみたい事に取り組める日があります。 今回はタスクデーを利用してアプリの中で使われなくなったコードと画像データのお掃除に取り組みました。

What

今回解決したい一番大きな課題はアプリの容量です。

当時アプリの容量が100MB近くあり、Fammは海外でも展開している国があるので これ以上容量が増えると新しく展開する国によってはDLが難しくなるかもしれないという懸念があります。

Famm iOSアプリの歴史は約5年で当初はObjective-Cで実装されており、 アプリを開発していく中で使われなくなった機能や新しくなった機能がたくさんあります。

その中で使われなくなったソースコードや画像データが削除されずにアプリ内に残ったままになってるものがあり、 それを何とかしようと思いました。

How

さすがにこれをすべて手動でやるのは現実的ではないので何かツールを出来ないかと考え色々と調査した結果、

上記2つのツールを使ってやってみる事にしました。

  • Peripheryは未使用のコードを検出してくれるツール(Objective-Cは検出してくれない)

  • FengNiaoはアプリ内で使用されていない画像リソースを検出してくれるツール(猫かわいい)

Try

Periphery

まずはPeripheryを使ってみました。詳しい使い方は割愛しますが結果・・・

😨めっちゃあった😨

😨めっちゃあった😨

ちなみに、とりあえず消してみたらアプリがビルド出来なくなってしまったので一度消す前の状態に戻しました。 原因はメソッド内に未使用のパラメータがあるとそれも検出されてしまうのでSwiftFormatを使いそのあとにPeripheryを再び 実行→無事ビルドができました🎉

FengNiao

未使用のコードをお掃除したので次は画像データです。

こちらも詳しい使い方はGithubに書いてあるので割愛しますがやってみた結果・・・

😨けっこうあった😨

けっこうありましたがコードほど数はなかった(100 ~ 150)ので念のため画像名で全部検索してみたら画像名を文字列で直接していない箇所で使われている画像があったので完璧に検出は出来なかったです。

こんなやつ

let imageName = "hoge"

let image = UIImage(named: imageName)

使っているのに検出された画像を一旦別の場所にコピーしてFengNiaoをつかってお掃除→コピーした画像を元に戻し無事お掃除完了しました🎉

QA

無事にお掃除が完了したので最後にQAチームに動作確認をお願いして問題ないとの事だったのでプルリクをマージしました。

Result

  • 100MB近くあったアプリの容量が84.5MBまで減らす事が出来ました🎉

f:id:timers-tech:20190509003208j:plain

Summary

・目に見える事は少ないけど確実に負債は減らせた

・今後はこういったツールで自動検出が出来るような  画像の使い方とかを考えるきっかけになった

・今後もこういった取り組みは続けていきたい

以上になります

PR

子育て家族アプリFammを運営するTimers inc.では、現在エンジニアを積極採用中!
急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください!
採用HP: http://timers-inc.com/engineerings

Timersでは各職種を積極採用中!

急成長スタートアップで、最高のものづくりをしよう。

募集の詳細をみる