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
Agile that works and the tools we love
rasmusluckow
331
21k
New Earth Scene 8
popppiees
1
1.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
A Tale of Four Properties
chriscoyier
162
24k
Paper Plane
katiecoart
PRO
0
46k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
200
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Ethics towards AI in product and experience design
skipperchong
2
200
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でリストを実装するといった判断も取れるのかもしれません。 ◦ 高解像度映像の生中継とか、複雑なアニメーションとか?
以上!!