Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

エンタープライズ iOS ホンノチョット理解した話

iOSエンジニアの 浦川(@kamimi_01) です。

先日、エンタープライズiOSについて調べて、社内でLTをしました。

資料はこちらになります。

speakerdeck.com

調べたきっかけ

👨‍🔧:カスタマーサクセス担当、🐶:私

👨‍🔧:「App Config for Mobile Appsって対応していますか?MDMを使って配布しているアプリについて、IDやパスワードを入力をさせずにログインできるようにしたいという要望をお客様からいただいてまして。」

🐶:「・・・(AppConfig for Mobile Appsって何?)」

エンタープライズiOSに関わる単語

エンタープライズに関わるものには独自の単語が多いので、その解説をします。

MDM(Mobile Device Management)

「MDM」とは「Mobile Device Management」の略で、法人におけるモバイル端末管理です。 管理者は、MDMに登録されているデバイスを安全にリモートで管理することができます。

MDMを行うためのサービスは複数存在しますが、各サービスとも「MDM Protocol Reference」に準拠しています。

MDMが便利な理由は、遠隔でブラウザベースでデバイスを管理できることです。できることは例えば以下のようなことになります。

  • デバイスからの情報収集
  • 制御
  • 設定の配布
  • 特定のアプリの配布

MDM管理のデバイスを持ったことがある人は、覚えがあるかもしれません。 プライベートで使っているiPhoneにはある標準アプリが、会社から支給されたデバイスにはない、というような場合はMDMで管理されているかもしれません。

このMDMサービスがないと、デバイスを管理したい企業側は、管理したいデバイスと有線接続をして諸々の設定を行わなければいけないため、 数が多くなればなるほど管理は大変になってしまいます。

AppConfig for Mobile Apps

それではMDMについて理解できたところで、問い合わせの時に出てきた「App Config for Mobile Apps」についてです。

調べてみると「AppConfig Community」が出しているものであるとわかります。

AppConfig Communityとは、「エンタープライズ向けのモバイルアプリを構成、保護するためのツールやベストプラクティスを紹介するコミュニティ」です。

IBM MassS360、jamfなど、複数のMDMサービスベンダーによって支援されており、エンタープライズiOSにおけるモバイルアプリ設定の標準化を行なっている団体のようです。

ユーザーにIDやパスワードを入力をさせずにログインさせることはできるか?

では単語が理解できてきたところで、問い合わせの本題である「IDやパスワードを入力をさせずにログインさせることはできるか?」ということについてです。

結論、MDMサービスによってはできる可能性があるが、少なくともManaged App Configurationを使用して実現するのは、非推奨。

ということまでがわかりました。

また少し単語ができてきたので説明を挟みます。

Managed App Configuration

Managed App Configuration とは、MDMからアプリ用の設定値を配布する仕組みになっています。 参考にした資料を見ると、例えば全従業員に特定の値をアプリで入力してほしい、といったケースで活躍するそうです。

配布する設定値を必要数、設定することができ、かつMDMサービスを通じて設定を行うため、設定値を変えるたびにビルドをするということは不要になります。

ちなみにこれを使用する場合、必要なことは以下の5つになります。

  • Managed App Configuration 対応のMDMサービス
  • MDM管理下のiOS端末
  • (場合によっては)Apple Business Manager
  • MDMサービス上での設定値の設定
  • Managed App Configuration 用のアプリ実装

最後のアプリ実装は、MDMサービス上で設定された値をアプリ側で取得するというものになります。

以下のように UserDefaults でcom.apple.configuration.managedというキーを指定することで取得することができるそうです。

let dic = UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed")

なぜ非推奨か?

ではなぜManaged App Configuration では非推奨なのでしょうか。 今回は、IDやパスワードをアプリで入力させてほしい、というケースなので活用できそうな雰囲気があります。

理由は、パスワードのようなセンシティブな情報をManaged App Configurationで管理することはMDM Protocol Referenceで非推奨だから、です。

実際にMDM Protocol Referenceを確認すると、確かに以下のような記述があります。

The managed app configuration and feedback dictionaries are stored as unencrypted files. Do not store passwords or private keys in these dictionaries.

記載の通り暗号化されていないファイルに保存されるため、というのが理由のようです。

多くのMDMサービスはこのReferenceに準拠しているようですので、少なくともManaged App Configurationを使用して、今回のユースケースを実現することは非推奨であることがわかりました。

まとめ

エンタープライズiOSについて調べてみました。本記事は、iOSDCというiOSアプリ開発のカンファレンスや、Apple公式資料、AppConfig Communityが提供している資料を元に作成しています。

基礎的な内容にはなりますが、エンタープライズの領域に関してあまり情報が多くなかったため、同じような情報を求めている方の参考になれば幸いです 😊

参考

Apple Developer Documentation

iOSDC Japan 2020: キーワード多すぎ!なエンタープライズiOSの世界を… / oishi - YouTube

iOSDC Japan 2021: MDMを使って業務用アプリの初期設定を自動化する技術 / oishi - YouTube

What is AppConfig Community and What Does it Do for the Enterprise?

さいごに

ヤプリでは一緒に働く仲間を募集しています!「興味をもった!」という方や、「もう少し具体的な話が聞いてみたい」と思った方はぜひカジュアル面談にお越しください。

open.talentio.com