Open9
自作メモアプリのためのストレージ検討
自作メモアプリでメモや画像の複数デバイス間の共有を行いたい。
要件↓
- プライベートなメモを他の人が見られないストレージに配置できる(アプリ制作者である自分からも見えないようにできるのがベスト)
- ほぼリアルタイムで他のデバイスに最新の変更が同期される。同期は10秒くらいの遅延を許容できる
- データベースを管理しなくてよい
- ローカルのみでも動作し、再びインターネットに繋がったときにローカルの変更をリモートに反映してくれる
- 全データに対してキーワード検索をかけたい
これらの要件を考えていくと、1.に対応しているサービスが結構少ない。firestoreやAWSは管理者がデータベースの内容を見られるので適していない。
3つ選択肢を思いついた。
- iCloudなどの個人用ストレージサービスを使う。(Bear notesが採用している。)
- あらかじめローカルで本人しか知り得ない暗号鍵で暗号化しておく。「本人しか知り得ない暗号鍵」は、ログインパスワードそのものを使ったりする場合があるようだ(InkDropがこの方法を採用している)。
- サーバーも各ユーザーで立ててもらう(InkDropがオプションとしてこの方法に対応している)。
2はユーザーがパスワードを忘れた際の復旧が不可能なので、リスクが高くできればやりたくない方法だ。3はオプションとしてはいいが、それだけだとリテラシーの高いユーザーにしか使ってもらえなくなる。
できれば1のような方法でメモを同期させたい。
iCloud DocumentsだとやはりAppleデバイスでしか動作しないか?
DropBox API良さそう(記事めっちゃ古いが)
iCloud Document StorageはAppleデバイス以外への対応が無理そう
パスキーを使えば、本人しか知り得ない暗号鍵を複数デバイスで共有できるか?
機種変更、それもiPhoneからAndroid・AndroidからiPhoneのようにマルチデバイス対応でもプラットフォーマーを超えるパスキー共有は不可能なため、再度パスキーの登録が必要
プラットフォームを跨げないらしい
実際に近くにあれば、Apple 製以外のデバイスでも使えます。
いけるのでは
CloudKitはiCloud キーチェーンによる暗号化をサポートしている。Firebaseにも似たような機能があればいいが…。
これがfirestoreのそれかな?