この記事は、iOSアプリでデータを保存する方法をざっくり知りたいと言う方に向けた物になります。
アプリを作ろうという段階で、
アプリを終了した後もデータを取っておきたい時はどうするんだろう?
といった問題があると思います。
そういった課題を、少しでも解決できる手助けができれば幸いです。
それでははじめましょう。
データ保存の種類
まず、iOSでのデータ保存の方法の種類を紹介します。
データを保存するには主に4つの保存方法があります。
- UserDefaults
- ローカル
- データベース
- KeyChain
データ保持(アンインストール) | 実装難易度 | |
UserDefaults | ❌ | ◎ |
ローカル | ❌ | △ |
データベース | ❌ | ○ |
KeyChain | ⭕️ | △ |
それぞれ用途が違うので、一つずつ説明していきます。
UserDefaultsにデータを保存する
データ保存方法でまず最初に検討する方法です。
実装が容易なので、この方法で賄えるのであれば、ここに保存するのが最適解です。
ただし、便利な機能には制限がつきもので、
UserDefaultsには 4194304byte(約4MB)しか保存できません。 参考
なので、大きなデータを保存するのであれば、別の保存先を検討しましょう。
文字列、数値、フラグ、小さい画像
ローカルにデータを保存する
もっとも原始的にアプリの中にデータを保存する方法で、簡単に言うと、アプリ内のフォルダに保存する方法です。
データ保存自体はそこまで難しい実装は必要ないですが、ロードする時にどういった形で取得するかをしっかり設計しないと
抜け漏れやバグが発生してしまうので、その辺りの仕組み作りが難しいところですね。
画像、動画、音声などファイルサイズが大きいデータ
データベースにデータを保存する
SQLiteなどを使ってアプリのローカル保存先にデータベースを構築、保存する方法です。
検索や、フィルタリングなどが可能で、高性能なオープンソースライブラリもあるので、それらを使用すれば実装自体はそこまで難しいものではないです。
ただ、DB機能自体が重めな(ビルド時間が大きく変わってくる)機能になるので、保存するデータが2、3個しかないようであれば、
オーバースペックかなと思います。
大量の文字列、数値、フラグ、画像、動画、音声など
オープンソースで鉄板のクライアント向けDBライブラリ Realm の解説を以下でしているので、興味があれば合わせてご覧下さい。
KeyChainにデータを保存する
アプリを削除しても保存したデータを残す事ができ、暗号化されてセキュリティも万全な保存方法です。
Apple公式で大事なデータはKeyChainに保存して欲しいと言っています。
なので、個人情報を保存する場合はここに保存しましょう。
また、この保存方法は、再インストールしても残るデータになるので、
復帰処理をしっかり設計する必要があるので、設計難易度は比較的高めです。
個人情報
個人情報自体をアプリに保存する事はかなり危険なので、基本的にはそういった情報はサーバーに置く設計を検討しましょう。
まとめ
iOSでデータ保存の方法をまとめてみました。
それぞれ使用意図があるので、適した保存方法を選定できる事ができる手助けがこの記事でできたら幸いです。
閲覧ありがとうございました!
最後に、
個人アプリをリリースしました。良ければインストールしてみてください🙏
