モバイルアプリエンジニアがiPadの管理にMDMを導入した話

スタートアップに転職して現場の業務で利用するiPadの準備が大変だなぁと思いMDMを導入・運用したので備忘録です。

# 前提
- 複数の店舗があり各店舗で社内向けアプリをインストールしたiPadを業務で利用
    - 私はこのアプリを開発するエンジニア
- 店舗のスタッフはアルバイトの方たち
- 総台数約100台

# MDM(モバイルデバイス管理)とは
> モバイル端末管理の略記。
> スマートフォンやタブレットなどの携帯端末を業務で利用する際に一元的に管理するための仕組み。
> MDMツールが提供する管理機能は、以下のようなものがある。
> 　・端末紛失時のリモート制御（ロック、データ削除など）
> 　・セキュリティポリシーやアプリケーションの配布、管理
> 　・アプリケーションや機能の利用制限と監視

引用：[ITトレンド](https://it-trend.jp/words/mdm)

# 導入のきっかけ
## キッティングの負荷が高い
- 共通のApple IDで1個1個ログイン
- App Storeから１個ずつ必要なアプリをインストール
- Wi-Fi情報の手動入力
- etc  

## MDMを利用しないApp Storeのアプリ配信だと完全非公開のアプリにできない
- 外部からインストールされるリスク  

## アプリをリリースするたびに現場のスタッフが手動アップデート
- 現場の負荷
- アップデート作業依頼するエンジニアの心理的負荷

## Apple IDの再認証による二要素認証番号問い合わせ
- 共通のApple IDで約100台ログインしていたためたびたび再認証を求められ、その度にスタッフから「パスワード教えてください！」や「二要素認証の6桁番号教えてください！」という依頼がきていた

# MDM導入でやりたかったこと
- セットアップと同時に必要なアプリを自動インストール
- 社内向け非公開アプリを配信
- Wi-Fi設定の自動適用
- アプリの遠隔アップデート
- プリインストールされるデフォルトのアプリ非表示
- 許可したアプリのみ現場スタッフが端末側でインストール・アップデート可
- ホーム画面にWebクリップ表示

# アプリの配信方法の決定
端末台数無制限でMDM経由で社内向けアプリ配信する方法は以下３つです。

## ①[App Store(非公開アプリ）](https://developer.apple.com/jp/support/unlisted-app-distribution/)
非公開とは言うもののあくまで検索結果一覧にはでてこないというだけでDLリンクを知っていれば誰でもApp Storeからインストールできます。
非公開アプリの新規申請（DLリンクの払い出し）には別途フォームから申請する必要があります。
リリース毎に審査が必要です。MDM導入前はこちらを利用していました。

## ②[App Store(カスタムアプリ)](https://developer.apple.com/jp/custom-apps/)
非公開で配信できます。①同様にリリース毎に審査が必要です。

## ③In-House
非公開で配信できます。審査不要です。MDMのコンソールからipaをアップロードします。

## 結論
運用負荷観点で一番良いのは審査不要の③だと思いますが、以下の理由でIn-House配信は却下して②にしました。
- 別途ADEP([Apple Developer Enterprise Program](https://developer.apple.com/programs/enterprise/))に参加する必要があり、年間299 USD払わないといけない
- 会社規模などADEP取得要件が厳しい
- MDM会社に追加でオプション料金を支払わないといけない

そこまで審査有無にこだわる必要もないのであれば①or②の選択が良いと思います

# MDM会社選定
会社の規模やセキュリティ要件などによって違うと思いますが、まず対応スピードとコスト重視で代理店を介さないで直接契約できる会社を探しました。意外にも代理店経由じゃないと契約できないMDM会社が多かったです。最終的に絞った会社は以下3社です。

- [mobiconnect](https://www.mobi-connect.net/)
- [Jamf Now](https://www.jamf.com/ja/products/jamf-now/)
- [BizMobile Go!](https://bizmobile.co.jp/)

どの会社も無料トライアルをやっているので、実際に使ってみるのが一番いいと思います。
今回すべて使ってみて弊社の要件をすべて満たしていたのがmobiconnect様だったのでこちらを利用させていただくことにしました。

# [Apple Business Manager](https://support.apple.com/ja-jp/guide/apple-business-manager/welcome/web)の登録
MDMを利用するためにはApple Business Managerのアカウントを作成する必要があります。
登録には企業のDUNS番号が必要なので[東京商工リサーチ](https://duns-number-jp.tsr-net.co.jp/search/jpn/login.asp)から検索or取得します。

# MDMにプッシュ証明書の登録
<img src="https://storage.googleapis.com/zenn-user-upload/089a0a3ac12b-20241004.png" width=70% />


参考：[APNを利用できるようにデバイスを構成する](https://support.apple.com/ja-jp/guide/deployment/dep2de55389a/web)

iOS端末へのMDMからの各種配信にはプッシュ通信が使われています。
①MDM管理画面から操作 -> ②MDM会社からAPNSにプッシュ通信 -> ③プッシュ通信トリガーに端末が情報を取得といったイメージです。
なので、① -> ②のMDMからAppleへの通信ができるようにAPNS証明書をMDMに登録します。
証明書の登録は、コンソールからできる場合もあれば、mobiconnectのようにメール送付の場合もあります。
**※証明書を発行するApple IDには個人のものを使わないでください**
年１回更新が必要なのですが個人で払い出していてその方がすでに退職されている場合、証明書の新規発行＝全台初期化が必要になります。

# デバイスの登録(ADE / 旧DEP)
次に、デバイスをMDMサーバーに紐付けます。これにより端末側でセットアップを進めると自動的に必要なアプリのインストール / 設定の反映が実行されます。

## ABMにMDMサーバーの追加
### ①MDMの公開鍵を取得
MDMの管理画面で「DEP」や「Auto Enrollment」のような項目から公開鍵を取得できるページがあるのでダウンロードします。

### ②ABMからトークンの取得
ABM上でMDMサーバーの追加を押して①の公開鍵を登録します。
<img src="https://storage.googleapis.com/zenn-user-upload/4eb12df742cc-20241004.png" width=80% >

### ③②をMDMのトークンに登録
②で登録するとトークンが払い出されるのでこれをMDMコンソールで登録します。

参考：[Apple Business ManagerでサードパーティのMDMサーバにリンクする](https://support.apple.com/ja-jp/guide/apple-business-manager/axm1c1be359d/web#:~:text=Apple%20Business%20Manager%20%E3%81%A7%E3%80%81%E7%AE%A1%E7%90%86,%E5%90%8D%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82)

## ADE(Automated Device Enrollment)登録
今度はiPad側の話です。端末をADE利用できるようにする方法は主に２つあります。
- ①ADE対応の端末を購入する
    - Apple から直接購入する
    - プログラムに参加している Apple 製品取扱店から購入する
    - 通信事業者から購入する
- ②Apple Configurator 2を利用して手動で適用する
    - すでに手元にある端末、ADE非対応の中古端末を買った場合etc

①がいちばん楽ですが、弊社の場合は、法人レンタルでiPadを借りており、特にADE対応はしていないとのことなので、手動でADE登録をするようにしました
参考：[自動デバイス登録を利用する](https://support.apple.com/ja-jp/102300)
 
## [Apple Configurator 2](https://support.apple.com/ja-jp/guide/apple-configurator/welcome/ios)の利用
iPhone版またはMac版のApple Configurator 2を利用します。
Mac版の場合はiPadを有線で繋ぐ必要がありますが、iPhone版だとiPad端末に表示されるもやもやをApple Configurator 2アプリに表示されるカメラの枠におさめるだけで登録が完了するので私はこれをいつも使っています。
<img src="https://storage.googleapis.com/zenn-user-upload/dc4909505373-20241004.jpg" width=50% >
参考：[iPhone用Apple Configuratorを使用してiPhoneまたはiPadを追加する](https://support.apple.com/ja-jp/guide/apple-configurator/apd97373af1e/1.1/ios/17.0)

## MDM側でプロファイルの適用
ここまでやるとABM上のデバイス一覧に該当のデバイスが登録されるので、サーバーが該当のMDMになっているかを確認します。
<img src="https://storage.googleapis.com/zenn-user-upload/fed9cf9107a5-20241004.png" width=80% >
この状態でMDM管理画面側のADE(DEP)端末一覧をみると、表示されていると思うのでそのデバイスに適用するプロファイル(インストールするアプリや監視ポリシーの設定をまとめたもの）を設定すればすべての準備は完了です。この状態で端末側でホーム画面まで進めるとすべてのキッティングが自動で完了します。

<img src="https://storage.googleapis.com/zenn-user-upload/70d73dedb7e6-20241004.png" width=60% >

# アプリの配信
アプリの種別として主に「App Store」と「VPP」があります。
## App Store
- MDM側でApp Storeで公開されているアプリを登録する

## VPP
- ABMを介して配信するアプリを登録する

非公開のカスタムアプリの配信は後者のVPPでしかできないので、必然的にVPPアプリ配信になります。

## VPPの設定
### VPPトークンの設定
VPPを介してMDMにインストールするアプリを適用するにはVPPトークンの登録が必要です。
ABMの「環境設定」->「お支払い情報」->「アプリとブック」->「コンテンツトークン」にあるトークンをMDMに登録します
![](https://storage.googleapis.com/zenn-user-upload/a94c9fb961ba-20241004.png)

### App Storeアプリの登録
App Storeに公開されているアプリを入手するには、左のメニュー「アプリとブック」から選択します。
![](https://storage.googleapis.com/zenn-user-upload/42ccf1d77c41-20241004.png)

### カスタムアプリの登録
新規アプリ登録時にApp Storeの審査で「非公開」を選択して申請してください。
「組織名」は文字列がABMに登録されているものと完全一致する必要があるのでABMの「環境設定」から確認してコピペしてください。
![](https://storage.googleapis.com/zenn-user-upload/3997e2f7172a-20241004.png)
審査が通るとABM上の左のメニューに「カスタムアプリ」が表示されます。そのあとApp Storeアプリの登録同様に適用したい場所に対して割り当てをします。
![](https://storage.googleapis.com/zenn-user-upload/acac5dbe41d3-20241004.png)

ここまで完了すると、入手したアプリがMDM上に表示されます。あとはMDM側でどのアプリをプロファイルに設定するか等を構成すればインストールができるようになります。
![](https://storage.googleapis.com/zenn-user-upload/79bf11d7dd9f-20241004.png)

### さらに細かくアプリ配信対象を分けたい
例えば、複数のMDM会社を併用したい、複数のグループ(会社や店舗等)があってグループ毎に配信するアプリをそれぞれ異なるものにしたいというケースがあると思います。その場合はABM上で「場所」を追加してその場所ごとに発行される「コンテンツトークン」をMDM上の対象のグループに設定することで可能です。

# まとめ
まとめると流れとしては以下です。
- ①MDMからAPNsにプッシュ通信できるようにする
    - プッシュ証明書をMDMに登録する
- ②キッティング時にMDM設定が自動適用されるようにする(ADE / DEP)
    - MDMの公開鍵をABMにアップロードして取得したDEPトークンをMDMに登録する
    - Apple Configurator2を利用してiPad端末とMDMサーバーを紐づける
- ③VPPでアプリ配信できるようにする
    - コンテンツトークンをABMから取得してMDMに登録する
 
# もっと便利に
Managed App Configurationを利用すれば、アプリ実行時に適用されるプリファレンスの値をMDMから設定できます。今回は使っていないですが例えばアプリを開いた時にデフォルトで適用したい値などを設定することで利用側が手動で入力する手間を省けたります。
（アプリ側の実装も必要です。）

# 最後に
最初だけ色々手間ですが、一度設定してしまうととても楽なのでMDM運用おすすめです。
他の社員の方や現場の方にも楽になったと言ってもらえて嬉しかったです。
前職では「検証用端末クダサイ」「PC新しくしたいデス」「社用携帯の画面が割れてしまいマシタ」と言えばすぐに新しい端末が届いていてそれを当り前だと思っていましたが、こういったコーポレート業務をやってくださっている方達のおかげだったんだなぁと気が付けて良い経験になりました。
いつもありがとうございます！