Monacaバックエンドは2021年05月に終了します。それに伴い、データをエクスポートし、別な環境に載せ替えなければいけません。エクスポートデータはNCMBに対応していますので、移行先としてお勧めです。
すでにコレクション、プッシュ通知のデータ移行ができるツールはリリースされています。今回はそれ以外のデータについての取り扱いについて解説します。
ユーザデータの移行について
Monacaバックエンドのユーザデータをどう移行させるかは大きな問題です。まず一番大きな問題なのが、パスワードです。一般的にパスワードはハッシュ化されており、パスワード文字列のまま保存されることはありません。また、そのハッシュ化する際のアルゴリズムについてはサービス固有のものになっており、公開されないのが一般的です。Monacaバックエンドについても、ユーザデータをエクスポートしてもパスワードはダウンロードされません。
つまり、基本的にはユーザIDとメールアドレス、それ以外の補足情報(表示名など、みなさんアプリ独自のデータ)がエクスポートできます。それらのデータをmBaaSに取り込む場合、パスワードはダミーで生成する必要があります。
要点
取り込むか否か、キーになるのはメールアドレスの存在です。メールアドレスがあれば、取り込んでもいいでしょう。メールアドレスがない場合は、取り込まない方が無難です。
フローについて
ユーザデータを取り込まない場合
ユーザデータをmBaaSに取り込んでいない場合、まず最初にMonacaバックエンドにて認証処理を行い、認証が通った場合だけ同じIDとパスワードをmBaaSに新規ユーザとして登録する方法があります。この場合、ユーザデータを全員読み取り可として登録することで、ユーザの存在チェックを行う必要があります。
つまりフローとしては以下のようになります。
この場合の問題点としては、Monacaバックエンドが有効なうちに移行を完了しなければならないということでしょう。利点としては、旧バージョンのアプリを使っている場合でも、そのままアプリの利用が続けられます。
ユーザデータを取り込む場合
ユーザデータをmBaaSに取り込んだ場合は、あるタイミング(新バージョンのアプリをリリースしたタイミングなど)で、旧バージョンのアプリを使えない状態にしなければなりません。そうしないと、MonacaバックエンドのデータとmBaaSのデータが混在する状態になってしまい、管理が煩雑になります。アプリによってはそうした動作制御を入れているものもあるでしょうが、もしない場合にはこの方法は利用できませんので注意してください。
また、メールアドレスが登録されている必要があります。パスワードをダミーで登録するため、初回にパスワード変更しなければなりません。
フローとしては次のようになります。
- ユーザ名、パスワードを入力して認証処理を開始します
- 必ず失敗するので、パスワード再設定を促します(移行に伴いパスワードがリセットされたといった説明書きが必要でしょう)
- メール経由でパスワードを再設定後、ログイン可能になります
メールアドレスがない場合はどうしたらいいか
メールアドレスがない場合、何らかの形で認証しようとしている人が正しいユーザであると確認できなければいけません。たとえば生年月日のような情報です。ログインIDとそれらの情報をもって、ただしい対象であると判別できるならば、入力してもらったメールアドレスとユーザ情報と紐付けた上でパスワードリマインダーを送信すればいいでしょう。
そうした情報がなく、単純にユーザ名だけで判断してしまうと、アカウントの乗っ取りができてしまうのでお勧めしません。
ACLについて
Monacaバックエンドではデータへのアクセス権限が設定できましたが、それらのデータはエクスポート対象になっていません。そのため、mBaaSに引き継げませんのでご注意ください。
まとめ
認証データの移行は大きな課題です。アプリのバージョンアップはもちろん、その後の浸透までふくめるとしばらく時間がかかります。来年5月末までの猶予はありますが、なるべく早めの対応をお願いします。