第12回|Jetpack Compose入門②:ボタン・テキスト・入力[AI]
⚙️ 準備と環境設定
前回はJetpack Composeの基本レイアウト(Scaffold, Column, Row)を学びました。本記事では、Composeでの代表的なUIコンポーネントであるButton、Text、TextFieldの使い方とKotlinコード例を解説します。Gemini AIを活用することで、コード生成やコメント作成の効率化が可能です。
![第12回|Jetpack Compose入門②:ボタン・テキスト・入力[AI] 1 Android Studio Otter](https://zesys.net/blog/wp-content/uploads/2025/11/ChatGPT-Image-2025年11月10日-18_51_43-300x200.png)
1. 開発環境の確認
- Android Studio Otter 2025.2.1
- Kotlin 1.9以上、Jetpack Compose 2.0以上
- Gemini AIプラグイン有効化済み
- Composeプロジェクトがすでに作成済みであること
これらの準備により、AI生成コードや補完機能が正しく動作し、開発効率が向上します。
🤖 Geminiによる支援の使い方
2. AI生成でのボタン・入力UI作成
Geminiでは、自然言語でUIの指示を入力するだけで、Compose用のKotlinコードを生成できます。例えば:
// Geminiに入力する例
"Jetpack Composeで、テキスト表示とボタン、TextField入力を持つ画面を作成"
AIが生成したコードは、Buttonのクリック処理、TextFieldの状態管理なども補完されるため、初心者でも簡単に動作するUIを作成できます。
💡 Kotlinでの実装例
3. Button、Text、TextFieldの基本例
@Composable
fun ButtonTextFieldExample() {
var inputText by remember { mutableStateOf("") }
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
verticalArrangement = Arrangement.Top
) {
Text(text = "こんにちは、Compose入門!", style = MaterialTheme.typography.titleLarge)
Spacer(modifier = Modifier.height(16.dp))
TextField(
value = inputText,
onValueChange = { inputText = it },
label = { Text("入力してください") },
modifier = Modifier.fillMaxWidth()
)
Spacer(modifier = Modifier.height(16.dp))
Button(
onClick = { println("入力内容: $inputText") },
modifier = Modifier.align(Alignment.CenterHorizontally)
) {
Text("送信")
}
}
}
この例では、TextFieldでユーザーの入力を保持し、Buttonをクリックすると入力内容をログ出力します。rememberとmutableStateOfで状態管理を行う点がポイントです。
4. AI生成コードのレビュー例
Geminiが生成したコードには以下の補完が含まれます:
- TextFieldの
onValueChangeやLabelの提案 - Buttonの
onClickイベント処理の雛形生成 - ModifierやArrangementの推奨値
- コメント生成によるコード理解補助
AI生成コードはレビューし、必要に応じてModifierやスタイルを調整することで、より実践的なUIを作成できます。
🧩 FirebaseまたはCloudとの連携
5. 入力データのFirestore保存例
ユーザーがTextFieldに入力したデータをFirebase Firestoreに保存する例です:
@Composable
fun FirestoreInputExample(userId: String) {
val db = FirebaseFirestore.getInstance()
var inputText by remember { mutableStateOf("") }
Column(modifier = Modifier.padding(16.dp)) {
TextField(
value = inputText,
onValueChange = { inputText = it },
label = { Text("入力してください") }
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = {
db.collection("users").document(userId)
.set(mapOf("input" to inputText))
.addOnSuccessListener { println("保存成功") }
.addOnFailureListener { println("保存失敗") }
}) {
Text("保存")
}
}
}
Geminiで生成されたComposeコードにFirebase呼び出しを追加することで、簡単にクラウド連携が可能です。AIによる補完で、非同期処理やエラーハンドリングも自動的に挿入されます。
📘 まとめ
第12回では、Jetpack Composeの代表的コンポーネントであるButton、Text、TextFieldを解説しました。Gemini AIを活用することで、入力UIの生成や状態管理の雛形を自動生成でき、開発効率が大幅に向上します。AI生成コードは必ずレビューし、Modifierやスタイルを調整することで、実務レベルのUIを作成できます。次回は、より高度なユーザーインタラクションやリスト表示の実装を扱います。
「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」