2023.8.7
AdHocとは何か
(最終更新日 : 2023/8/24)
AdHoc は、Appleの審査を回避して非公開に業務用iOSアプリを配布する方法の一つです。
従来、同要件に対しては InHouse を選択することが常でしたが、InHouse アプリを生成するのに必要な契約(ADEP)は新規契約が事実上不可となり(2020年頃)、近年は契約更新できない(2022年以降)ケースも散見され、状況が変化してきています。
この状況を鑑みると用途や制限を含め改めてAdHocを正しく理解しておくことは重要でしょう。ということで、本稿では AdHoc について紹介します。以下目次となります。
参考にできる投稿へのリンクも示していますので、併せてご覧下さい。
用語の定義
AdHocとは、Apple Developer サイトで取得した AdHoc 用 Provisioning Profile を使ってiOSアプリを署名生成することです。
また、そのようにして署名・生成されたiOSアプリのことをAdHocアプリと呼び、AdHocアプリを iOS 端末にインストールする・させることをAdHoc配布と言います。
AdHocの特徴
特徴は以下のとおりです。
- Appleの審査が不要
- 特定のiOS端末にアプリをインストール可能
- インストール可能な端末数は100台まで
- ADPとADEPの両方で利用可能
TestFlight がまだ存在しなかった時代、AdHoc配布はAppleへの審査に提出する前の関係者テストに使われていましたが、今は公式テストツールとして TestFlight があります。
TestFligthは登場から10年以上も経っており、洗練されて使い易くなっています。ADP(Apple Developer Program)の契約があるならテストは原則 TestFlight 一択で、AdHoc をテスト用途に使うのは古いやり方です。では AdHoc は何のために使うのでしょうか。
テストの役割を TestFlight に譲った今の AdHoc は、Appleの審査に出したくない&台数上限の制限を許容しうるアプリを社内や関係者に本配信する手法であると言えます。台数上限を許容できるなら、InHouseアプリと同様に非公開・非審査の業務用アプリ配信手段として利用できます。詳しくは以下をご覧下さい。
AdHocアプリの起動端末制限の仕組み
Apple Developer のサイトで AdHoc用の Provisioning Profile を作成する時、証明書とAppIDの選択に加えて、デバイスを選択する画面が現れます。
AdHoc 用の Provisioning Profile を使って生成された AdHoc アプリは、このデバイス一覧でチェックした端末でのみ起動できるアプリとなります。
iOSはAdHocアプリの ipa ファイル内に含まれる Provisioning Profile の中を見て、デバイス一覧に自分自身が含まれるかを確認します。含まれていればインストール成功ですし、なければインストールすらできません。
この際にデバイスの識別情報として使われるのが UDID です。このUDIDをあらかじめ Apple Developer サイトで登録しておき、Provisioning Profile 生成時に紐付けるわけです。
AdHocアプリを動作させる端末候補の UDID は、あらかじめ収集しておかなければなりません。UDID の取得方法は以下が参考になる筈です。
アプリを動作させたいデバイスをあらかじめ選定する、AdHoc ではこれが前提となります。UDID の収集は煩わしいと考えられることがありますが、業務用の世界においては全く問題になりません。上記投稿の通り、業務用の世界では MDM の導入が基本でありMDMの機能により UDID の収集は容易だからです。
端末数上限100台の数え方についての注意点
Apple Developer のサイトでは UDID を100台しか登録できません。AdHoc 用の Provisioning Profile を作成する時に、その限られた100台から起動させたい端末を選ぶわけです。
ただこの100台という上限数には、注意点が2つあります。
1つは機種ごとの上限があるということ。Developer Program の契約配下で iPad / iPhone / AppleWatch / AppleTV の各機種毎に100台分のUDID登録が可能です。以前は機種に関係なく全機種まとめて合算の100台上限でしたが緩和されました。
もう1つの注意点は、台数カウントのされ方。分かり易さのために、ここでクイズをしてみましょう。Apple Developer のサイトで iPhone について以下の操作を行った場合、登録可能残数は何台になるでしょうか?
- 10台分のUDIDを新規で登録する
- 20台分のUDIDを追加で登録する
- 5台分のUDIDを不要になったので削除する
10 + 20 – 5 = 25 なので、残り75台分のiPhoneが登録できる…わけではありません。答えは70台。間違い易いポイントなので要注意です。削除しても登録枠はすぐには回復しません。回復するのはADPやADEPの契約更新の時のみとなります。
これをデバイスのリセットと言います。ADPの画面には下図のように、リセットできる日が明記されています。この例でいうと2023年9月25日を迎えなければ、削除した分の枠は回復しないということです。
下手すると枠が空くまでに最大約1年待つことになる可能性があります。100台になったら不要なものを削除すれば良い…では運用がうまくいきません。UDID登録は計画的に行うことが必要です。最近のXcodeでは、油断してるとドンドン勝手にデバイスが登録されてしまって気がつけば上限…なんてことになりがちなことにも注意しましょう。
外部委託する先が多数あるような大手企業においては、ルールを定めず開発会社に丸投げしているとアッという間にUDIDが枯渇します。特に ADP 契約下で TestFlight を使わずに AdHoc でテストを行う古いやり方をしていると、テストもまともにできない状況に陥りかねません。最悪、端末を融通しあうための調整といった無駄なテスト工数が増えます。テスト設計については以下の投稿も参考にして下さい。
AdHocアプリの配布方法
AdHoc アプリは、Apple の審査を必要としませんので様々な方法で配布できます。以下の投稿を参照して、運用に都合の良い方法を選んで下さい。
なお、自由に配布できるからと好き勝手に配布しまくって良いわけではありません。Developer Program の使用許諾契約書にきちんと配布可能範囲についての記載がありますので、確認しておきましょう。
以下の投稿もご覧下さい。使用許諾契約書の弊社見解を示していますが、各社においては念のために自社法務部門の確認を行うことが推奨されます。
本稿では、AdHocについて詳細を解説しました。特徴や制約をよく理解して有効活用して頂きたいと思います。