【正社員】還元率83%【フリーランス】マージン一律5万円で案件をご紹介させていただきます。 詳細はこちら

【Android】kotlinにおけるSharedPreferencesを使用したデータの保存方法を徹底解説!

【Android】kotlinにおける SharedPreferencesを使用した データの保存方法を徹底解説!
すだ

みなさまこんにちは〜!
メモリアインクのすだです。

本日は、
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を使用してデータを保存するには、以下の手順を踏みます。

  1. SharedPreferencesのインスタンスを取得
  2. Editor を使ってデータを保存
  3. 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()で、保存されている全てのデータを削除します。
たとえ複数のキーが存在しても、まとめて削除されます。

まとめ

おつかれさまでした。いかがでしたでしょうか!

  1. SharedPreferencesは小さなデータをキーと値で保存するのに便利
  2. データ保存にはEditorを使用し、apply()で非同期保存する
  3. データ取得はgetString, getIntなどのメソッドを使用する

上記方法で、ぜひSharedPreferencesを活用してみてください。

すだ

技術者としてのキャリアパスを次のレベルへと進めたい皆様、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
を通じて、
自分の市場価値をさらに向上させてみませんか?

それではまた次の記事でお会いしましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

弊社テックブログをご愛読いただきありがとうございます。
当テックブログを運用している株式会社メモリアインクは、
【正社員】還元率83%
【フリーランス】マージン一律5万円で案件のご紹介
と、エンジニアの皆様に分かりやすい形で稼げる仕組みを構築し提供させていただいております。詳しくは弊社お問い合わせページ、プロフィールのQRコードを読み取り、LINEメッセージでお問い合わせいただけますと幸いです。

コメント

コメントする

目次