Appleの案内では、アプリのサイズ確認には「ダウンロードサイズ」と「インストール後のサイズ」という異なる測定対象があります(Appleのサイズ測定ガイド)。そのため、Xcode 27でiOS Appのサイズを最適化する前に、ArchiveやIPAのファイルサイズをユーザーのダウンロードサイズと見なさないでください。まずApp Thinning Size Reportを出力し、App Store Connectの端末別変種データと照合します。
新しいバージョンの提出前に、アプリの容量が増えた理由を調べたい独立開発者向けです。
複数端末向けの変種や多言語リソースを管理している場合は、レポートから削減候補を絞れます。
リモートMacでArchiveを繰り返す小規模チームにも、比較できる記録の作り方を紹介します。
まず区別するのはアップロード容量、ダウンロード容量、インストール容量
ArchiveはXcodeが作成する配布準備用データです。IPAはApp Store Connectへ提出するための書き出し形式で、どちらもそのまま各ユーザーへ配信されるファイルとは限りません。App Thinningにより、端末に必要なリソースやバイナリを含む変種が配信されるためです。
インストール後の占有量もダウンロード容量とは別です。ダウンロード時の圧縮状態、展開後のファイル、アプリ内で後から取得するコンテンツを混同すると、「容量が大きい」という同じ見え方でも対策を誤ります。Appleも、Xcodeのレポートは推定値であり、より正確なサイズ情報はApp Store Connectで確認するよう案内しています。
02注意: Archive全体やdSYMのサイズを、ユーザーが受け取るApp Store配信サイズとして扱わないでください。dSYMはクラッシュ解析などに使うデバッグ用シンボルで、通常のアプリ本体と同じ配信対象として数えるものではありません。
Xcode 27で測定結果を再現する
第一歩:比較するビルド条件を固定する
体積の変化を追う前に、対象のコミット、ビルド構成、対象端末、書き出し方法を記録します。条件が異なるビルド同士では、コード変更の影響と設定差を切り分けにくくなります。
第二歩:ArchiveからApp Thinning Size Reportを出力する
Xcodeで対象プロジェクトをArchiveし、OrganizerからApp Store Connect向けの配布・書き出し手順を進めます。書き出し設定にApp Thinning Size Reportを含める選択肢がある場合は有効にし、IPAとレポートを同じビルド記録に保存します。
画面上の項目名や手順はXcodeの版や書き出し方法で変わることがあります。項目が見つからない場合は、Appleのレポート生成手順で現行の操作を確認してください。
第三歩:レポートで変種別の差を読む
レポートでは、汎用の配布物と端末向け変種を分けて確認します。特定の端末だけで大きくなるなら、その端末向けに含まれる画像やアセット、バイナリの組み合わせを追います。汎用パッケージだけを見て、すべての端末での結果を推定しないことが大切です。
第四歩:App Store Connectで照合する
ビルドの処理が完了したら、App Store Connectの対象ビルドを開き、アプリサイズと端末別変種の表示を確認します。Appleのビルド情報と変種サイズの案内に沿ってレポートと照合してください。App Store Connect App File Sizesを調べるときも、アップロードファイルの容量と、配信される変種のサイズを別々に記録します。
第五歩:同じ条件で差分を残す
前回と今回のレポート、IPA、コミット識別情報、書き出し設定をまとめて保管します。差分が出たら、まず変種ごとの差か、アプリ全体に共通する増加かを判定し、その後に資産やバイナリを調べます。Xcodeのビルド設定は、画面に見えている値ではなく、最終的に適用された値を確認してください。Appleの設定確認方法も参照できます。
03リソースのサイズは使われ方から絞り込む
画像や音声、動画、多言語素材が増えている場合は、レポートの変種差とプロジェクト内の資産を照合します。Asset Catalogでは端末や表示条件に応じたリソースを管理できますが、素材を登録しただけで必ず配信サイズが小さくなるとは限りません。Asset Catalogのリソース変種の仕組みを確認し、重複画像や使われていない素材、過剰な解像度がないかを調べてください。
初回起動時に必要でない大きなコンテンツは、オンデマンド配信を候補にできます。ただし、オフライン利用や初回体験に必要なデータまで後回しにすれば、通信環境の悪いユーザーに不便を与えます。Appleの基本的なサイズ最適化の案内と高度な最適化手法を参考に、削減量だけでなく取得タイミングも評価しましょう。
場面例: 多言語対応を追加した後に一部の変種だけが増えた場合、すべての画像を一括圧縮する前に、追加言語の素材がどの端末向け変種に含まれるかを確認します。共通リソースが増えているなら、重複素材やアプリ本体へ同梱する必要性を先に見直します。
04バイナリとフレームワークの増加を切り分ける
レポートでコードや埋め込みフレームワークの増加が疑われる場合は、書き出したアプリの中身を比較し、依存関係の更新や新規追加を確認します。見覚えのない増加があっても、ただちにフレームワークを削除せず、実際に参照されている機能と配布対象を確認してください。
ビルド設定では、最適化レベルや構成ごとの値を調べます。設定名だけで結果を推測せず、Xcodeのビルド設定リファレンスと、最終的に適用された設定を突き合わせます。dSYMやArchiveのサイズは診断・保管上のコストとしては管理対象ですが、ユーザー向けサイズの指標とは分けて記録します。
05モバイル通信の警告と端末変種から優先度を決める
モバイル通信でのダウンロードに関する警告が出たら、まずApp Store Connectの変種サイズと対象端末を確認します。Xcodeのレポートは原因を絞る材料、App Store Connectは配信前の照合先として使い分けてください。Appleのビルドファイルサイズ上限はアップロード可能なファイルの基準であり、ユーザーのモバイル通信でのダウンロード条件とは別です。端末側の設定や適用中のAppleの案内も確認し、アップロード上限をダウンロード警告の基準と取り違えないでください。
判断条件リスト:次の分岐で対応を選ぶ
- [ ] App Store Connectでも対象端末のダウンロードサイズが許容できないと確認できた: 増加した変種を特定し、重複素材、不要な同梱データ、肥大化した依存関係の順に見直します。
- [ ] ダウンロードサイズは問題なく、インストール後の占有量だけが懸念: ダウンロード容量の削減だけを目的にせず、端末内で保持するキャッシュや追加コンテンツを調べます。
- [ ] 警告の条件と実サイズが一致しない: 先にOS側の設定とAppleの現行案内を照合します。原因が特定できるまでは、画像の一括圧縮や機能削除を避けます。
- [ ] 現在のサイズが利用者の通信環境や機能要件に合っている: 無理な削減で画質、オフライン機能、初回体験を損なわず、次回のリリースでも同じ条件でサイズを記録します。
よくある確認事項
IPAの容量だけでユーザーのダウンロードサイズを判断できますか
できません。IPAはアップロード用の書き出し物で、ユーザーにはApp Thinning後の端末向け変種が配信される場合があります。Xcodeのレポートを生成し、App Store Connectの変種サイズと照合してから判断してください。
レポートが見つからない場合はどうしますか
Archive後のOrganizerで、App Store Connect向け書き出し設定を確認します。Xcodeの版や選んだ配布方法によって画面が異なるため、レポート出力の選択肢がない場合はAppleの現行ドキュメントにある手順と設定を確認してください。
App Store Connectではどのビルド情報を見ればよいですか
対象ビルドの処理が完了してから、ビルド情報にあるサイズ表示と端末別変種を確認します。アップロードしたIPAの容量ではなく、対象端末で配信される変種をレポートと照合します。対応端末が複数ある場合は、ひとつの端末だけで結論を出さないでください。
モバイル通信の警告が出たら、最初に何を削ればよいですか
先に削除を始めず、App Store Connectの変種サイズ、Xcodeのレポート、端末側の条件を照合します。アップロードファイルの上限とモバイル通信でのダウンロード条件は別です。サイズ増加が確認できた場合に限り、影響する資産や同梱コンテンツを特定してから、機能要件を損なわない対策を選びます。
手元のMacで都度Archiveする方法は、機材を専有できる一方、ディスク容量の圧迫、OSやXcodeの保守、長時間ビルド中に端末を使い続けにくい点が負担になります。リリースごとに同じ条件で書き出しと照合を行いたいものの、専用Macを購入するほどではないなら、VpsMeshのリモートMac環境で必要な期間だけ作業する方法もあります。VpsMeshの利用環境を確認し、Archiveやレポート保管をどのように運用できるか検討してください。東京向けの利用条件も比べたい場合は、東京のMac mini利用案内も確認できます。物理機器への直接接続が必要な作業や、長期にわたり高負荷を継続する用途では、自前のMacが適する場合もあります。