Googleが提供するKotlinべースのAndroid用宣言型UIフレームワークであるJetpack Composeが、バージョン1.0の安定版に到達した。開発者エクスペリエンスを向上する新たなツールも含まれる。Google版のComposeがAndroidのみをサポートする一方で、Kotlinの開発元であるJetBrainsは、ComposeをデスクトップやWebに拡張するCompose Multiplatformを発表した。
Jetpack Composeは、宣言形式を用いたUI定義によって、AndroidアプリのUI開発を促進することを目的としている。つまり開発者は、アプリの状態変化に対応する、構成可能なエレメントを組み合わせることによってUIを作り上げるのだ。Googleによれば、Composeを使うことで、従来よりも大幅に少ないコードでユーザインタフェースを開発することができる。既存プロジェクトへの適用を容易にするため、Composeを段階的に統合してView
に組み込むことや、その逆を行うことが可能になっている。
次に示すのは、標準的なAndroidアクティビティ内に、シンプルなCompose Text
ウィジェットを配置する方法である。
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
val greeting = findViewById<ComposeView>(R.id.greeting)
greeting.setContent {
MdcTheme { // or AppCompatTheme
Greeting()
}
}
}
}
@Composable
private fun Greeting() {
Text(
text = stringResource(R.string.greeting),
style = MaterialTheme.typography.h5,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = dimensionResource(R.dimen.margin_small))
.wrapContentWidth(Alignment.CenterHorizontally)
)
}
1.0リリースでは、Compose Previewなどいくつかの新ツールが追加されている。UIコンポーネント開発の簡素化を目的とするCompose Previewを使えば、デバイスやエミュレータ上にテストアプリをインストールして実行しなくても、さまざまな状態やテーマなどでの表示内容を確認することができる。物理的なデバイス上で、コンポーネントプレビューを独立的に実行して、インタラクティブなテストを行うことも可能だ。これらの新機能はすべて、Android Studio Arctic Fox内で使用することができる。
前述のように、Googleの発表に続いて、JetBrainsがCompuse Multiplatformのアルファ版をリリースした。Compose MultiplatformにはCompose for DesktopとCompose for Webが含まれており、Kotlin Multiplatformを活用することによって、さまざまなプラットフォームを数多くサポートする。Compose DesktopはGoogleのSkiaライブラリを使用して、Windows、macOS、Linux用のUIウィジェットを描画する。すべてのサポート対象OSで、ネイティブなルック・アンド・フィールに代わる統合的エクスペリエンスを提供する、というアプローチは、Flutterのそれと同じであり、React Nativeとは対照的だ。
Kotlinチームによると、Compose Multiplatformを使用することによって、Electronアプリに比較して、メモリ消費量の削減、インストールサイズ、UIレンダリングパフォーマンスなど、数多くのメリットが期待できる。
アルファリリースには新しいAndroid Strudioプラグインも含まれており、IDE内でのコンポーネントプレビュー表示のサポートなど、多数の付加機能が提供されている。
早期段階のアルファリリースであることから、JetBrainsは、その利用を概念実証(proof-of-concept)のための実装の記述と、今年中のリリースが予定されている安定版リリースの準備に限定している。