Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KotlinConf2025現地参加 と Compose HotReload導入記
Search
gotlin
October 03, 2025
42
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KotlinConf2025現地参加 と Compose HotReload導入記
gotlin
October 03, 2025
More Decks by gotlin
See All by gotlin
Applicationクラスのライフサイクルに気をつけよう
goutarouh
0
85
Conference-app-2024の良さげな実装を勝手にいくつか紹介する
goutarouh
0
88
VRTをプロダクトに導入するまでのお話
goutarouh
0
370
Drag & Drop in LazyColumn
goutarouh
0
960
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Abbi's Birthday
coloredviolet
3
8.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
New Earth Scene 8
popppiees
3
2.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
RailsConf 2023
tenderlove
30
1.5k
Exploring anti-patterns in Rails
aemeredith
3
440
BBQ
matthewcrist
89
10k
Transcript
1 KotlinConf2025現地参加 と Compose HotReload導入記 2025/10/03 LDF×KTC After DroidKaigi 2025
KINTOテクノロジーズ株式会社 長谷川
自己紹介 名前 愛称 会社 X 趣味 :長谷川(hasegawa) :George :KINTOテクノロジーズ(2022/9~) :@gotlinan
:運動、バイク
KotlinConf2025 開催地 :コペンハーゲン(デンマーク) 日程 :2025/5/21 ~ 5/23 参加者 :2150 スピーカー数
:103 来年はミュンヘン(ドイツ)だそうです!
気になったセッションは?
Implementing Compose Hot Reloadのキーワード • ClassLoader (ぼつ) ⚬ ある時点のUI用の名前空間を作ってクラスを展開して、入れ替える •
DCEVM(Dynamic Code Evolution for Java(VM)) ⚬ GCの機能を使って、メモリを総入れ替え • Compose Compiler ⚬ Composeスロットテーブルの書き換え • Kotlin Compiler ⚬ ラムダの命名を規則化 興味がある方は懇親会で話しましょう(教えてください)
まずはHotReloadを試そう 1.Kotlin Multiplatform WizardでDesktopのアプリをDWONLOADする 2../gradlew :composeApp:hotRunJvm --autoを実行する
HotReloadが動いた! 実務でも使いたい!
今日話す内容のリポジトリ
https://github.com/JetBrains/compose-hot-reload Compose Hot ReloadのREADMEを見てみる https://github.com/JetBrains/compose-hot-reload
https://github.com/JetBrains/compose-hot-reload Compose Hot ReloadのREADMEを見てみる https://github.com/JetBrains/compose-hot-reload
https://github.com/JetBrains/compose-hot-reload Compose Hot ReloadのREADMEを見てみる https://github.com/JetBrains/compose-hot-reload
https://github.com/JetBrains/compose-hot-reload Compose Hot ReloadのREADMEを見てみる https://github.com/JetBrains/compose-hot-reload
でも実務でも試したい!
でも実務でも試したい! • 選択肢1 ⚬ 各種versionを頑張って上げる ⚬ ビルドが通らなくなって色々辛い • 選択肢2 ⚬
別のGradleプロジェクトを作って、同一モジュールを参照する
でも実務でも試したい! • 選択肢1 ⚬ 各種versionを頑張って上げる ⚬ ビルドが通らなくなって色々辛い • 選択肢2 ⚬
別のGradleプロジェクトを作って、同一モジュールを参照する (プロジェクトで実際に動いていることを確認したいだけなので) 選択肢2を採用
HotReloadのためにアプリケーションモジュールを作る アプリケーションモジュール Androidターゲット 通常のモジュール
HotReloadのためにアプリケーションモジュールを作る アプリケーションモジュール Androidターゲット (新規)sharedモジュール 通常のモジュール
HotReloadのためにアプリケーションモジュールを作る アプリケーションモジュール Androidターゲット アプリケーションモジュール Desktopターゲット 通常のモジュール (新規)sharedモジュール
HotReloadのためにアプリケーションモジュールを作る アプリケーションモジュール Androidターゲット アプリケーションモジュール Desktopターゲット 通常のモジュール (新規)sharedモジュール AndroidアプリのGradleプロジェクト DesktopアプリのGradleプロジェクト
アプリケーションモジュール Androidターゲット アプリケーションモジュール Desktopターゲット HotReloadのためにアプリケーションモジュールを作る 通常のモジュール 1系 1.5系 (新規)sharedモジュール
アプリケーションモジュール Androidターゲット アプリケーションモジュール Desktopターゲット HotReloadのためにアプリケーションモジュールを作る 2.1.20 2.1.20 通常のモジュール 1系 1.5系
※sharedモジュールは低い方の versionで実装する必要あり (新規)sharedモジュール
プロジェクトの構成 project-root/ ├─ androidApp/ │ ├── app/ │ │ └──
build.gradle.kts │ ├── shared/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts │ ├─ desktopApp/ │ ├── composeApp/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts
プロジェクトの構成 project-root/ ├─ androidApp/ │ ├── app/ │ │ └──
build.gradle.kts ─ depends on shared/ │ ├── shared/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts │ ├─ desktopApp/ │ ├── composeApp/ │ │ └── build.gradle.kts ─ depends on shared/ │ ├── settings.gradle.kts │ └── build.gradle.kts
HotReload神 HotReloadのためにアプリケーションモジュールを作る
と思ったら sharedモジュールの変更が HotReloadをトリガーしない・・・ HotReloadのためにアプリケーションモジュールを作る
sharedモジュールの変更がHotReloadをトリガーしない・・・ アプリケーションモジュール Desktopターゲット sharedモジュー ル
プロジェクトの構成 project-root/ ├─ androidApp/ │ ├── app/ │ │ └──
build.gradle.kts │ ├── shared/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts │ ├─ desktopApp/ │ ├── composeApp/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts HotReloadされない
HotReloadのバグ? compose-desktopチャンネルで聞いてみたら multi moduleで HotReload動かなくない ? 動くよ! kotlinconfのアプリ は そういう構成だよ!
調べた結果 HotReloadは • プロジェクト内のモジュールなら動いている • プロジェクト外のモジュールなら動いていない 確定ではないです
プロジェクトの構成 project-root/ ├─ androidApp/ │ ├── app/ │ │ └──
build.gradle.kts │ ├── shared-nonhotreloadable/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts │ ├─ desktopApp/ │ ├── composeApp/ │ │ └── build.gradle.kts │ ├── shared-hotreloadable/ │ │ └── build.gradle.kts │ ├── settings.gradle.kts │ └── build.gradle.kts HotReloadできない HotReloadできる
HotReloadどうだった?(まとめ) • Wizardで簡単に試すことができます! • あなたのプロジェクトが日々version上げを行なっていなら、多分簡単に導入でき るます! • version上げを行なっていなくても、紹介した方法で動きを試してみる価値はある かもです! ⚬
ただし複雑になる可能性、kmp未対応の場合はビルド時間などにも影響あり • この変更をマージすることはない、これをversion上げなどのモチベーションに! • ちなみに適当に入れただけだけど、HotReloadの速度は0~2秒くらいで既に実用的 な速度でした!(割と大きなプロジェクトではある)
Compose HotReloadは良さそうだ! Thank you!