Composable関数とは?
Jetpack Composeの基礎
Jetpack Composeは、Googleが提供するAndroidの最新UIツールキットであり、宣言型UIを構築するためのフレームワークです。従来のXMLを用いたレイアウト作成とは異なり、KotlinのコードのみでUIを構築できます。
このJetpack Composeの中核をなすのが「Composable関数」です。Composable関数を使うことで、簡潔かつ柔軟なUI設計が可能になります。
Composable関数の役割
Composable関数は、Jetpack ComposeにおいてUIコンポーネントを表す特別なKotlin関数です。@Composable
アノテーションを付与することで、Jetpack Composeのフレームワークが適切に管理・描画できるようになります。
例えば、テキストを表示する最もシンプルなComposable関数は次のように記述できます。
@Composable
fun Greeting(name: String) {
Text(text = "Hello, $name!")
}
この関数は、name
というパラメータを受け取り、その値を埋め込んだテキストを表示する役割を果たします。
Composable関数の基本構造
@Composableアノテーション
Composable関数を定義する際には、必ず@Composable
アノテーションを付与する必要があります。
@Composable
fun SampleComposable() {
Text(text = "これはComposable関数です")
}
このアノテーションがない場合、Jetpack Composeの仕組みに認識されず、正しく動作しません。
Composable関数の呼び出し
Composable関数は、他のComposable関数の内部でのみ呼び出すことができます。通常のKotlin関数の内部で直接呼び出すことはできません。
@Composable
fun ParentComposable() {
ChildComposable()
}
@Composable
fun ChildComposable() {
Text(text = "子Composable関数")
}
このようにComposable関数は、階層的に組み合わせてUIを作成するのが一般的です。
UIレイアウトを構築する基本コンポーネント
Text(テキスト表示)
Jetpack Composeで文字を表示するには、Text
コンポーネントを使用します。
@Composable
fun Greeting() {
Text(text = "こんにちは、Jetpack Compose!")
}
また、フォントサイズや色を指定することも可能です。
Text(
text = "カスタムテキスト",
fontSize = 20.sp,
color = Color.Blue
)
Button(ボタン)
クリック可能なボタンを作成するには、Button
コンポーネントを使用します。
@Composable
fun MyButton() {
Button(onClick = { /* クリック時の処理 */ }) {
Text(text = "クリックしてね!")
}
}
Column・Row(レイアウト管理)
複数のコンポーネントを縦または横に並べるには、Column
やRow
を使用します。
@Composable
fun ColumnExample() {
Column {
Text(text = "上部のテキスト")
Button(onClick = {}) {
Text(text = "ボタン")
}
}
}
Row
を使うと、横に並べることができます。
@Composable
fun RowExample() {
Row {
Text(text = "左")
Text(text = "中央")
Text(text = "右")
}
}
状態管理とremember
mutableStateOfとrememberの使用
Jetpack Composeでは、状態を保持するためにmutableStateOf
とremember
を使用します。
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Column {
Text(text = "カウント: $count")
Button(onClick = { count++ }) {
Text(text = "増加")
}
}
}
このコードでは、remember
を使用することでcount
の状態が保持され、ボタンをクリックするたびに値が更新されます。
ViewModelとの連携
Jetpack ComposeはAndroidのViewModel
と連携して状態を管理することも可能です。
class CounterViewModel : ViewModel() {
var count by mutableStateOf(0)
private set
fun increment() {
count++
}
}
@Composable
fun CounterScreen(viewModel: CounterViewModel = viewModel()) {
Column {
Text(text = "カウント: ${viewModel.count}")
Button(onClick = { viewModel.increment() }) {
Text(text = "増加")
}
}
}
まとめ
Composable関数は、Jetpack ComposeにおけるUI構築の基本単位であり、@Composable
アノテーションを用いて宣言されます。Composable関数を活用することで、シンプルかつ柔軟なUI開発が可能になります。
本記事では、基本的なComposable関数の仕組み、UIコンポーネントの使い方、状態管理の方法を紹介しました。Jetpack Composeの開発を進める際には、これらの基本概念を理解し、実践的に活用することが重要です。