Safie Engineers' Blog!

Safieのエンジニアが書くブログです

Developerの知らないDeploymentの世界 ~ iOS APP MDM編 ~

はじめに

こんにちは。2021年5月に入社し、モバイルグループでiOSアプリ開発を担当している太田です。
好きなiOS SDKはExtensionsです👍

今回は、2021.9.17-19に開催されたiOSDCセッションの中から興味深かったテーマを当社サービスの事例を交えて簡単にご紹介します。

イベント開催から半年以上経ち今さらなによと思われた方もいると思います。
しかし、知っていましたか?iOSDCのセッション動画は1ヶ月経つとYoutubeに無料で公開されるのです!

イベントに参加した人もしていない人もこの機会にぜひぜひ本ブログと一緒に見て頂ければと思います。

ということで取り上げるテーマはこちらです!MDM!

参考にしたiOSDCのセッションは
「MDMを使って業務用アプリの初期設定を自動化する」
です。

取り上げた理由は、

です。

MDMとは

ちなみに、MDMとは Mobile Device Management の略で、多数のモバイル端末を管理する仕組み、あるいはクラウドサービスのことを言います。iOSの場合はAppleが定めたMDM Protocolに従い、アプリの配布・端末OSの設定・遠隔操作などが実現できるものになっています。MDMが活躍する対象領域は図1のアプリを「導入する」「つかう」となっています。

f:id:safie:20220208130234p:plain

図1. MDMの対象領域

余談ですが、MDMを使うにあたりAPNs(Apple Push Notification service)・ABM(Apple Business Manager)というサービスも重要になってきます。今回は、現場の不それを解決できるMDMという内容をお伝えしたいと思うのでMDM-APNs-ABM連携の仕組みに関する説明は割愛致します。

それでは、SafieEntranceの事例も交えながらMDMで実現できる3つのことを紹介します!

新3大 MDMを使ったiOSアプリの配布術

f:id:safie:20220208130437p:plain

1. AppleID無しでアプリを配布できるMDM 【Safie事例】

まず初めに開発者のみなさまにお伝えしたいことはAppleIDがないとiPad端末にアプリをインストールできないということ。
当たり前だよ!というツッコミ、ありがとうございます。

しかし待ってください!アプリをインストールするために、AppleIDを200台の端末に設定することを考えてみると、

  • AppleIDの登録作業が面倒
  • 200台毎にAppleIDを作ると管理するのが面倒

  • AppleIDを使い回すにも端末上限は10台、しかもアカウントを共有するとある端末で出たアラート等が共有した他の端末でも表示されてしまうのが面倒

といった面倒に出くわすのであります。

そこで登場するのがMDM。 MDMを使えばAppleIDなしでも指定したiPadに一括でアプリを配布することができるのです。

正確にはAppleのVPP(Volume Purchase Program)とMDMの合わせ技。 VPP StoreからApp Storeに公開されているアプリを一括購入してMDMを使って配信するという流れになります。

2. 端末毎に異なる設定をしてアプリを配布できるMDM 【仮説】

続きまして、SafieEntranceの事例ではないのですが、iOSDCセッションを聞いて実現できそうだなと思った妄想事例を紹介したいと思います。

それはアプリの初回ログイン作業の手間を省くこと。

SafieEntranceアプリの場合、ログインした後は基本的にログアウトすることなくログイン後の顔認証画面を常時開いた状態にしてiPadを常設しておくという特徴があります。
つまり、基本的にログインする処理は導入時の1回のみ。

驚くことにiOSDCではManaged App Configurationという機能を使いMDM上で { key : value } を設定するだけでその情報をアプリに設定した状態で端末毎にアプリを配布できるという事例が紹介されていました。

{ key : value } の取得方法はiOS SDKのUserDefaultsを使って取得できるとのこと。

もしかして、下記のように実装すればログイン作業も省けるのでは?と筆者は考えたのであります。

f:id:safie:20220208130838p:plain

図2. Managed App Configurationを使った自動ログイン実装例

これにより、例えばiPadの設置工事の際にアプリを起動してもらえればログイン情報の入力が省けるという算段です。

f:id:safie:20220208131007p:plain

3. iOSのバージョン更新を抑制できるMDM 【Safie事例】

無事に導入できたのも束の間、不穏な空気を感じている開発者もいると思います。
そう、iOSのバージョン更新であります。

iOS Developerであればこのバージョン更新に血と汗と涙を大量に流した方も多いことでしょう。

しかし、MDMはOSのバージョン更新をも抑制してアプリを配布することができる強者でもあったのです!

iOSではアクセスポイントへのSSIDやパスワードなどの端末に必要な情報をXML形式で記述した構成プロファイルというものを使って設定できるようになっています。
この構成プロファイルにOSのバージョンが自動で更新されないような記述をし、MDMからiPadに設定を流し込むということになります!

余談ですが、Siriを無効化させるということも構成プロファイルで設定できそうです...

f:id:safie:20220208131142p:plain

図3. Apple Configurator 2 を使った構成プロファイルの設定

以上、新3大 MDMを使ったiOSアプリの配布術 の紹介でした。

正直に申しますと入社した時点では私自身がMDMのことを知りませんでした。今回、MDMの配布術を整理することで現場の不を考えながらモノづくりをすることが重要だということを改めて考えさせられた次第です。
アプリを導入する際の困りごとに関しては現場でその作業を聞いたり実際にやってみないと分からないことも多いと思います。紹介した事例は聞けば当たり前のことかもしれませんが意識しないと気づかないこととも思えます。

上記で紹介させて頂いた現場の事例以外でも、

常設して24時間動かしているiPadを定期的に拭き掃除してくれる業者さんがアプリを閉じないようにするためにアクセスガイド設定が必要。アクセスガイドを設定してアプリを起動させている場合、SFSafariViewControllerを使ってWebブラウザを開くことはできるのか?ということも開発者は検討しなければいけないということもありました 😥

ソフトウェアエンジニアでも 現地・現物・現認という教えは大事だな と感じたところです。
f:id:safie:20220218153939j:plain:w300

最後に

さて、ここまで読んで頂いてMDMを使ってみたいと思われた開発者のみなさまに残念なお知らせがあります。
それは、個人で利用できるMDMベンダーさんが調べた限り無いということ!(基本は法人契約)

安心してください。
それでもMDMを使った開発の一端に触れてみたいというエンジニアの方のために入口を用意してあります。詳しくは 👇 を覗いてみてください。
open.talentio.com

これを機にあなたのDevelopmentの世界をExtensionしてみてはいかがでしょうか。
読んで頂きありがとうございました🙇‍♂️

© Safie Inc.