みなさまこんにちは〜!
メモリアインクのすだです。
本日は、
KotlinのSharedPreferencesを使用したデータ保存について
実際のコードを利用して徹底解説していきます!
この記事を読んでわかること…
・SharedPreferencesとは?
・SharedPreferencesの基本的な使い方
・SharedPreferencesを使ったデータ保存の実装方法
環境
- Kotlin (ver 1.9.0)
- Android Studio (Giraffe | 2022.3.1 Patch 3)
SharedPreferencesとは
SharedPreferencesとは、Androidアプリ内で簡単なデータを保存するための仕組みです。
例えば、ユーザーの設定やテキストデータを保存するのに適しています。
データはキー(key)と値(value)のペアで保存され、保存されたデータはアプリを閉じても保持されます。
使われる場面の例:
- アプリのテーマ(ダークモード/ライトモード)や通知設定(ON/OFF)を保存
- 電子書籍や動画アプリで、最後に読んだページや再生位置を保存
- 初回起動時にチュートリアルを表示するかどうかのフラグ
このように、簡単なデータを一時的に保存しておくことが可能ですが
使用する上で注意も必要です。
SharedPreferencesの注意点:
- 保存に向いているのは、あくまで小さなデータです。大量のデータや複雑な構造のデータは別のツールを使用しましょう。
- SharedPreferencesは暗号化されないため、機密情報(パスワードやトークン)は保存しないようにしましょう。
SharedPreferencesの基本的な使い方
SharedPreferencesでは、データを保存・取得・削除することができます。
- 保存できるデータ型:
String
,Int
,Boolean
,Float
,Long
など - 保存先:アプリ内の内部ストレージ
- ファイル名:保存されるデータはファイルに関連づけて管理される
SharedPreferencesの実装手順
それでは早速、実装していきましょう!
データの保存方法
SharedPreferencesを使用してデータを保存するには、以下の手順を踏みます。
- SharedPreferencesのインスタンスを取得
Editor
を使ってデータを保存appy()
またはcommit()
で反映
// SharedPreferencesのインスタンスを取得
val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE)
// Editorを使ってデータを保存
val editor = sharedPreferences.edit()
editor.putString("username", "Suda")
editor.putInt("age", 25)
editor.putBoolean("isLoggedIn", true)
// データを反映
editor.apply()
コードの解説 ▼
// SharedPreferencesのインスタンスを取得
val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE)
→ 第一引数の"MyPreferences"
は、保存するデータを格納するファイル名です。
- ファイル名が同じならデータは上書きされます
- ファイルはアプリ内部ストレージに保存され、他のアプリからはアクセスできません。
→ 第二引数のContext.MODE_PRIVATE
は、保存したデータをアプリ内のみで使用できるモードです。
(他のアプリからアクセスできないセキュアな設定です。)
// Editorを使ってデータを保存
val editor = sharedPreferences.edit()
→ SharedPreferencesにデータを書き込むためのエディタ(Editor)を取得します。
putString
, putInt
, putBoolean
はデータを保存するためのメソッドです。
- キー(key):データを識別する名前
- 値(value):保存するデータ本体
// データを反映
editor.apply()
→ apply()で、データを非同期(バックグラウンド)で保存します。
- すぐに呼び出し元の処理を返すため、パフォーマンスに優れています。
- 保存処理はバックグラウンドで行われるので、UIスレッドをブロックしません。
データの取得方法
保存したデータを取得する場合は、get系のメソッドを使用します。
// SharedPreferencesのインスタンスを取得
val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE)
// データを取得(キーとデフォルト値を指定)
val username = sharedPreferences.getString("username", "Guest") // デフォルト値: Guest
val age = sharedPreferences.getInt("age", 0) // デフォルト値: 0
val isLoggedIn = sharedPreferences.getBoolean("isLoggedIn", false) // デフォルト値: false
コードの解説 ▼
getString
, getInt
, getBoolean
はSharedPreferencesからデータを取得するためのメソッドです。
- 第一引数:保存時に指定した名前(key)です。このキーに対応する値が保存されているかどうか検索します。
- 第二引数:デフォルト値です。キーに対応する値が保存されていない場合、ここで指定したデフォルト値が返されます。
データの削除方法
データを削除するにはremove()を使用します。
// SharedPreferencesのインスタンスを取得
val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE)
// Editorを使ってデータを削除
val editor = sharedPreferences.edit()
editor.remove("username")
editor.apply()
// 全てのデータを削除する場合
editor.clear()
editor.apply()
コードの解説 ▼
remove("username")
で、キーが”username”に該当するデータを削除します。
該当するキーが存在しない場合は、何も行われません(エラーにはなりません)。
editor.clear()
で、保存されている全てのデータを削除します。
たとえ複数のキーが存在しても、まとめて削除されます。
まとめ
おつかれさまでした。いかがでしたでしょうか!
- SharedPreferencesは小さなデータをキーと値で保存するのに便利
- データ保存にはEditorを使用し、apply()で非同期保存する
- データ取得はgetString, getIntなどのメソッドを使用する
上記方法で、ぜひSharedPreferencesを活用してみてください。
技術者としてのキャリアパスを次のレベルへと進めたい皆様、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
自分の市場価値をさらに向上させてみませんか?
それではまた次の記事でお会いしましょう!
コメント