Compose Hot Reload
Compose Hot Reloadは、Compose Multiplatformプロジェクトでの作業中にUIの変更を視覚化し、試すのに役立ちます。
現時点では、Compose Hot Reloadは、マルチプラットフォームプロジェクトにデスクトップターゲットを含めた場合にのみ利用可能です。 今後、他のターゲットに対するサポートを追加することを検討しています。その間、デスクトップアプリをサンドボックスとして使用することで、作業の流れを中断することなく共通コードでのUIの変更を素早く試すことができます。
プロジェクトにCompose Hot Reloadを追加する
Compose Hot Reloadは、以下の2つの方法で追加できます。
最初から
このセクションでは、IntelliJ IDEAおよびAndroid Studioでデスクトップターゲットを含むマルチプラットフォームプロジェクトを作成する手順を説明します。プロジェクトが作成されると、Compose Hot Reloadが自動的に追加されます。
- クイックスタートで、Kotlin Multiplatform開発の環境をセットアップするの手順を完了します。
- IntelliJ IDEAで、File | New | Projectを選択します。
- 左側のパネルで、Kotlin Multiplatformを選択します。
- 新規プロジェクトウィンドウで、Name、Group、およびArtifactフィールドを指定します。
- Desktopターゲットを選択し、Createをクリックします。
既存のプロジェクトに
このセクションでは、既存のマルチプラットフォームプロジェクトにCompose Hot Reloadを追加する手順を説明します。これらの手順は、共有ロジックとUIを持つアプリを作成するチュートリアルのプロジェクトを参照としています。
Compose Hot Reloadの最新バージョンについては、Releasesを参照してください。
プロジェクトで、バージョンカタログを更新します。
gradle/libs.versions.toml
に、以下のコードを追加します。kotlincomposeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload"}
バージョンカタログを使用してプロジェクト全体の依存関係を一元的に管理する方法の詳細については、当社のGradleのベストプラクティスを参照してください。
親プロジェクトの
build.gradle.kts
(ComposeDemo/build.gradle.kts
)で、plugins {}
ブロックに以下のコードを追加します。kotlinplugins { alias(libs.plugins.composeHotReload) apply false }
これにより、Compose Hot Reloadプラグインが各サブプロジェクトで複数回ロードされることを防ぎます。
マルチプラットフォームアプリケーションを含むサブプロジェクトの
build.gradle.kts
(ComposeDemo/composeApp/build.gradle.kts
)で、plugins {}
ブロックに以下のコードを追加します。kotlinplugins { alias(libs.plugins.composeHotReload) }
Compose Hot Reloadの全ての機能を使用するには、プロジェクトは拡張されたクラス再定義をサポートするOpenJDKのフォークであるJetBrains Runtime (JBR)で実行される必要があります。 Compose Hot Reloadは、プロジェクトのために互換性のあるJBRを自動的にプロビジョニングできます。 これを許可するには、
settings.gradle.kts
ファイルに以下のGradleプラグインを追加します。kotlinplugins { id("org.gradle.toolchains.foojay-resolver-convention") version "0.10.0" }
Sync Gradle ChangesボタンをクリックしてGradleファイルを同期します:
Compose Hot Reloadを使用する
desktopMain
ディレクトリで、main.kt
ファイルを開き、main()
関数を更新します。kotlinfun main() = application { Window( onCloseRequest = ::exitApplication, alwaysOnTop = true, title = "composedemo", ) { App() } }
alwaysOnTop
変数をtrue
に設定することで、生成されたデスクトップアプリが全てのウィンドウの手前に表示され続け、コードを編集して変更をライブで確認しやすくなります。commonMain
ディレクトリで、App.kt
ファイルを開き、Button
コンポーザブルを更新します。kotlinButton(onClick = { showContent = !showContent }) { Column { Text(Greeting().greet()) } }
これで、ボタンのテキストは
greet()
関数によって制御されます。commonMain
ディレクトリで、Greeting.kt
ファイルを開き、greet()
関数を更新します。kotlinfun greet(): String { return "Hello!" }
desktopMain
ディレクトリで、main.kt
ファイルを開き、ガターの実行アイコンをクリックします。 **Run 'composeApp [desktop]' with Compose Hot Reload (Alpha)**を選択します。greet()
関数から返される文字列を更新し、その後ファイルを保存すると、デスクトップアプリが自動的に更新されるのを確認できます。
おめでとうございます!Compose Hot Reloadが動作しているのを確認できました。これで、変更のたびにデスクトップ実行構成を再起動することなく、テキスト、画像、書式設定、UI構造などの変更を試すことができます。
ヘルプ
Compose Hot Reloadの使用中に何らかの問題に遭遇した場合は、GitHub issueを作成してお知らせください。