hacomono TECH BLOG

フィットネスクラブやスクールなどの顧客管理・予約・決済を行う、業界特化型SaaS「hacomono」を提供する会社のテックブログです!

非公開Appによる toB iPad アプリのデリバリー

非公開Appによる toB iPad アプリのデリバリー

こんにちは。hacomono でモバイルアプリを開発している teru です。
hacomono では、フィットネス利用者様向け(toC)のアプリ FitFits のほかに、店舗様向け(toB)の iPad 専用アプリを 2 つ提供しています。toC アプリのデリバリーは一般的な App Store 配布の知見がそのまま使えますが、toB アプリのデリバリーには toC とはひと味違った工夫が必要です。
今回はこの toB アプリのデリバリーにフォーカスして、非公開App(カスタムApp)による配布の仕組みと、セットアップ・アップデート運用で実践しているテクニックを紹介します。

hacomono の toB iPad アプリ

まずは今回の主役となる 2 つのアプリを簡単に紹介します。どちらも iPad 専用のアプリです。

店頭アプリ

店舗の受付などに設置して利用いただくアプリです。会員様のチェックイン(入館受付)や店頭での予約受付など、店舗運営のフロント業務を担います。スタッフが常時操作するというより、店頭に常設され、会員様やスタッフが必要なときに操作する、いわばキオスク端末的な使われ方が多いのが特徴です。

POSレジアプリ

店頭での物販・レジ業務を担うアプリです。商品の販売や店頭決済のほか、レジの開け締めや売上集計にも対応しており、購入履歴を会員データと紐づけて管理できます。またレシートプリンター・バーコードリーダー・キャッシュドロワーといった周辺ハードウェアとの連携を伴うのも特徴で、iPad アプリでありながら、周辺機器を含めた店頭のレジ環境を構成する中核を担っています。
同じ toB の iPad アプリでも、この 2 つは「使われ方」が大きく異なります。後述するように、この違いがアップデート戦略の違いに直結しています。

非公開App(カスタムApp)とは

