Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
KotlinConf2025現地参加 と Compose HotReload導入記
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
gotlin
October 03, 2025
45
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
87
Conference-app-2024の良さげな実装を勝手にいくつか紹介する
goutarouh
0
93
VRTをプロダクトに導入するまでのお話
goutarouh
0
370
Drag & Drop in LazyColumn
goutarouh
0
960
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
Crafting Experiences
bethany
1
320
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Technical Leadership for Architectural Decision Making
baasie
3
560
The Limits of Empathy - UXLibs8
cassininazir
1
650
Music & Morning Musume
bryan
47
7.4k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Design in an AI World
tapps
1
310
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!