App Clipsの10MB制限を超えないためにEmergeを使ってみた話

この記事はiOS Advent Calendar 2021 18日目の投稿です。

こんにちは。カンカクのiOSエンジニアの@redryeryeです。この記事はApp Clipsのサイズ制限で悩んでいた時に導入した、アプリサイズ削減・モニタリングツールのEmergeについてご紹介します。

はじめに

カンカクが都内で展開している『KITASANDO COFFEE』『TAILORED CAFE』『WAKE』では、アプリをすぐにインストールすることが難しいお客さまでも、事前に注文してスムーズに商品を受け取っていただけるようにApp Clipsでのオーダーに対応しています

f:id:redryerye:20211218140531p:plain
TAILORED CAFE SHIBUYA
App Clipsとは、一言で言ってしまえばアプリをコンパクトにしたものです。アプリ本体の一部の機能のみをApp Clipとして提供するため、本体アプリとApp Clipsのサイズは異なり、本体アプリよりも小さくなります。通常のApp Soreからインストールする体験よりもすばやいインストール時間が求められるため、10MB以下というサイズの制限が存在します。

COFFEE Appの本体アプリはかなり軽量で、現行のバージョンだと16.5MBあり、ほとんど気にせず機能追加を行っていてもApp Clipは10MBに収まっていました。しかし、ある日Failしたビルドログを見に行くとそこには10.8MBに太ったApp Clipの姿がありました。

そこでサイズ削減について調べた結果、辿り着いたのがEmergeでした。

Emergeとは

EmergeとはスタートアップアクセラレータのY Combinatorの卒業生が作ったアプリのサイズ削減ツールで、元々はiOSのみでしたが最近Androidの対応も開始しました。

具体的な機能としては、既存のアセットやファイルの占有率が分かるインサイトを分かりやすく表示したり、CIに紐付けてアプリを定期的にアップロードすることでサイズの偏移をモニタリングして、SlackやGitHubに通知してくれたりします。

この記事の執筆時点では、直接サインアップすることは不可能で、emergetools.comからWaitlistに登録する必要があります。

使うまでの流れ

Waitlistに登録して数日後、Emergeのチームからミーティングのスケジュールに関するメールが届きました。(彼らのチームのベースはUSにあるため、日付を決めるときはタイムゾーンの違いに注意)

ミーティングではEmergeの説明に加えて、その場でアカウント登録して実際にアプリをアップロードして、サイズ削減が可能な箇所を丁寧に説明してくれました。 デモの後でも、困ったことはデモの時に作られたSlackのチャンネルを使って質問すれば答えてくれます。

使ってみての感想

不要なファイルを分かりやすく表してくれるので便利なのと、サイズを常にモニタリングすることで知らぬ間にアプリが肥大化するという事態が防げるので安心感があり助かっています。

不要なアセットの可視化が便利

一般的に、既存の機能を削らずにiOSアプリのサイズを削減するときに主に以下の二つの方法があります。

  • アセットを最小限にする
  • プロジェクトの設定を最適化する(ビルドの設定やライブラリのリンク方法など)

EmergeのInsightsを使えば、前者の「アセットを最小限にする」ことは容易に可能でした。

f:id:redryerye:20211216085548p:plain
Insightsでは最適化されていないアセットが可視化される (Emerge exampleより)

後者の「プロジェクトの設定を最適化してサイズを削減する」というのは、ミニマムにすればいいというシンプルな話ではないため、iOSの様々な知識が必要です。そこで、デモの時にEmergeからアセットの効率化以外の最適化方法についてアドバイスをくれたのですが、これが改めて発見した気づきもあり役立ちました。彼らのブログにもそのサイズ削減の方法についていくつか書かれています。

結果、COFFEE AppのApp Clipは10.8MBから10MBになりました。

f:id:redryerye:20211216084327p:plain
削減されたときの様子
10MBの制限ギリギリに着地させたのは、10MBを数百KB超えていてもApp Store ConnectでSubmit可能であることに加えて、この先にApp Clipの大幅な機能変更を予定していないためです。

サイズを削減した後のリバウンド対策にも

一度サイズを削減したアプリがリバウンドしないためにEmergeのモニタリング機能を重宝しています。

fastlane pluginを使用してEmergeにビルドをアップロードすることが出来るので、CIに紐づけて定期的にサイズを測ることで動向を監視しています。

f:id:redryerye:20211216091510p:plain
Slackに連携するとアップロードするごとにレポートが投稿される
f:id:redryerye:20211216125045p:plain
アプリサイズの動向も見られる

また、GitHubに連携するとPRごとに差分のインサイトをコメントしてくれるので、細かく監視したい場合は便利ですね。

おわりに

Emergeはサイズ削減とモニタリングを簡単に実現させてくれました。まだ新しいツールなので特に国内だと導入例が少ないですが、アプリサイズを管理したい場合はぜひ使ってみてください。

また、カンカクでは仲間を募集しています。新しい挑戦をしてみたい方、ぜひ一緒に開発しましょう。

Resources

Emerge Doing Basic Optimization to Reduce Your App’s Size - Apple Developer