カテゴリ: Kotlin 更新日: 2025/11/15

KotlinのLiveDataとViewModelの基本!初心者でもわかる状態管理のベストプラクティス

KotlinのLiveDataとViewModelの基本!状態管理のベストプラクティス
KotlinのLiveDataとViewModelの基本!状態管理のベストプラクティス

先生と生徒の会話形式で理解しよう

生徒

「画面を回転させたり戻ったりすると、表示されていたデータが消えちゃうのですが…これってどうにかできないんですか?」

先生

「そうですね、画面の状態(データ)をちゃんと管理するには、ViewModelLiveDataを使うのが効果的です。」

生徒

「ViewModel?LiveData?なんだか難しそうな名前ですね…」

先生

「名前はカタカナですが、実はとっても便利で、アプリの品質も上がりますよ。ゆっくり一緒に学んでいきましょう。」

1. ViewModelとは?画面のデータを守る仕組み

1. ViewModelとは?画面のデータを守る仕組み
1. ViewModelとは?画面のデータを守る仕組み

ViewModel(ビューモデル)は、KotlinでAndroidアプリを開発する際に、画面に表示するデータを保存しておく場所です。

普通、スマホの画面を回転させたり、画面を戻ったりすると、データは初期化されてしまいます。これを防ぐために、ViewModelが使われます。

ViewModelは、画面(ActivityやFragment)とは別の場所にあるため、画面が一度消えても、データはそのまま残ります。

2. LiveDataとは?データの変化を自動で監視

2. LiveDataとは?データの変化を自動で監視
2. LiveDataとは?データの変化を自動で監視

LiveData(ライブデータ)は、データの中身が変わったときに、自動で通知してくれる仕組みです。

たとえば、数値や文字が変化したときに、自動で画面に反映したいときに使います。

LiveDataは「監視(observe)」する機能を持っていて、データの変化にすぐ反応できるのが特徴です。

3. ViewModelでLiveDataを使う基本コード

3. ViewModelでLiveDataを使う基本コード
3. ViewModelでLiveDataを使う基本コード

まずは、ViewModelクラスを作成して、LiveDataを使ってみましょう。


class MyViewModel : ViewModel() {
    val count = MutableLiveData<Int>()

    init {
        count.value = 0
    }

    fun increment() {
        count.value = (count.value ?: 0) + 1
    }
}

MutableLiveDataは、値の変更ができるLiveDataです。最初に0を入れておき、「カウントアップ」ボタンを押すと、値が1ずつ増えるようにしています。

4. ActivityでViewModelとLiveDataを使う方法

4. ActivityでViewModelとLiveDataを使う方法
4. ActivityでViewModelとLiveDataを使う方法

次に、ActivityでこのViewModelを使って、データの変化を画面に表示してみましょう。


class MainActivity : AppCompatActivity() {
    private lateinit var viewModel: MyViewModel
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        viewModel = ViewModelProvider(this).get(MyViewModel::class.java)

        viewModel.count.observe(this) { value ->
            binding.textView.text = "現在のカウント: $value"
        }

        binding.button.setOnClickListener {
            viewModel.increment()
        }
    }
}

observeを使って、LiveDataの値が変わったときに、自動でTextViewを更新しています。これで、画面を回転してもカウントがリセットされません。

5. レイアウトファイルの例(activity_main.xml)

5. レイアウトファイルの例(activity_main.xml)
5. レイアウトファイルの例(activity_main.xml)

以下は、シンプルなレイアウトファイルの一例です。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:padding="24dp">

    <TextView
        android:id="@+id/textView"
        android:text="現在のカウント: 0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp" />

    <Button
        android:id="@+id/button"
        android:text="カウントアップ"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"/>
</LinearLayout>

6. ViewModelとLiveDataを使うメリットとは?

6. ViewModelとLiveDataを使うメリットとは?
6. ViewModelとLiveDataを使うメリットとは?

ViewModelとLiveDataを使うことで、次のようなメリットがあります。

  • 画面回転や再生成でもデータを保持できる
  • コードがすっきりして読みやすくなる
  • データの変化を自動で反映できる
  • エラーやバグが減りやすくなる

初心者のうちからこの書き方に慣れておくと、あとで複雑なアプリを作るときにもとても役立ちます。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

7. 使い方のポイントと注意点

7. 使い方のポイントと注意点
7. 使い方のポイントと注意点

ViewModelを使うときは、ViewModelProviderを通してインスタンスを取得する必要があります。直接作らないようにしましょう。

また、LiveDataは値の変更をするときはvalueを使い、変更されたことを画面に伝えるためにobserveを忘れずに書いてください。

KotlinのAndroidアプリ開発では、状態管理(ステート管理)はとても重要です。画面に表示される値が正しく保たれているかが、アプリの信頼性に直結します。

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Swift
Swiftのswitch文の使い方|初心者でもわかるパターンマッチング徹底解説
New3
Kotlin
Kotlinの認証と認可を完全解説!初心者でもわかる安全なログイン管理とセキュリティ対策
New4
Go言語
Go言語の関数でエラーハンドリングする基本的な方法
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.8
Java&Spring記事人気No8
Go言語
Go言語でミドルウェアを作成する方法と活用例!初心者でもわかるWebアプリ開発