質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

アプリ開発におけるデータの保存方法について

zombielove0908
zombielove0908

総合スコア31

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

1回答

0グッド

3クリップ

649閲覧

投稿2023/01/26 11:07

編集2023/01/26 11:29

前提

Flutterで日記アプリ開発をしています。まだ学習したばかりでデータの保存方法について悩んでいます。

  • ネットがつながっている時に動けば問題ないと考えています。
  • 将来的にはバックアップをできるようにはしたい
  • ユーザー登録しなくても使えるようにしたい

実現したいこと

データ保存方法でいくつか候補があるのですが、できる限り一般的な実装方法は何でしょうか?
希望としてはできる限りシンプルで簡単な実装を好みます。(Laravelに慣れています。)

・アプリ内ではデータを保存せず、API経由でサーバ側に保存する
→ アプリ内にデータベースを構築しなくてもよいので比較的簡単に実装できると思っています。(私がLaravelに慣れていることもあり)
ですが、セキュリティ対策として少し不安があるのですが、APIキーのやり取りで対応すればいいのでしょうか?
また、ユーザー登録せずに使うことも可能でしょうか...?

・Sqliteでアプリ内にデータを保存する
→ 私が慣れていないこともあり手間がかかる可能性あり ローカルで保存しているのでセキュリティとしては安心?

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

アプリ側でデータを持つよりは、サーバー側ですべて保持した方がシンプルだと思います。
サーバーはJSONを返すAPIだけに徹して、アプリが表示だけを担当する感じです。
したがって、アプリ側でSqliteを使う必要はないと思います。
アプリ側は認証情報を保持するだけでいいんじゃないでしょうか。
FlutterとLaravelを使った事がないのでここは回答できないのですが、
"Flutter Laravel 認証"とかでググれば出てきそうです。
(自分はUnity+Railsで似たような事をやってます)

ユーザー登録せずに使うことも可能でしょうか...?

ユーザー登録をしないというのはシステム側から見た場合不可能ですが、ユーザー側から見て登録操作をしないという事は可能です。ユーザー登録を自動化すればいいので。
ゲームアプリなどでよくある方法ですが、タイトル画面でタップされたときにアプリ側=端末内に認証情報のファイル(自分はJSONファイルをよく使います)があればログインAPIへリクエストする。
成功すれば、次の画面に進む、失敗したらログインエラーと表示して終了。
認証情報がなければ新規登録と判断して、ユーザー登録APIにリクエストを投げてユーザーのレコードを作成して認証情報をレスポンスとして受け取り端末に保存し、ログイン処理へ進むという形にします。

投稿2023/01/28 01:39

mingos

総合スコア3896

yuma.inaura👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

zombielove0908

2023/01/28 12:47

ありがとうございます!回答していただいた後で申し訳ないのですが、サーバ側ではユーザーが入力したデータを見れない状況を作る必要がありそうでした。(入力した本人しかデータを見れない) その場合E2EE(エンドツーエンド暗号化)で実装する必要がありそうだったのですが、大変そうだったので一旦はローカルDBで保存する方向でver1は作りたいと思います。 もし、他に良い実装があれば教えていただけると助かります。
mingos

2023/01/28 14:01

暗号しようがアプリで表示するには必ず復号化するわけで、サーバーに保存すれば暗号化しても管理者は見ようとすれば見れてしまいます。 したがって、どうしてもユーザーにしか見えないようにするなら完全にローカルで保存するしかないです。 そうなるとデータのバックアップはどうするのかという事になりますが、 バックアップについては、エクスポート、インポート機能を作成してユーザー自身でバックアップファイルをDropboxかGoogleドライブなどで保管してもらうみたいな感じになるかと思います。
zombielove0908

2023/01/29 09:13

返信ありがとうございます! サーバーに保存すれば暗号化しても管理者は見ようとすれば見れてしまうということですが、 https://code4sabae.github.io/e2ee/purejs.html にあるような方法であれば見れないようにできるのではないかと思っています。深く調べたわけではないのですが... バックアップについては、インポート・エクスポートだったらたしかにできますね。ありがとうございます。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。