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
Strong Skipping Modeをはじめよう
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tomoki Yamashita
February 07, 2024
Technology
5.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Strong Skipping Modeをはじめよう
Tomoki Yamashita
February 07, 2024
More Decks by Tomoki Yamashita
See All by Tomoki Yamashita
ハードウェア連携が必要なプロダクトにおける自動テストの書き方
tomorrowkey
0
160
STORES_決済端末2ってAndroidなんでしょ__ほんとうかな__.pdf
tomorrowkey
0
83
モバイルとRubyとわたし
tomorrowkey
0
89
BiDiってなんだ?
tomorrowkey
2
820
文字列操作の達人になる ~ Kotlinの文字列の便利な世界 ~ - Kotlin fest 2025
tomorrowkey
2
2.1k
Ebisu mobile #11 - Predictive Backに対応する
tomorrowkey
1
180
AI協同時代にモバイルエンジニアが備えるべき開発環境の話
tomorrowkey
2
460
5分で完全理解するNav3との向き合い方
tomorrowkey
0
330
テストを楽に書きたい
tomorrowkey
2
460
Other Decks in Technology
See All in Technology
SLOを阻む不安
sraku2159
0
220
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
220
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
570
生成AI時代のIAMのマニアックな話
takuros
3
320
IoTとは〜? 数字で見るSORACOM UG【SORACOM UG Explorer 2026】
soracom
PRO
0
170
re:Inventで、人生は変わったのか? / growth-builders-hub-1-reinvent-2026
mhrtech
2
310
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
140
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
2
150
In-Context Learning再入門。ICLの勾配降下的解釈の研究動向を追ってみる。
dai08srhg
1
220
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
140
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
510
20261016_Nagoya Tech Talk #4 データ活用のリアル AIも人も間違える
bessaralink55
0
160
Featured
See All Featured
Accessibility Awareness
sabderemane
1
290
A designer walks into a library…
pauljervisheath
211
25k
30 Presentation Tips
portentint
PRO
1
460
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.7k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.4k
Designing for Timeless Needs
cassininazir
1
550
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
370
Thoughts on Productivity
jonyablonski
76
5.4k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
670
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
STORES 株式会社 Strong Skipping Modeをはじめよう potatotips #86 2024.02.07 @tomorrowkey
自己紹介
自己紹介 • 山下智樹 / @tomorrowkey • STORES株式会社 - STORES ブランドアプリ
• Android エンジニア (14年生) 3
STORESブランドアプリって? 4
Strong Skipping Modeとはなんだ
Strong Skipping Modeとはなんだ 6 https://android-developers.googleblog.com/2024/01/whats-new-in-jetpack-compose-january-24-release.html
Strong Skipping Modeとはなんだ 7 https://android-developers.googleblog.com/2024/01/whats-new-in-jetpack-compose-january-24-release.html
Strong Skipping Modeとはなんだ 8 https://android-developers.googleblog.com/2024/01/whats-new-in-jetpack-compose-january-24-release.html
Strong Skipping Modeとはなんだ まじじゃん… 9 https://android-review.googlesource .com/c/platform/frameworks/support /+/2694106
おさらい
そもそもSkippingってなに - ステート変更のたびに画面全体を再描画(Recompose)しているとパフォー マンスが悪い - Composableの引数が安定(Stable)していたら、そのComposableは Skippableとしてマークし、引数が同じ場合にRecomposeを回避できる 11
Stableってなに - 安定している型のこと - Stable - Int, Boolean, String …
- Array - イミュータブル(val)で宣言されている安定したプロパティで構成されたオブジェクト - Unstable - List, Date… - ミュータブル(var)で宣言されているプロパティを持つオブジェクト 12
Strong Skipping Modeはようするに - 不安定な引数型であってもSkippableとしてマークする - これまでよりもSkippableになるComposableが増えるからパフォーマンスが あがる 注: non-restartableなComposableは引き続きSkippableではない扱いとなりま
す。 13
Strong Skipping Modeをためす
Strong Skipping Modeをためす - Kotlin 1.9.20 - Compose Compiler: 1.5.4
- Compose BOM: 2024.01.00 - Compose 1.6.0 (w/ compiler option) 15 android { kotlinOptions { freeCompilerArgs = listOf( "-P", "plugin:androidx.compose.compiler.plugins.kotlin:experimentalStrongSkipping=true" , ) } }
動作確認: Strong Skipping Mode: 無効
動作確認: Strong Skipping Mode: 有効
Strong Skipping Modeとむきあう
Strong Skipping Modeとむきあう - Compose 1.7でデフォルト有効になる - SkippableにしたくないComposableには@Unskippableアノテーションをつ ければOK -
サンプルコードなら単純だから動作確認も簡単だけど、プロダクションコード を確認するのは大変… 19
Strong Skipping Modeとむきあう Compose Compiler Metrics - Compose CompilerがComposableをどう認識 しているかレポートしてくれる
- Strong Skipping Modeの導入前後でどう変化 するか観察することで、動作確認すべき Composableを絞ることができる 20 https://github.com/androidx/androidx/blob/androidx-m ain/compose/compiler/design/compiler-metrics.md
Strong Skipping Modeとむきあう プロダクションコードでメトリクスを比較してみた 21 --- ./compose_metrics-before/module.json 2024-02-03 20:12:57 +++
./compose_metrics-after/module.json 2024-02-03 20:10:20 @@ -1,10 +1,10 @@ { - "skippableComposables": 279, + "skippableComposables": 306, "restartableComposables": 430, "readonlyComposables": 5, "totalComposables": 449, "restartGroups": 430, - "totalGroups": 665, + "totalGroups": 668, "staticArguments": 890, "certainArguments": 413, "knownStableArguments": 6700, \ No newline at end of file @@ -17,9 +17,9 @@ "inferredUncertainClasses": 28, "effectivelyStableClasses": 427, "totalClasses": 742, - "memoizedLambdas": 435, + "memoizedLambdas": 568, "singletonLambdas": 146, "singletonComposableLambdas": 32, "composableLambdas": 194, - "totalLambdas": 520 + "totalLambdas": 568 } \ No newline at end of file
おわり