この 2 つのアプリは、どちらも App Store の非公開App(カスタムApp)として配布しています。
App Store Connect では、アプリの配信方法として「公開」「非公開」「非表示」の 3 つを選択できます(アプリの配信方法の設定 - App Store Connect ヘルプ)。

  • 公開: いわゆる通常の App Store 配布。検索やランキングから誰でも見つけて入手できる
  • 非公開: App Store には一般公開せず、Apple Business Manager / Apple School Manager 上で指定した特定の組織だけが入手できる。いわゆる「カスタムApp」(一括購入とカスタムアプリ - Apple Developer
  • 非表示: 検索結果やカテゴリ・おすすめには表示されないが、ダイレクトリンクを知っていれば誰でも入手できる(非表示Appの配信 - Apple Developer

紛らわしいのですが、非公開Appと非表示Appは別物です。どちらも「検索に出てこない」点は共通ですが、非表示Appはリンクさえ知っていれば誰でもインストールできるのに対し、非公開Appは配布先の組織そのものを指定する、より閉じた配布形態です。
非公開App(カスタムApp)の特徴をまとめると次のとおりです。

  • App Store には一般公開されない(検索・ランキング・おすすめに出ない)
  • Apple Business Manager / Apple School Manager の「カスタムApp」として、指定した組織のみが入手できる
  • 組織への配布手段は MDM 経由または招待コード(コードの発行)
  • 通常の App Store アプリと同様に App Review(審査)を通過する必要がある
  • 一度審査を通過すると、配信方法を公開⇄非公開に変更することはできない
なぜ非公開Appを選んだのか

toB アプリの配布手段としては、他にも非表示Appや TestFlight、(自社従業員向けなら)Enterprise Program などが候補になります。その中で非公開Appを選んでいるのは、次のバランスが良いためです。

  • 通常の App Store のインフラに乗れる: 自動アップデートやバージョン管理など、公開アプリと同じ配信基盤がそのまま使える
  • 配布先を契約店舗様に限定できる: 非表示Appのような「リンクを知っていれば誰でも入手できる」状態にならず、配布の段階でアクセスを制御できる
  • 一般の方の目には触れない: フィットネス利用者様が検索で誤ってインストールしてしまう、といった事故が起こらない
セットアップの案内

非公開Appは「App Store で検索して入手する」という一般的なフローが使えないため、インストール用のコードをどう店舗様に届けるかがセットアップの起点になります。hacomono ではサポートサイトに、コードの発行からインストール・初期設定までの手順を掲載しています(例:店頭アプリをインストールするPOSレジアプリをインストールする)。
ここまでは比較的スムーズなのですが、本当に工夫が必要なのはアップデートです。

両アプリ共通:自動アップデートの有効化を推奨

個別のアップデート戦略に入る前に、共通の前提から。店頭アプリ・POSレジアプリのどちらでも、iPad の自動アップデートの有効化を推奨しています。iPadOS では「設定 > アプリ > App Store」から「アプリのアップデート」をオンにすることで、App Store 経由のアプリが自動的に更新されます(Apple 公式の手順はこちら)。
非公開Appの利点の 1 つがここで、実際の運用上、App Store に一般公開されていないアプリでも、自動アップデートは公開アプリと同じように機能します。店舗様に意識していただかなくても、多くの端末は自動的に最新版に追従します。
とはいえ、自動アップデートがオフの端末や、電源・Wi-Fi の条件が揃わず更新が走っていない端末は一定数存在します。この「自動アップデートから漏れた端末」へのアプローチが、2 つのアプリで正反対になります。

POSレジアプリのアップデート戦略

POSレジアプリは決済を扱い、ハードウェアとも連携する性質上、できるだけ最新バージョンをご利用いただきたいアプリです。そこで自動アップデートに加えて、一定以上古いバージョンで起動された場合に、アップデートを促すダイアログを表示するようにしています。

ハマりどころ:非公開Appは「App Store を開く」が通用しない

一般的なアプリであれば、このダイアログに「アップデートする」ボタンを置いて App Store のアプリページへ遷移させれば終わりです。ところが非公開Appでは、この一般的なフローが通用しません。
非公開Appには一般公開されたプロダクトページが存在しないため、App Store の URL をアプリから開いても、端末側ではアプリページを表示できない(「入手できません」といった状態になる)のです。「アップデートしてください」と言っておきながらその導線が機能しない、という状況になってしまいます。
そこで POSレジアプリでは、サポートサイトにアップデート手順の記事を用意し、ダイアログからは当該ページへジャンプさせるようにしています。App Store アプリの「アカウント > アップデート」画面から更新する手順を、スクリーンショット付きで案内する形です。
アプリ内から直接 App Store へ遷移させる場合に比べればワンクッション挟みますが、「手順が変わったらサポートサイト側だけ直せばよい」という運用面のメリットもあり、非公開Appの制約下では現実的な落としどころだと考えています。

店頭アプリのアップデート戦略

一方の店頭アプリは、同じ非公開Appでもまったく違うアプローチをとっています。鍵になるのは使われ方の違いです。

アクセスガイドの有効化を推奨

店頭アプリは店頭に設置して使われるケースが多いため、iOS / iPadOS のアクセスガイド(Guided Access)の有効化を推奨しています。アクセスガイドは端末を 1 つのアプリしか使えない状態に固定する機能で、会員様が誤ってホーム画面に戻ってしまったり、他のアプリを操作してしまったりすることを防げます(Apple 公式の説明はこちら)。
そしてアクセスガイドには、キオスク運用において見逃せない副次的なメリットがあります。万が一アプリがクラッシュしても、自動的にアプリが再起動されるのです。無人で稼働している時間が長い店頭端末にとって、「クラッシュしたまま誰も気づかず受付が止まっている」という最悪の事態を避けられるのは大きな安心材料です。

だからこそ、アップデートダイアログは「出さない」

ここで POSレジアプリと同じ発想で「起動時にアップデートを促すダイアログを出せばいい」と考えると、落とし穴があります。
アクセスガイドでの無人運用を想定すると、クラッシュ → 自動再起動 → 起動時ダイアログが表示されたまま誰も操作せず、受付業務がブロックされるという本末転倒な事態が起こり得ます。アクセスガイド中は App Store へ遷移することもできないため、その場でアップデートを完了する導線も作れません。
このため店頭アプリでは、あえて起動時にアップデートを促すダイアログを実装していません

現状の運用と課題

その結果、店頭アプリはアプリ内でのアップデート導線の仕組み化ができておらず、現状は定期的に実施している古い OS のサポート終了のタイミングなどに合わせて、アプリのアップデートを個別に案内する運用にしています。
正直なところ、ここはまだ道半ばです。「無人運用をブロックしない形でのアップデート訴求」(例:操作の妨げにならないバナー表示、営業時間外を狙った案内、リモートでの更新状況の可視化など)は今後の改善テーマとして考えています。

まとめ


POSレジアプリ 店頭アプリ
配布形態 非公開App 非公開App
推奨設定 自動アップデートの有効化 自動アップデート+アクセスガイドの有効化
起動時のアップデート促し あり(サポートサイトへ誘導) なし(無人運用を優先)
アップデート案内 ダイアログ+サポートサイト OS サポート終了などの節目に個別案内

非公開Appは「App Store のインフラに乗りながら、配布先は特定の組織に限定する」という toB アプリにちょうどいい配布形態ですが、一般公開されない・アプリページを開けないという特性がアップデート導線に効いてきます。さらに同じ非公開Appでも、レジ端末と無人キオスクという使われ方の違いによって、最適なアップデート戦略は正反対になりました。
toB アプリのデリバリーで同じ課題に向き合っている方の参考になればうれしいです。

参考リンク

Apple 公式
hacomono サポートサイト


▼iOSDCチャレンジトークン
#ウェルネスが広がる社会を作るhacomono



株式会社hacomonoでは一緒に働く仲間を募集しています。エンジニア採用サイトや採用ウィッシュリストもぜひご覧ください!

www.hacomono.co.jp

app.notion.com