Open5

強制アップデートとUXについて考える会

いせりゅーいせりゅー

概要

  • 強制アップデートを以下の点で考える
    • アプリ開発者目線から見た強制アップデート
    • ユーザー目線から見た強制アップデート

ルール

  • 自分の思うことや考えていることを記載するため、基本的に他の方を批判するようなコメントなどは控えていただけると幸いです🙇
  • あくまでも意見の交換会というイメージでやっていきますよおおお
いせりゅーいせりゅー

FoodGramにおける強制アップデートについて

アプリ紹介

  • おすすめのレストランや自分だけが知っている穴場なお店をアプリ内で共有し合うコミュニティアプリ
  • 投稿することでこのアプリ内だけのレストランマップをユーザー全員で作れるアプリ

iOS

https://apps.apple.com/gb/app/foodgram/id6474065183

Android

https://play.google.com/store/apps/details?id=com.food_gram_app.com.com.com

現状について

強制アップデートが未実装です。

強制アップデートが必要だと考える理由

  • 不具合があり、アップデートを直さないと一部の機能が使えない状態にある
  • レストラン検索が圧倒的に改善してほぼヒットするため、ヒットしなかったという悩みを解決できる
  • 良いアプリになってきている気がする

強制アップデートを躊躇している理由

  • 投稿しようと思ったときに、「アップデートしてください」と強制ダイアログが出ると投稿をするのをやめてしまう気がする
  • アップデートしなくてもちゃんと使えることが一番いいアプリではないかと個人的には考えている

ほしい意見

  • 強制アップデートについての開発者側とユーザー側の考え
  • どういった仕組みなどでこれらの問題をいい感じに解決できる方法
  • 作成しているアプリではどういった感じにしているのか
ReeenReeen

ご無沙汰しております!Reeenです。
最近強制アップデートの実装に関わることがあり、いい感じに解決できそうな方法があったので、返信させて頂きました。
お力になれれば幸いです🙇

強制アップデートについての開発者側とユーザー側の考え

自分もいせりゅーさんと同じく「(基本的には)アップデートしなくてもちゃんと使えることが一番いい」と考えています。
ただ、既存の致命的なバグを修正した等のバージョンアップにおいては、ユーザーの操作を妨害してまで強制アップデートをしないと、急に予期せぬ動作をしてしまう可能性があり、操作を妨害することよりも悪い体験を提供することになってしまうのではないかなと思います。
なので、私は開発者としては強制アップデート機能自体は、「ユーザーに良い体験を提供するための手段の1つ」であり、この機能は可能であれば実装するのが良いのではないかなと考えております。

ユーザーとして、たまに強制アップデートのダイアログが出ますが、アップデートも1分も掛からず終わることがほとんとで、あまり気にはしていないです。
また、AppStore等での更新はバックグラウンドでも可能なので、その間だけ別のアプリを使って、少し時間が経ったら、使用していたアプリを再度開くことが多いです。

どういった仕組みなどでこれらの問題をいい感じに解決できる方法

Firebase Remote Config等のリモートサーバーに「最低バージョン」を設置し、強制アップデートが必要な時のみバージョンを書き換える方法であれば、極力強制アップデートをせず、必要なタイミングのみ最新バージョンにアップデートの強制を行えると思います。

その他に、バージョンを確認するタイミングを、アプリ起動時や画面描画時ではなくユーザー何かのアクションをしたあとに行う方法であれば、(最低限の)ユーザーの操作を邪魔せず、アップデートを強制することもできそうです。(ただ、これだけだとバージョン更新の漏れが発生する可能性があるかもです。。。)

作成しているアプリではどういった感じにしているのか

現在開発中のアプリでは、AppStoreからアプリのバージョンを取得し、それをローカルのアプリのバージョンと比較して、端末側が古い場合に強制アップデートを行うようにしております。
メジャーバージョン、マイナーバージョン、パッチバージョンのどこで比較するかは、開発者の自由ですが、私のチームではパッチバージョンで比較をしています。(頻度が多いですが、その分検証が楽になり、より早く不具合の修正が可能になっています。)

いせりゅーいせりゅー

コメント頂きありがとうございます!!
Reenさんの意見がとても的を得ており、納得しました。
また、Firebase Remote Configについて今更ながらふわっとしか知らなかったので、ゆっくりと学んで使いこなせればなと思いました(^_^;)

いせりゅーいせりゅー

疑問に思うこと

  • 個人開発レベルであれば、Remote Confingを使わなくても、メジャーバージョン、マイナーバージョンが現在のバージョンと異なっていたら、強制アップデートするだけで十分ではないかと考える。
  • 小さな修正や改善(パッチバージョン)以外の場合は、特段アップデートしなくてもいいかなと言う気持ち
  • Remote Configでできる管理画面からバージョンの変更が可能になる機能はあまりメリットと感じないため、不要そう
  • A/Bテストを実施などはする予定がない

Remote Configを使わずに強制アップデートの実装方法を考える

  1. package_info_plusを使用して今使っているバージョンを取得
  2. new_version_plusを使用してAppleStoreの最新版のバージョン番号を取得
  3. 取得した2つのバージョンの差の小数点1桁目の値が異なる場合、強制アップデートのダイアログを出す

https://pub.dev/packages/package_info_plus

https://pub.dev/packages/new_version_plus

メモ

  • Remote Configのメリットをしっかりとまだ読み切れていないかもしれません。
  • ただ、今の状態(1人での開発)だとあれこれ管理し切れない気がするのと難しそうですぐに手がつけられなさそう...