愚かなハッカーたれ、利口なエンジニアよりも

地方でフリーでプログラミングスキルで生きていく

アプリのユーザーデータをサーバーに保存したいけど、ログインが壁になることを回避するアイデア

こういったアプリを作りたいとする。

  • ユーザー個人のライフログ的な日々の記録をする
  • ユーザー間でデータをシェアするわけではない
  • ユーザーがアプリを削除してもデータはサーバーに残したい
  • ユーザーが持っている複数端末でデータ同期がしたい
  • facebooktwitterなどSNSのアカウントでログインできるようにしたい

GoogleのFirebaseを使えば、このニーズを満たせる。

しかし、アプリを起動して早々に「データを保存するためにSNSでログインしてください」ってな感じでログイン画面が出ると、多くのユーザーはアプリをそっと閉じてアンインストールしてしまいかねない。自分もユーザーならそうする・・・

そこで、

  • ログインなしてもローカルでのみのデータ保存ができる
  • 後でサーバーに保存したくなったら、サーバー保存できるよう切り替えられるようにする

でも、これもまためんどい。ローカルストレージに保存するのとサーバーストレージに保存するのでは実装が異なる。そこはラッパークラスでも作って、なんとかできるだろうけど、ユーザーが数千件以上ものデータを保存していた時、移行処理時間もかかるだろうし、きちんと移行できるか心配だ。できなかったらユーザーからの稲妻が落ちる。

そこで、こうするのはどうか?と考えた。

  • 最初にローカル保存するかSNSログイン&サーバー保存するか選べる
  • ローカル保存は10〜100件程度までしかできない
  • ローカル保存の上限に達した時点で、「これ以上保存するためにはサーバーへの保存が必要です」とアラートを出して、SNSログインをうながす

これだとある程度使って気に入ってくれた人が、SNSログインして使ってくれるし、データの件数もそう多くないから、移行にかかる処理時間も短くて済む。

さらにこの条件を加えておく。

  • サーバー保存へ移行するとローカル保存へは戻すことはできません

ユーザーがこんなことを望むことはほとんどないだろう。というか、こういうことに対応することも考えると大変だし、万が一移行に失敗したらやっぱりユーザーの稲妻が落ちるだろう。

実際に自分はこの条件でアプリを作ってみたいと思う。