第16回|Compose⑥:AIでUIを生成し修正する流れ[AI]
⚙️ 準備と環境設定
Jetpack Composeを使ったAndroidアプリ開発では、UI設計や画面構成の調整が重要です。第16回では、Gemini AIを活用して画面構成を生成し、必要に応じて修正・改善する手順を具体的に解説します。Kotlin/Composeをメインに、初心者でも理解できるよう実践的に解説します。
![第16回|Compose⑥:AIでUIを生成し修正する流れ[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以上
- Material3ライブラリ導入済み
- Gemini AIプラグイン有効化済み
Composeプロジェクト作成後、UI生成用のGemini AI支援を使う準備をします。まずbuild.gradleで必要なCompose Material3依存関係を確認してください。
dependencies {
implementation "androidx.compose.material3:material3:1.2.0"
}
🤖 Geminiによる支援の使い方
Gemini AIを利用すると、自然言語から画面構成やレイアウトを自動生成できます。たとえば、「ログイン画面の入力フォームとボタンを持つCompose UIを生成」と指示すると、Composeコードが自動生成されます。
// Geminiへのプロンプト例
"Jetpack Composeでログイン画面を作成。メールアドレスとパスワード入力、ログインボタン、Material3デザイン"
生成後のコードはAI提案に従いつつ、開発者がカスタマイズ可能です。GeminiはUI構成だけでなく、カラー、フォント、間隔なども提案してくれるため、デザインの統一が容易になります。
💡 Kotlinでの実装例
2. AI生成UIのサンプルコード
@Composable
fun LoginScreen(
onLoginClick: (String, String) -> Unit
) {
var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
Scaffold(
topBar = {
TopAppBar(title = { Text("ログイン") })
},
content = { padding ->
Column(
modifier = Modifier
.fillMaxSize()
.padding(padding)
.padding(16.dp),
verticalArrangement = Arrangement.Center
) {
TextField(
value = email,
onValueChange = { email = it },
label = { Text("メールアドレス") },
modifier = Modifier.fillMaxWidth()
)
Spacer(modifier = Modifier.height(8.dp))
TextField(
value = password,
onValueChange = { password = it },
label = { Text("パスワード") },
visualTransformation = PasswordVisualTransformation(),
modifier = Modifier.fillMaxWidth()
)
Spacer(modifier = Modifier.height(16.dp))
Button(
onClick = { onLoginClick(email, password) },
modifier = Modifier.fillMaxWidth()
) {
Text("ログイン")
}
}
}
)
}
このコードでは、rememberとmutableStateOfを活用して入力値を管理し、Columnで縦方向に配置しています。AI生成コードをベースに、間隔やフォントサイズを微調整するだけで完成度の高いUIが構築可能です。
3. AI支援による修正例
Geminiに「ログインボタンを中央揃えに変更し、カラーをテーマのアクセント色に」と指示すると、Buttonのmodifierやcolors属性の変更案を自動生成します。
Button(
onClick = { onLoginClick(email, password) },
modifier = Modifier
.fillMaxWidth()
.align(Alignment.CenterHorizontally),
colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.primary)
) {
Text("ログイン", color = MaterialTheme.colorScheme.onPrimary)
}
このように、Gemini AIを使えば、UIの微調整も効率的に行えます。特に複数画面やテーマ対応のアプリでは、修正提案機能が大幅な時間短縮になります。
🧩 FirebaseまたはCloudとの連携
AI生成UIにFirebaseを組み合わせると、ユーザー認証やデータ保存も簡単に実装できます。例としてFirebase Authenticationでログイン処理を追加する場合:
val auth = FirebaseAuth.getInstance()
fun login(email: String, password: String, onSuccess: () -> Unit, onError: (String) -> Unit) {
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
onSuccess()
} else {
onError(task.exception?.message ?: "ログイン失敗")
}
}
}
この処理をAI生成のUIに組み込むことで、Geminiが提案するコードに認証ロジックを追加し、ボタン押下時に安全にログインを処理できます。
📘 まとめ
第16回では、Jetpack ComposeでのAI支援UI生成と修正の流れを解説しました。Gemini AIを活用すると、画面構成の雛形生成から細かな修正まで効率的に行えます。KotlinとComposeを中心に、状態管理やレイアウト調整、Firebase連携も組み合わせることで、初心者でも実践的なアプリ開発が可能です。
「※本ブログはこの一文以外は、AIによる記載です。内容にウソが含まれている可能性がありますので、ご注意ください。写真もAIで作成しています。」