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
Performance Classを触ってみよう
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takarabe-hamuyatti
January 19, 2024
0
360
Performance Classを触ってみよう
takarabe-hamuyatti
January 19, 2024
Tweet
Share
More Decks by takarabe-hamuyatti
See All by takarabe-hamuyatti
screenWidthDpちょっと 怖いかも、、??
rabeyatti
0
470
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
430
We Are The Robots
honzajavorek
0
160
Speed Design
sergeychernyshev
33
1.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Typedesign – Prime Four
hannesfritz
42
2.9k
Six Lessons from altMBA
skipperchong
29
4.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Transcript
Performance Classを触って みよう shibuya.apk 2024/01/18
自己紹介 財部彰太 twitter : rabe_hamuyatti 株式会社ZOZO ZOZOTOWNのAndroidアプリを作って います。 中森明菜に大ハマりしてます。
目次 • パフォーマンスクラスについて ◦ パフォーマンスクラスとは ◦ 準備 ◦ 取得方法 •
何が嬉しい? • 実際どう使う? ◦ ドキュメントによると ◦ Composeのスクロールパフォーマンスの制限とか?
パフォーマンスクラスについて
パフォーマンスクラスとは
パフォーマンスクラスとは • Androidデバイスが満たすべき、さまざまな性能の基準が定義されたもの ◦ Android12で初めて導入された • Androidの各versionごとに、独自のパフォーマンスクラスを定義している ◦ Android互換性定義ドキュメント(CDD)としてまとめられている ◦
https://source.android.com/docs/compatibility/cdd?hl=ja • 後述するライブラリが、ビルド バージョン情報での宣言、または Google Play 開発 者サービスのデータに基づいて、デバイスのメディア パフォーマンス クラスを教え てくれる https://developer.android.com/reference/android/os/Build.VERSION#MEDIA_ PERFORMANCE_CLASS
パフォーマンスの表し方
パフォーマンスの表し方 • APIレベルのコードネームで表される ◦ Build.VERSION_CODES.TIRAMISU -> パフォーマンスレベル13 • 搭載しているOSのversionと、パフォーマンス レベルは必ずしも一致しない
◦ Android12が搭載され、パフォーマンス レベルが12のデバイスを、Android13に アップグレードしてもパフォーマンスレベ ルが13に上がるわけではない ◦ 自分のpixel6(OS13)はパフォーマンス レベル12でした https://developer.android.com/topic/performance/performance-class?hl=ja
準備
準備 • jetpackの、Core-Performanceライブラリへの依存を追加する • モジュールレベルのGradleファイルに、以下の定義を追加 • 今月(2024/01)の10日にbetaからstableになりました https://developer.android.com/jetpack/androidx/releases/core#c ore_performance_version_10_2 dependencies
{ implementation("androidx.core:core-performance:1.0.0") implementation("androidx.core:core-performance-play-services:1.0.0") }
取得方法
取得方法 Step1 ApplicationのonCreateメソッドで、PlayServicesDevicePerformanceと いったDevicePerformanceを実装したクラスのインスタンスを生成する class MyApplication : Application() { lateinit
var devicePerformance: DevicePerformance override fun onCreate() { // Use a class derived from the DevicePerformance interface devicePerformance = PlayServicesDevicePerformance(applicationContext) } }
取得方法 Step 2 アプリ内の任意の箇所で、Applicationクラスが保持しているdevicePerformanceクラ スのインスランスを取得する (ドキュメントに、ほんとはこの取得の流れはDI使って上手くやってねみたいなことが書いてあ りました) class MyApplication :
Application() { override fun onCreate() { val devicePerformance = (application as MyApplication).devicePerformance } }
取得方法 Step 3 DevicePerformanceクラスの中にあるプロパティ、mediaPerformanceClass を参照してデバイスのパフォーマンスを判別する when { devicePerformance.mediaPerformanceClass >= Build.VERSION_CODES.TIRAMISU
-> { Log.d("","高いよ") } devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.S -> { Log.d("","普通だよ") } else -> { Log.d("","低いよ") } } }
何が嬉しい?
何が嬉しい? • Performance Classは、OSのレベルと、端末の性能を切り分けて教えてくれ る → 端末の性能に合わせて柔軟な実装ができるのでは?
実際どう使う?
実際どう使う? • ドキュメントによると、、 ◦ > デベロッパーは実行時にデバイスのパフォーマンス クラスを検出し、デバイスの機能を 最大限に活用するアップグレード環境を提供できます • 具体的には
◦ Composeでのリスト ▪ Jetpack ComposeのLazyColumn/LazyRowのスクロール速度を制限する ▪ といった取り組みを、適用するかしないかの判断材料にできるかもしれません ▪ 極論、このAPIを使えば、一定以下のパフォーマンスレベルの端末には、 AndroidViewでリストを実装するといった判断も取れるのかもしれません。 ◦ 高解像度映像の生中継とか、複雑なアニメーションとか?
以上!!