はじめに
本記事は any Advent Calendar #2 「マルチテナントSaaSにおけるエンジニアリング大全」 Day18 の記事です。 弊社anyのアドベントカレンダーをひとつ丸ごと占有して、ひとりアドベントカレンダーとして、筆者の「マルチテナントSaaSのエンジニアリング」への経験をすべてアウトプットしていくカレンダーです。
本日はSaaSにおけるiOS/Androidアプリでの論点のいくつかを紹介していきます💪
MDMによる制約が存在する
企業で導入するSaaSであれば、端末についてMDM(Mobile Device Management)で管理されていることが多いのではないでしょうか。MDMを経由すれば社有端末に対して、一度にアプリをインストールしたり、アップデートをかけたりすることができます。
iOSであればABM(Apple Business Manager)、AndroidであればAndroid Enterpriseなど公式が用意するシステムもあれば、IdP側のID管理システムとパッケージングされている場合もあります。MDM経由での配布では、企業のIT管理者がアップデートのタイミングを決定するため、緊急のバグフィックスやセキュリティパッチを即座に適用できない場合が生じます。
最新バージョンが常に利用されない問題
Webフロントエンドと異なり、スマホアプリは 常に最新バージョンが顧客に配布されるわけではない ことに注意が必要になります。さらに前述したMDMと併用することにより、iOS/Androidのアプリのバージョンを固定することもできます。開発者目線では、致命的なバグを仕込んだときなど、強制アップデートさせたいにもかかわらず、企業側で制約をかけられることもあります。したがって下記のような対策が必要になります。
-
APIバージョニング戦略
- 複数のアプリバージョンが同時に稼働することを前提として、APIのバージョニングを適切に設計する必要があります。後方互換性を保ちながら、段階的に機能を追加・変更していくアプローチが求められます
-
最小サポートバージョンの設定
- アプリ起動時にバージョンチェックを行い、サポート範囲外の古いバージョンについては適切なメッセージとともにアップデートを促す仕組みが有効です
-
段階的ロールアウト
- App StoreやGoogle Play Consoleでは、段階的にアップデートを配信する機能があります。これにより、重大なバグを含むバージョンが全ユーザーに行き渡る前に問題を検出できます
顧客の利用環境に伴う特有の問題
筆者の経験則にはなりますが、企業向けであれば、4月のタイミングに一度に多くのインストールをされるなど、特定のタイミングで利用がスパイクする傾向があります。またオンボーディング研修の一環でダウンロードされて負荷がかかるなど、利用企業によってそのワークロードが大きく異なります。
またDay 17で述べたホワイトリスト形式の問題もスマホアプリでも同様に発生します。つまり社内VPNやプロキシサーバ経由の場合、こういった通信が遮断されてしまう場合があり、スマホはより顕著に制約をかけられていることが多いです。
キャッシュの保存にかかわるリスク
モバイルアプリの場合、オフライン利用を求められる場合があります。その場合、実際のデータを端末上に保持する必要が生じます。このとき端末にデータを保存して良いかどうか企業によっては決められている場合があります。
-
機密データの端末保存禁止
- 顧客情報や営業データなど、機密性の高いデータを端末に保存することが禁止されている場合があります
-
暗号化の必須化
- データを保存する場合でも、適切な暗号化が求められます。iOSのKeychain、AndroidのKeystoreなど、OS提供のセキュアストレージの活用が必要
-
データの保持期間制限
- キャッシュデータの保持期間に上限が設けられ、定期的な削除が求められる場合があります
-
リモートワイプ対応
- MDMからの指示により、アプリ内のデータを遠隔で削除できる仕組みが必要になることがあります
これらはデータの機密度にもよるので、要件に応じた検討が必要になります。
さいごに
今回はスマホアプリ特有の問題や課題について触れていきました。スマホアプリの諸問題は、これらの個社ごとの設定による傾向が強く、調査の難易度が高くなりがちな点にも注意が必要でしょう。さて明日からはより非機能によった話を中心に進めていきます。また抽象度が高くなりますが、楽しんでいってくださいませ🍵

