SlideShare a Scribd company logo
1 of 34
Download to read offline
Jetpack Composeの

パフォーマンスの基本

Retty アプリチーム 松田

2022/06/30 

自己紹介

Retty株式会社

アプリチーム所属

松田



● 2020年入社 3年目

● やっていること

○ 主にAndroid

○ たまにiOS

○ バックエンドサーバー(Kotlin) 

アプリエンジニア
特にAndroid / Kotlinバックエンドサーバー
に興味があるエンジニア募集中
Rettyとは

1.Jetpack Composeの基本の動き方

https://developer.android.com/jetpack/compose/phases
例外)
・BoxWithConstraints
・LazyColumn
・LazyRow
単方向データフローで動
いている
1.Jetpack Composeの基本の動き方

https://developer.android.com/jetpack/compose/phases
Treeの作成
1.Jetpack Composeの基本の動き方

https://developer.android.com/jetpack/compose/phases
・サイズ計算
・座標計算
1.Jetpack Composeの基本の動き方

https://developer.android.com/jetpack/compose/phases
いかに効率化するか
いかにReCompositionを行わずに
Layoutフェーズだけ実行できるか
目次

1. Jetpack Composeの動作フェーズ

2. Composable

2.1. Compositionをskipする

2.2. Rettyで使用している設計例

2.3. Restart不可能なComposable

3. Layout

3.1. Layoutフェーズだけを実行する

2.StableとSkippable

@Composable
public fun MainContent(
title: String,
color: Color,
items: List<String>,
) {
// ~~~~
}
引数がequalsで比較して同一
であればそのComposable内
のCompositionはスキップされ
る
※Composable関数がStable
である場合に限る
2.StableとSkippable

val mutableItems = mutableListOf<String>()
val items: List<String> = mutableItems
mutableItems.add("1")
println(items) // [1]
1. Listは外部から変更可能。 → これがStableではないという事
2. 外部から変更された事をComposeは検知できない。
3. なのでskipされずに毎回Compositionが行われる。
2.Stableか調べる

allprojects {
gradle.projectsEvaluated {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
def baseDir = "path/to/dir"
def outPath = "${baseDir}${project.path.replace(":", "/")} "
freeCompilerArgs += [
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin :metricsDestination= ${outPath}",
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination= ${outPath}"
]
}
}
}
}
https://github.com/androidx/androidx/blob/403b6d0032c289ed6e65a1c75f137c07aedd220f/compose/compiler/design/compiler-metrics.md
TopLevelの build.gradle
2.Stableか調べる



1. モジュールごとのSummary(*-module.json)
2. Composable関数の情報(*-composables.txt)
3. Composable関数の引数に与えるクラスの情報(*-classes.txt)
2.Stableか調べる



{
"skippableComposables": 81,
"restartableComposables": 86,
"readonlyComposables": 0,
"totalComposables": 86,
"restartGroups": 86,
"totalGroups": 129,
"staticArguments": 129,
"certainArguments": 52,
"knownStableArguments": 961,
"knownUnstableArguments": 20,
"unknownStableArguments": 10,
"totalArguments": 991,
"markedStableClasses": 0,
"inferredStableClasses": 16,
"inferredUnstableClasses": 4,
"inferredUncertainClasses": 1,
"effectivelyStableClasses": 16,
"totalClasses": 21,
"memoizedLambdas": 68,
"singletonLambdas": 32,
"singletonComposableLambdas": 3,
"composableLambdas": 12,
"totalLambdas": 71
}
{
"skippableComposables": 81,
"restartableComposables": 86,
"totalComposables": 86
}
*-module.json
5つはSkip可能でない
2.Stableか調べる



*-composables.txt



restartable fun ListItem(
stable modifier: Modifier
unstable uiState: ListItemUiState
)
● 引数が全てstable
● skippableである
restartable skippable fun Label(
stable drawableRes: Int
stable colorRes: Int
stable contentDescription: String
)
● 引数にunstableがある
● skippableでない
2.Stableか調べる



*-classes.txt

unstable class ListItemUiState{
stable val iconPath: String?
stable val userName: String
unstable val labels: List<String>
stable val isDraft: Boolean
stable val onClick: Function0<Unit>
<runtime stability> = Unstable
}
● unstableな値があるとクラスも
Unstableになる
● Lambdaはstable
2.Stableにする



UnstableをStableにしてskippableにするにはどうしたら良いかの前に
1. Composable関数がskippableで無いのは、必ずしも悪い事では無いと記述
がある
https://github.com/androidx/androidx/blob/403b6d0032c289ed6e65a1c75f137c07aedd220f/compose
/compiler/design/compiler-metrics.md
2. 公式ドキュメントのサンプルにも普通にunstableを引数に取っている
Rettyでは実装が難しく無い限り基本的に
StableにしてSkippableにする
2.Stableにする



@StableMarker
1. @Immutable
○ publicな値は変更されない
○ MutableStateを通しても値が変更されない
2. @Stable
○ publicな値は変更されない
○ MutableStateを通して値が変更される
https://developer.android.com/reference/kotlin/androidx/compose/runtime/StableMarker
2.Stableにする



ListをStableにする
@Immutable
public class ImmutableList<E>(list: List<E>) : List<E> by list.toList()
Rettyで使用している設計例

2.Rettyで使用している設計例

Root
@Immutable
public data class NamesScreenUiState(
public val names: ImmutableList<NameUiState>
,
)
@Immutable
public data class NameUiState(
public val name: String,
public val onClick: ComposeEventWrapper
<() -> Unit>,
}
Listの要素
比較時に必ずtrue
になるラッパー
2.Rettyで使用している設計例

