2024.4.1
コンテンツ視聴型の業務アプリをカスタムApp化する時に注意すべきこと -ipaのサイズ上限-
ADEPの InHouse アプリをADPのカスタムAppに移行しようとする時、アプリに大幅な改修が必要になったり、端末とアプリの現場展開フローを見直さなくてはならない場合があります。
色んなケースがありますが、極めて稀ながら実際に遭遇するとインパクトが大きくなるのが、オフライン想定の動画視聴アプリです。具体例をあげると、従業員教育用の動画を内包する業務用アプリや、ネット環境の無い専用施設に配備するサイネージアプリ等で該当する可能性があります。
そうしたアプリがなぜカスタムAppへの移行で問題に直面にするのか、解説します。
カスタムAppではipaファイルのサイズ上限がある
App Store Connect にアップロードする ipa ファイルは上限が4GBという制約があります。昔は2GBでしたが、2015年に緩和されて4GBになりました。
InHouseアプリとして作っている ipa ファイルの場合、5GBでも10GBでも問題がなく上限を気にする必要はありません。4GB上限はiOSのファイルシステム上の制約なのではなく、単に App Store Connect のルールに過ぎないからです。(4GB上限をファイルシステムと結びつけるのは 32bit CPU時代の話)
さて、別の投稿で解説している通りカスタムAppは非公開の App Store アプリです。App Store Connect に ipa ファイルを登録・申請するという意味では公開アプリと何ら変わりありません。業務用だからという特別ルールや例外対応は期待できませんし、InHouseでは5GBでやっていた…と言った事情も考慮されません。
通常InHouseアプリからのカスタムApp化は、
- ADPで専用のAppIDを作る (証明書等も必要に応じて用意)
- XcodeでカスタムApp用のターゲットを作ってビルドし直す
- 2で生成したカスタムApp版ipaを App Store Connect にアップロードして申請する
という流れになります。よほど変なことをしていない限り審査が少し心配なぐらいで、実装が大きく変わったり運用フローに影響を及ぼすことは余りありません。開発現場視点ではぶっちゃけ、ビルドし直しと申請が必要になるだけです。
ですが、4GBを超える ipa ファイルのままカスタムApp化をしようとすると一筋縄ではいきません。いざ申請というフェーズで、こうなります。
上限を超えたアプリは App Store Connect に受け付けて貰えません。
ギリギリ収まるように工夫できれば当面は凌げますが、恐らく4GBを超えるべくして超えているアプリでしょうから、一時的な問題先送りに過ぎないでしょう。コンテンツが増えて将来また4GBの壁に悩まされる筈です。ではどうすれば良いのでしょうか?
4GB超えの InHouse アプリは実装にも運用にも影響大
残念ながら、作り変えるしかありません。小手先の技ではなく、コンテンツが幾ら大きくなろうともアプリサイズが大きくならない構造に転換する必要があります。
実装だけでなく、運用やインフラ、場合によっては周辺機器類までに影響が及ぶことも考えられます。まずアプリ本体は単なるビュワーとして位置づけ、大きなサイズのファイル(動画や大量のPDF等)はアプリに内蔵せずサーバに置いて、アプリ起動時にそれらをダウンロードするようにします。
この構成ならアプリ本体が4GBを超える事はまず考えられませんから、コンテンツが幾ら大きくても大丈夫…ということになります。インフラ面では専用サーバが必要になります。場合によってはコンテンツ管理システムを構築しなければならないでしょう。テスト用・本番用と2系統が必要かも知れません。
インフラやシステムの構築が大変な場合、On-Demand Resources という仕組みの活用は選択肢の一つです。On-Demand Resources はアプリサイズを小さくする為にAppleが用意してくれているデータ分離機構です。業務用iOSアプリはiOS専用であることが多いからこそ採用しうる対応策ですね。
また、端末配備や運用のルールも見直しが必要になります。特にネット環境のない現場に端末を展開する場合は、事前に誰がどのようにデータをダウンロードしておくのか、有事にも備えた慎重な運用フロー再設計が必要です。
いずれにしても、既に4GB上限を超えている InHouse アプリはカスタムApp化の作業工数が予想以上に大きくなる可能性を見越しておくべきでしょう。いざADEPの契約が更新できない…となった場合、この対応を90日間で行えるか?ってことです。
計画と実装・テストと現場展開を90日で完了するのは実際問題、不可能な場合が多いです。既に4GBを超える InHouse アプリは前もって動いておかれることをお勧めします。
万が一の時の回避策
万が一、カスタムApp化が間に合わなかった場合は、ADP配下のAdHoc配布を行うことで当面を乗り切ることができるかも知れません。
ただ機種ごとに100台の上限があることと、動作させる端末のUDIDが必要なことには留意する必要があります。以下の投稿も参考にして下さい。
InHouse版が100台を超える端末で使われている場合、優先されるべき100端末にだけAdHoc配布し、カスタムApp化を急がずゆっくり対応するという方針も良いでしょう。また既存の業務用アプリで代替したり、いっそのことiOSアプリをやめてWebにする等のウルトラCな手段を検討することも考えられます。
以上、カスタムApp化する際に大きな壁にぶち当たってしまうケースを1つご紹介しました。該当する場合は是非早めに手を打つようにして下さい。