データ永続化

データ永続化

執筆済 ソフトウェア開発

アプリを閉じても消えないようにする。

選択肢#

手段 適する対象
キーバリュー 設定、フラグ UserDefaults、localStorage
ファイル まとまったデータ、画像 JSON、Plist
組み込み DB 構造化データ、検索が要る SQLite、SwiftData
キーチェーン 秘密情報 トークン、パスワード
サーバ 端末をまたぐデータ API

判断の目安#

数個の設定値        → キーバリュー
数百件・検索が要る  → データベース
秘密情報            → キーチェーン(他に置いてはいけない)
端末間で同期        → サーバ or CloudKit

UserDefaults に認証トークンを入れてはいけない。 暗号化されておらず、バックアップにも平文で含まれる。

スキーマの変更#

保存形式は必ず変わる。 最初から移行の手順を考えておく必要がある。

方針 内容
バージョン番号を持つ 段階的に変換する
追加のみ 既存フィールドを消さない
前方互換 知らないフィールドを無視する

すでに配布したアプリのデータは消せない。 古いバージョンから直接最新へ移行できる経路が要る。

整合性#

書き込みの途中でアプリが落ちると壊れる。

「書き込み中に電源が落ちる」は稀に見えて、 利用者が多ければ必ず起きる。

参考文献#

ノート一覧を閉じる