@Composable
public fun NamesScreen (
modifier: Modifier ,
uiState: NamesScreenUiState ,
) {
Column(modifier = modifier.fillMaxWidth()) {
LazyColumn(modifier = Modifier.fillMaxWidth()) {
items(uiState.names) { item ->
Name(
modifier = Modifier.fillMaxWidth(),
uiState = item
)
}
}
}
}
@Composable
public fun Name(
modifier: Modifier,
uiState: NameUiState,
) {
Column(
modifier = modifier.clickable {
uiState.onClick.event()
}
) { Text(text = uiState.name) }
}
Restart不可能なComposable

2.Restart不可能なComposable





{
"skippableComposables": 81,
"restartableComposables": 86,
"readonlyComposables": 0,
"totalComposables": 86,
"restartGroups": 86,
"totalGroups": 129,
"staticArguments": 129,
"certainArguments": 52,
"knownStableArguments": 961,
"knownUnstableArguments": 20,
"unknownStableArguments": 10,
"totalArguments": 991,
"markedStableClasses": 0,
"inferredStableClasses": 16,
"inferredUnstableClasses": 4,
"inferredUncertainClasses": 1,
"effectivelyStableClasses": 16,
"totalClasses": 21,
"memoizedLambdas": 68,
"singletonLambdas": 32,
"singletonComposableLambdas": 3,
"composableLambdas": 12,
"totalLambdas": 71
}
{
"skippableComposables": 81,
"restartableComposables": 86,
"totalComposables": 86
}
*-module.json
2.@NonRestartableComposable

@Composable
public fun Restartable(count: Int) {
SideEffect { Log.d("Restartable", "SideEffect") }
Text(text = "Restartable: ButtonCount=$count")
}
@Composable
@NonRestartableComposable
public fun NonRestartable(count: Int) {
SideEffect { Log.d("NonRestartable", "SideEffect") }
Text(text = "NonRestartable: ButtonCount=$count")
}
1
2
2
2.@NonRestartableComposable

var nonRestartable by remember { mutableStateOf(0) }
var restartable by remember { mutableStateOf(0) }
Column {
Button(onClick = {
restartable++
}) { Text(text = "Restartable") }
Restartable(restartable)
Button(onClick = {
nonRestartable++
}) { Text(text = "NonRestartable") }
NonRestartable(nonRestartable)
}
Restartable D SideEffect
NonRestartable D SideEffect
ログ出力
2.@NonRestartableComposable

Compose 1.1 での使用箇所
2.@NonRestartableComposable

Compose 1.2.0 (beta2) での使用箇所
2.@NonRestartableComposable

リスタート不可能にすると良い時
● 再コンポジションの「ルート」になることがないと
考えられる場合
● つまり、Composable関数が直接変数を読み込まない場
合
全て別のComposableに渡しているので、
Card側は再起動可能にする必要はない
Layoutフェーズだけを実行する

3.Layoutフェーズだけを実行する



スクロールしても画像の位置は
変わっていないように見える
CollapsingLayout
3.Layoutフェーズだけを実行する



@Composable
public fun CollapsingLayout (
modifier: Modifier = Modifier ,
scrollOffset: Int ,
content: @Composable () -> Unit
) {
Layout(
modifier = modifier,
content = content
) { measurables, constraints ->
TODO("scrollOffsetを使って計算")
}
}
1
2
Compositionの回数
※ComposeRuntime1.2から使える
LayoutInspectorの機能
3.Layoutフェーズだけを実行する



@Composable
public fun CollapsingLayout (
modifier: Modifier = Modifier ,
scrollOffsetProvider: () -> Int,
content: @Composable () -> Unit
) {
Layout(
modifier = modifier,
content = content
) { measurables, constraints ->
val scrollOffset = scrollOffsetProvider()
TODO("scrollOffsetを使って計算")
}
}
1
2
※ComposeRuntime1.2から使える
LayoutInspectorの機能
Compositionの回数
3.Layoutフェーズだけを実行する



公式の例では、offsetが、Lambda版と非Lambda版がある。
● 固定サイズ -> 非Lambda版
● アニメーションする -> Lambda版
最後に: Composeで作られている部分


More Related Content

Similar to Jetpack Composeのパフォーマンスの基本

Flutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux までFlutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux までcch-robo
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践Shu Sugimoto
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaTakuya Tsuchida
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会Jumpei Ogawa
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)Fujio Kojima
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!文樹 高橋
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2DToshiyuki Ienaga
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMiho Nakano
 
Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?
Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?
Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?Toshio Ehara
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料Masafumi Terazono
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしKazuki Minamitani
 
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9Saiki Iijima
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressAkinari Tsugo
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始めTomohiro Kaizu
 

Similar to Jetpack Composeのパフォーマンスの基本 (20)

Flutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux までFlutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux まで
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
20141129-dotNet2015
20141129-dotNet201520141129-dotNet2015
20141129-dotNet2015
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Hadoop jobbuilder
Hadoop jobbuilderHadoop jobbuilder
Hadoop jobbuilder
 
Ll xcode
Ll xcodeLl xcode
Ll xcode
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Magento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for DesignMagento meet up Tokyo#1 for Design
Magento meet up Tokyo#1 for Design
 
Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?
Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?
Cocos2d/2d-x/html5 [Objective-C/C++/JavaScript] 好みの言語はどれですか?
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
 
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
 
Develop Web Application with Node.js + Express
Develop Web Application with Node.js + ExpressDevelop Web Application with Node.js + Express
Develop Web Application with Node.js + Express
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始め
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (12)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Jetpack Composeのパフォーマンスの基本