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
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
88
Conference-app-2024の良さげな実装を勝手にいくつか紹介する
goutarouh
0
94
VRTをプロダクトに導入するまでのお話
goutarouh
0
370
Drag & Drop in LazyColumn
goutarouh
0
970
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
350
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Fireside Chat
paigeccino
43
4.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Speed Design
sergeychernyshev
33
2.1k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
A better future with KSS
kneath
240
18k
Making the Leap to Tech Lead
cromwellryan
135
10k
Designing for humans not robots
tammielis
254
26k
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!