第13回|Jetpack Compose③:状態管理とイベント制御[AI]


⚙️ 準備と環境設定

前回の記事では、Jetpack Composeの基本コンポーネントであるButtonTextFieldの使い方を紹介しました。第13回では、Composeにおける「状態管理」と「イベント制御」に焦点を当て、remembermutableStateOfを活用した実践的な例を解説します。

Android Studio Otter
Android Studio Otter

1. 開発環境の確認

  • Android Studio Otter 2025.2.1
  • Kotlin 1.9以上、Jetpack Compose 2.0以上
  • Gemini AIプラグイン有効化済み
  • Composeプロジェクトが作成済み

これらの環境が整っていれば、AIによる補完やコード生成もスムーズに利用できます。


🤖 Geminiによる支援の使い方

2. 状態管理のAI補完例

Geminiに「Jetpack ComposeでTextFieldの状態を管理してButton押下で表示するUIを生成」と入力するだけで、remembermutableStateOfを用いた状態管理コードを自動生成できます。

// Geminiへのプロンプト例
"Composeでユーザー入力を保持し、ButtonクリックでTextを更新するUIを生成"

AI生成コードは、状態の初期化やイベント処理の雛形を自動補完してくれるため、初心者でも実践的なUIを簡単に作成可能です。


💡 Kotlinでの実装例

3. 状態管理とイベント制御の基本例

@Composable
fun StateAndEventExample() {
    var inputText by remember { mutableStateOf("") }
    var displayText by remember { mutableStateOf("ここに入力内容が表示されます") }

    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp),
        verticalArrangement = Arrangement.Top
    ) {
        TextField(
            value = inputText,
            onValueChange = { inputText = it },
            label = { Text("入力してください") },
            modifier = Modifier.fillMaxWidth()
        )

        Spacer(modifier = Modifier.height(16.dp))

        Button(
            onClick = { displayText = inputText },
            modifier = Modifier.align(Alignment.CenterHorizontally)
        ) {
            Text("表示")
        }

        Spacer(modifier = Modifier.height(16.dp))

        Text(
            text = displayText,
            style = MaterialTheme.typography.bodyLarge
        )
    }
}

この例では、TextFieldの入力内容をinputTextとして保持し、ButtonクリックでdisplayTextに反映しています。remembermutableStateOfを使うことで、Composeの状態が画面再描画に適切に反映されます。

4. 複数状態の管理例

@Composable
fun MultiStateExample() {
    var username by remember { mutableStateOf("") }
    var password by remember { mutableStateOf("") }
    var loginMessage by remember { mutableStateOf("") }

    Column(modifier = Modifier.padding(16.dp)) {
        TextField(
            value = username,
            onValueChange = { username = it },
            label = { Text("ユーザー名") },
            modifier = Modifier.fillMaxWidth()
        )

        Spacer(modifier = Modifier.height(8.dp))

        TextField(
            value = password,
            onValueChange = { password = it },
            label = { Text("パスワード") },
            modifier = Modifier.fillMaxWidth(),
            visualTransformation = PasswordVisualTransformation()
        )

        Spacer(modifier = Modifier.height(16.dp))

        Button(onClick = {
            loginMessage = if (username == "admin" && password == "1234") {
                "ログイン成功!"
            } else {
                "ユーザー名またはパスワードが違います"
            }
        }) {
            Text("ログイン")
        }

        Spacer(modifier = Modifier.height(16.dp))

        Text(text = loginMessage, style = MaterialTheme.typography.bodyLarge)
    }
}

この例では、複数の状態(username, password, loginMessage)を管理し、Button押下時の条件分岐で表示内容を切り替えています。Gemini AIで生成すると、状態変数やButtonのonClick処理の基本構造が自動作成されます。


🧩 FirebaseまたはCloudとの連携

5. 入力内容をFirestoreに保存する例

@Composable
fun FirestoreStateExample(userId: String) {
    val db = FirebaseFirestore.getInstance()
    var comment by remember { mutableStateOf("") }

    Column(modifier = Modifier.padding(16.dp)) {
        TextField(
            value = comment,
            onValueChange = { comment = it },
            label = { Text("コメント入力") }
        )

        Spacer(modifier = Modifier.height(16.dp))

        Button(onClick = {
            db.collection("comments").document(userId)
                .set(mapOf("comment" to comment))
                .addOnSuccessListener { println("保存成功") }
                .addOnFailureListener { println("保存失敗") }
        }) {
            Text("コメント送信")
        }
    }
}

Geminiを活用すれば、Compose UIコードにFirebase Firestore操作を追加する際の雛形を自動生成できます。非同期処理やエラーハンドリングもAI提案で補完されるため、初学者でも安心です。


📘 まとめ

第13回では、Jetpack Composeにおける状態管理とイベント制御を学びました。remembermutableStateOfを使用することで、TextFieldやButtonなどのUIコンポーネントの状態を簡単に管理できます。Gemini AIを活用することで、状態管理やイベント処理の雛形を効率よく生成でき、レビュー後に実践的なUIを構築できます。次回は、リスト表示やLazyColumnを用いた動的UIの実装に進みます。


🤖Android開発(Otter)[AI]Android Studio Otter × Gemini × Firebase × Google Cloud 開発支援ブログ一覧 Android Studio Otter 🩵【第1部】導入編:Android Studio Otterの準備と基本操作(1〜5回) ・ 第1回|A…
続きを読む
 zesys.net
🤖Android開発(Otter)[AI]


「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」

広告

迷子探偵やもやも [AI]

探偵はいつも迷子ですw

シェアする