質問: ### 前提条件 Cordovaを使用してiOSアプリを作成する予定です。 その中で実現したい機能の中に、実装イメージが湧かないものがあるので、ネイティブアプリやハイブリッドアプリに詳しい方に質問させていただきたいです。 ### 実現したいこと 1)iPad等を利用したPOSレジなどで使われている、オフライン環境でもデータ(売上情報など)をローカルに登録し、回線がインターネットとつながった時点でローカル保存していたデータをサーバーに保存する機能を実現したいです。 2)オフラインで保存したデータは一度アプリを終了してしまったとしても保持しておけるようにしておきたいです。 ### 現在の認識 大雑把に考えると、オフライン状態では例えばlocalStorageなどにデータを保存しておき、オンラインになったタイミングでlocalStorageからデータを取り出してサーバー側にデータを登録すれば、「オフラインでもデータを登録でき、オンラインになったらサーバーにデータを登録する」を実現できるのではと考えています。 ### 困っていること・知りたいこと 上記方法だとlocalStorageの仕様上5MB以上のデータを保存することができず、最大でも5MB分のデータしかオフラインでは登録できないということになってしまうと思います。 ハイブリッドアプリやネイティブアプリで他にローカルにデータを保存しておける手段がないか調べてもみたのですが、答えを見つけることができませんでした。 アプリのローカルにデータを保存する必要がある場合は、他にどのような方法があるのか、どれくらいの容量のデータを保存できるのかを教えて頂けますでしょうか。 よろしくお願い致します。
回答: BJCRobot様、moonphase様、ご回答ありがとうございました。 お恥ずかしい話なのですが、まずネイティブアプリでlocalStorageなど以外を使ってデータを保存できる方法があること自体を知りませんでした。 ここからもし似たような悩みを持つ人がでてきたときのため、私が調べた内容を記載しておきます。 現状ではCordovaからローカル(アプリをダウンロードした端末側)にSQLiteでDBを作成して、そこにデータを保存できるようなので、そちらに注文データ等を保管していこうと思っております。 moonphase様のおっしゃる通り、注文データだけなら5MBの制限を超えることはないかと思うのですが、 頻繁に更新が起こらないマスタのデータ(どれぐらいの容量になるか不明)も端末側に保存できるようにしたいと考えているため、今回は端末側にDBを作成する方針で行く予定です。 調査する限り、端末側で使えるDBはSQLiteかRealmで、Realmのほうが後発でパフォーマンスが高いようでした。 しかし、2016年7月末現在でCordovaからRealmを使うためのプラグインが存在しない(Realmによると鋭意開発中とのことですが)ようですのでSQLiteが現実的だと思っています。 CordovaからSQLiteを使うためのプラグインは Cordova-sqlite-storageというものがあるようです。 日本語での詳しい解説は、こちらのほうで記事になっておりましたので興味があるかたはそちらをご覧ください。 https://ja.onsen.io/blog/monaca-application-sqlite/ ベストアンサーは最初に回答をいただいたBJCRobot様とさせていただきます。 ありがとうございました。