Compose Multiplatform と Jetpack Compose
Compose Multiplatformは、JetBrainsが開発したクロスプラットフォームUIツールキットです。 GoogleのAndroid向けJetpack Composeツールキットを拡張し、 追加のターゲットプラットフォームをサポートしています。
Compose Multiplatformは、共通KotlinコードからCompose APIを利用可能にし、 Android、iOS、デスクトップ、およびウェブで実行できる共通のCompose UIコードを記述できるようにします。
Compose Multiplatform | Jetpack Compose | |
---|---|---|
Platforms | Android, iOS, desktop, web | Android |
Supported by | JetBrains |
Jetpack Compose とコンポーザブル
Jetpack Composeは、Androidネイティブインターフェースを構築するための宣言型UIツールキットです。 その基盤は、@Composable
アノテーションでマークされた_コンポーザブル関数_です。 これらの関数はUIの一部を定義し、基となるデータが変更されると自動的に更新されます。 コンポーザブルを組み合わせて、レイアウトを構築したり、ユーザー入力を処理したり、状態を管理したり、アニメーションを適用したりできます。 Jetpack Composeには、Text
、Button
、Row
、Column
などの共通UIコンポーネントが含まれており、モディファイアでカスタマイズできます。
Compose Multiplatformも同じ原則に基づいて構築されています。 Jetpack Composeと同じComposeコンパイラとランタイムを共有し、同じAPI(@Composable
関数、 remember
のような状態管理ツール、レイアウトコンポーネント、モディファイア、アニメーションサポート)を使用します。 これは、Android、iOS、デスクトップ、ウェブ向けのクロスプラットフォームUIを構築するために、 Jetpack Composeの知識をCompose Multiplatformで再利用できることを意味します。
Compose Multiplatform と Jetpack Compose の機能
両方のUIフレームワークの基本については、Googleの公式ドキュメントを含む、 ほぼすべてのJetpack Compose資料から学ぶことができます。
当然ながら、Compose Multiplatformにはプラットフォーム固有の機能と考慮事項があります。
- Androidのみのコンポーネントページには、 Androidプラットフォームに密接に結びついており、 そのため共通のCompose Multiplatformコードからは利用できないAPIがリストされています。
- デスクトップ用のウィンドウ処理APIやiOS用のUIKit互換APIなど、一部のプラットフォーム固有APIは、 それぞれのプラットフォームでのみ利用可能です。
一般的なコンポーネントとAPIの提供状況の概要を以下に示します。
Compose Multiplatform | Jetpack Compose | |
---|---|---|
Compose Animation | はい | はい |
Compose Compiler | はい | はい |
Compose Foundation | はい | はい |
Compose Material | はい | はい |
Compose Material 3 | はい | はい |
Compose Runtime | はい(androidx.compose.runtime.rxjava2 およびandroidx.compose.runtime.rxjava3 を除く) | はい |
Compose UI | はい | はい |
Jetpack Lifecycle | はい | はい |
Jetpack ViewModel | はい | はい |
Jetpack Navigation Compose | はい | はい |
Resources | Res クラスを使用するCompose Multiplatformリソースライブラリ | R クラスを使用するAndroidリソースシステム |
Maps Compose | いいえ | はい |
サードパーティライブラリ(UIコンポーネント、ナビゲーション、アーキテクチャなど) | Compose Multiplatformライブラリ | Jetpack ComposeおよびCompose Multiplatformライブラリ |
技術的な詳細
Compose Multiplatformは、Googleが公開しているコードとリリースに基づいて構築されています。 GoogleはAndroid向けJetpack Composeに注力していますが、 Compose Multiplatformを可能にするためにGoogleとJetBrainsの間で緊密な連携が行われています。
Jetpackには、FoundationやMaterialのようなファーストパーティライブラリが含まれており、 これらはGoogleがAndroid向けに公開しています。 これらのライブラリが提供するAPIを共通コードから利用できるようにするため、 JetBrainsはこれらのライブラリのマルチプラットフォームバージョンを管理しており、Android以外のターゲット向けに公開されています。
リリースサイクルについては、互換性とバージョンページで詳しく学ぶことができます。
Compose MultiplatformアプリケーションをAndroid向けにビルドする場合、Googleが公開しているJetpack Composeアーティファクトを使用します。 例えば、compose.material3
を依存関係に追加すると、プロジェクトはAndroidターゲットではandroidx.compose.material3:material3
を、 他のターゲットではorg.jetbrains.compose.material3:material3
を使用します。 これは、マルチプラットフォームアーティファクトのGradle Module Metadataに基づいて自動的に行われます。
Compose Multiplatform向けライブラリ
Compose Multiplatformを使用することで、Compose APIを使用するライブラリをKotlin Multiplatformライブラリとして公開できます。 これにより、複数のプラットフォームをターゲットとする共通Kotlinコードから利用可能になります。
したがって、Compose APIを使用して新しいライブラリを構築している場合は、その利点を活かしてCompose Multiplatformを使用してマルチプラットフォームライブラリとして構築することを検討してください。 すでにAndroid向けにJetpack Composeライブラリを構築している場合は、そのライブラリをマルチプラットフォーム対応にすることを検討してください。 エコシステムには、すでに多くのCompose Multiplatformライブラリが利用可能です。
ライブラリがCompose Multiplatformで公開されると、Jetpack Composeのみを使用するアプリでもシームレスに利用できます。 それらのアプリは、単にライブラリのAndroidアーティファクトを使用するだけです。
次のステップ
以下のコンポーネントのCompose Multiplatform実装について、さらに詳しくお読みください。