Android (Jetpack Compose)
概要
Jetpack Compose は Android のモダンで宣言的な UI ツールキットです。XML でレイアウトを定義し、ビュー参照を通じて変更する代わりに、与えられた状態に対する UI を記述する composable な Kotlin 関数を書き、状態が変化するとフレームワークが再描画します。これは現在 Google が推奨するネイティブ Android インターフェースの構築方法であり、ナビゲーション、ライフサイクル、データのためのより広範な Jetpack ライブラリと連携して動作します。
強み
- 宣言的で Kotlin ネイティブ — UI とロジックが 1 つの言語に収まり、XML レイアウトは不要。
- 状態駆動の再コンポジションが、画面を自動的に同期させ続けます。
- 旧来の View システムよりもボイラープレートが少なく、強力で composable な構成要素を備えています。
- Material Design コンポーネント、テーマ、アニメーション、アクセシビリティを標準搭載。
- 既存の View ベースのコードと相互運用できるため、段階的に導入できます。
トレードオフ
- 再コンポジションの挙動は微妙な場合があり、状態の置き場所を誤ると過剰な再描画やバグを引き起こします。
- それなりに新しい Android ツールと最小 SDK のセットアップが必要です。
- メンタルモデルが旧来の命令的なアプローチとは異なるため、学習曲線があります。
- 成熟した View 専用のライブラリの中には、まだ相互運用のラッパーが必要なものがあります。
最適な用途
Jetpack Compose は、モダンで保守しやすいコードベースと素早いイテレーションを求める新しいネイティブ Android アプリにとって正しい選択です。Kotlin やコルーチンと自然に組み合わさります。
バイブコーディングとの相性
Compose は AI 支援開発に適しています。composable は状態の小さく純粋な関数であり、単独で生成、プレビュー、検証しやすいからです。アシスタントには、composable から状態を巻き上げる(値は下へ、イベントは上へ渡す)こと、各 composable を 1 つの役割に集中させること、リストを不変データから駆動することを依頼しましょう。@Preview アノテーションを使えば、アプリ全体を実行せずに生成された UI を目視で確認でき、フィードバックループが短くなります。
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Column {
Text("Count: $count")
Button(onClick = { count++ }) { Text("Add") }
}
}