[Android] SharedPreferencesを使ったシンプルなデータ保存

Androidアプリで「ちょっとしたデータを保存したい」と思ったとき、まず使うのが SharedPreferences です。データベースを使うほどではないけれど、設定値やログイン情報を覚えておきたい…そんなときに便利な仕組みです。

今回は、SharedPreferencesの基本的な使い方と、実務でハマりやすいポイントについて紹介します。

スポンサーリンク

SharedPreferencesの特徴

  • アプリ内に キーと値のペア でデータを保存できる
  • プリミティブ型(String, Int, Boolean など)を簡単に扱える
  • アプリを閉じても値が保持される
  • ユーザーごとの簡単な設定値に最適

一方で、大量データや検索が必要な場合には不向きなので、SQLiteやRoomなどを使うべきです。

実装例

まずは文字列を保存・読み出すシンプルな例です。


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val prefs = getSharedPreferences("my_prefs", MODE_PRIVATE)

        // 値を保存
        val editor = prefs.edit()
        editor.putString("username", "taro")
        editor.putInt("age", 25)
        editor.putBoolean("isLogin", true)
        editor.apply() // 非同期保存
    }
}

apply() を呼ぶことで保存が完了します。同期的に保存したい場合は commit() を使いますが、基本的には非同期保存の apply() で十分です。

値の読み出し

保存した値は以下のようにして取り出せます。


val prefs = getSharedPreferences("my_prefs", MODE_PRIVATE)

val username = prefs.getString("username", "defaultUser")
val age = prefs.getInt("age", 0)
val isLogin = prefs.getBoolean("isLogin", false)

Log.d("PrefsTest", "username=$username, age=$age, isLogin=$isLogin")

第2引数は「デフォルト値」で、保存されていない場合に返される値です。

使うときのポイント

  • 保存する内容はシンプルに
    – SharedPreferencesはJSONやオブジェクトの保存には不向きです。あくまで基本的な値専用と割り切りましょう。
  • スレッドセーフではあるが、大量更新は避ける
    – 何度も更新が走るケースはDBを検討すべきです。
  • セキュリティ面に注意
    – そのまま平文で保存されるため、パスワードや認証トークンは保存しない方が安全です。どうしても必要な場合は暗号化ライブラリと組み合わせましょう。

まとめ

SharedPreferencesはアプリ開発における「ちょっとしたデータ保存」の基本機能です。

  • キーと値のペアでシンプルに保存できる
  • アプリを閉じてもデータが保持される
  • セキュリティに注意しつつ、適切に使うのがポイント

👉 今後の記事では「EncryptedSharedPreferences」を使った暗号化保存についても紹介予定です。より安全にユーザー情報を扱いたい方はぜひチェックしてみてください。

コメント

タイトルとURLをコピーしました