~/VibeHandbook
$39

アプリ / モバイル

developer.android.com

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") }
    }
}