Slide 1

Slide 1 text

What’s new in Android Jetpack and Tools Jetpack and Tools 1 takahirom(@new_runnable) Google Developers Expert for Android

Slide 2

Slide 2 text

● What’s new in Jetpack ● Measuring Jank and Startup with Macrobenchmark セッションの範囲 ● What’s new in Android development tools ● What's new in Android Gradle Plugin ● What's new in Android testing tools ● What's new in the Design tool Jetpack Tool 2

Slide 3

Slide 3 text

全てを紹介することは難しいので、 各セッションで話されていたテーマを箇条書きにして、 いくつか印象に残ったところをピックアップして紹介します。 また、調べたり、試したりして、動画にはない情報🕵も紹介します。 どう紹介するか 3

Slide 4

Slide 4 text

What’s new in Jetpack Android Jetpack 4

Slide 5

Slide 5 text

What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 5 今まではBetaではAPIの変更 はしなかったが、 変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark

Slide 6

Slide 6 text

What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 6 今まではBetaではAPIの変更 はしなかったが、 変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark

Slide 7

Slide 7 text

7 https://developer.android.com/jetpack/androidx/versions/all-c hannel 6/16のAndroid Jetpackの変更内容より Alpha、Betaの更新が たくさん行われている

Slide 8

Slide 8 text

8 ● 開発中 ● APIは追加、変更、削除される ● テストされており、ほぼ機能するは ず。 Alpha ● 機能の安定化 ● APIの変更はしない ● criticalな問題やコミュニティのフィー ドバックに対応するときにはAPIを変 更する → ベータの柔軟性が増えた Beta しかし成熟に長く時間が必要な機能もあ る

Slide 9

Slide 9 text

APIが実験的な状態であることをユーザーに通知し、ユーザーがオプトインできる 仕組み これによってJetpackのライブラリがもっと早くStableになるようになる Experimental Annotation androidx.annotation:annotation-experimental 9

Slide 10

Slide 10 text

10 アノテーションの importを忘れると KotlinのOptInになっ てビルドに失敗する🕵 (Kotlin環境下)

Slide 11

Slide 11 text

What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 11 今まではBetaではAPIの変更 はしなかったが、 変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark

Slide 12

Slide 12 text

AppSearch ローカルに保存されている構造化データを管理するためのデバイス上の検索ライブラリ。 検索機能を構築するのに使用する。 androidx.appsearch:appsearch 12

Slide 13

Slide 13 text

13 AppSearch indexやクエリでI/Oの利用が 少ないので、大きなデータセッ トでも低遅延で動く 単一のクエリで複数のデータタ イプから取り出すことができる BM25Fのような関連性ランキン グ(relevance ranking)や使用 スコア(usage score)が利用で きる 特徴 Android Sとのインテグレー ション Android S以降で他のアプリと 安全にデータを共有できる。 nativeライブラリに依存しなくて 良いのでアプリのサイズを減ら せる (まだJetpackでは利用できな い)

Slide 14

Slide 14 text

14 https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appsearch/l ocal-storage/src/main/java/androidx/appsearch/localstorage/AppSearchImpl.java;l=78;drc =5663cbd3793780f86e41740f7e03926f678080f8 AppSearch https://android.googlesource.com/platform/external/icing/+/39ba960dd 31a8667dfb3a1cd6ec3dff52f6548ea 少しだけコードを見に行ったところ C++で書かれたライブラリを使っているもよう🕵

Slide 15

Slide 15 text

15 AppSearch 誰もGitHubなどにサンプルを上げていなかったので動くだけの サンプルを用意してみました🕵 (AOSPのAndroid Testしか見つからなかった) https://github.com/takahirom/app-search-sample 感想 意外と気軽に使えるので便利そう 現状、日本語では検索できないみたい?(issue立ててみました) https://issuetracker.google.com/issues/191286849 非同期処理の仕組みがGuavaに依存していそうなので、 kotlinx-coroutines-guavaを使ってあげると楽に利用できる

Slide 16

Slide 16 text

What’s new in Jetpack JetpackのBeta定義が変わっ た ライブラリのアップデート 16 今まではBetaではAPIの変更 はしなかったが、 変更するようになった androidx.annotation:annotati on-experimentalが追加になっ た。 CameraX AppSearch Security Crypto Hilt WorkManager Room ConstraintLayout Fragment Navigation Google Shortcuts library EmojiCompat 2 Paging Macrobenchmark

Slide 17

Slide 17 text

17 FragmentとNavigation マルチバックスタックへの対応 大規模なリファクタリングによりマルチバックスタックに対応 ボトムナビゲーションがある画面で使われる 基本的にはNavigation 2.4.0-alpha01とFragment 1.4.0-alpha01以降で BottomNavigationViewやNavigationRailViewとの 連携を利用するとデフォルトで有効に。

Slide 18

Slide 18 text

18 FragmentとNavigation マルチバックスタックへの対応 連携の中では以下のAPIが使われており、 Fragmentのバックスタックの保存、復元ができるようになった🕵 今のバックスタックの内容を保存 → FragmentManager#saveBackStack(id) バックスタックをidによりリストア → FragmentManager#restoreBackStack(id) from: https://medium.com/androiddevelopers/multiple-back-stacks-b714d974f134 Multiple back stacks saveBackStack(“notifications”) restoreBackStack(“profile”) ↓

Slide 19

Slide 19 text

Measuring Jank and Startup with Macrobenchmark Android Jetpack 19

Slide 20

Slide 20 text

Measuring Jank and Startup with Macrobenchmark Macrobenchmarkが何を解 決するか どのように動作するか 20 ● Analyticsからのフィードバッ クはすぐには得られない ● 既存のAndroid Jetpack Benchmarkはマイクロベン チマークなので、スタートアッ プの時間などは測れない ● 安定したベンチマークを取る のが難しい ● どのように書くか ● どのようなプロセスで行われ るか androidx.tracingライブラリを 使って trace("name") {...}でトレースで きる 独自のトレースポイントを追加 する

Slide 21

Slide 21 text

21 Macrobenchmark どのように書くか 以下のようなオプションを指定。 metrics = アプリの起動時間を見るの か、フレームを見るのか compilationMode = アプリがコンパイ ルされた状態から始まるのか startupMode = アプリがプロセスから 開始なのか、Activityの起動から開始 なのか

Slide 22

Slide 22 text

22 Macrobenchmark どのように書くか テスト中に行うことをブロックに 記述する。 Homeボタンを押して起動を行っている

Slide 23

Slide 23 text

23 Macrobenchmark どのように動作するか 実際に見てみる 中央値やパーセンタイルが表 示される。 またこのリンクに なってるところをクリック するとトレースも確認できる!

Slide 24

Slide 24 text

24 Macrobenchmark CIでどうやって検出するのか? Fighting regressions with benchmarks in CI (Android Dev Summit '19) https://www.youtube.com/watch?v=ynBPcFs6OOk Fighting regressions with Benchmarks in CI https://medium.com/androiddevelopers/fighting-regressions-with-benchmarks-in-ci-6ea9a14b5c71 Macrobenchmarkを利用する と、Jsonで結果が利用できる。 これをStep-fittingというアプ ローチで、前後のいくつか結果 の平均と分散(variance)を使っ てうまく検出する🕵 (過去のAndroid Developers の動画やブログで紹介されて いる)

Slide 25

Slide 25 text

Macrobenchmark 導入方法 ● モジュールを別に作ってそこにベンチマーク の処理を書いてそこからアプリを起動する ● https://github.com/android/performance -samples にサンプルがある ● DroidKaigiの公式アプリでも 試しに入れてみたので、差分だけ見たい方 はどうぞ🕵 ● https://github.com/DroidKaigi/conferenc e-app-2021/pull/476

Slide 26

Slide 26 text

What’s new in Android development tools 26 Tools

Slide 27

Slide 27 text

What’s new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ 27 ● 4.1 ● 4.2 ● Android Studio Arctic Fox 2020.3.1 (バージョンの命名 の変更) ● Android Gradle Plugin :7.0.0 (バージョンの命名の 変更) ● 迅速なUIデザイン ○ Composeのための機能 ○ ... ● 新しいデバイス。大きな端末も小さな端末も ○ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ○ ... ● 開発者の生産性の向上 ○ WorkManager Inspector ○ Migrate to Non-Transitive R Classes… ○ ...

Slide 28

Slide 28 text

What’s new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ 28 ● 4.1 ● 4.2 ● Android Studio Arctic Fox 2020.3.1 (バージョンの 命名の変更) ● Android Gradle Plugin :7.0.0 (バージョンの命名の 変更) ● 迅速なUIデザイン ○ Composeのための機能 ○ ... ● 新しいデバイス。大きな端末も小さな端末も ○ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ○ ... ● 開発者の生産性の向上 ○ WorkManager Inspector ○ Migrate to Non-Transitive R Classes… ○ ...

Slide 29

Slide 29 text

新しいAndroid Studioの命名規則 29 Arctic Fox 2020.3.1 ベースとなっている IntelliJのバージョン codename。ABC順 新しいバージョンが分かる Android Studioの メジャーバージョン

Slide 30

Slide 30 text

新しいAndroid Gradle Pluginのバージョン規則 30 7.0.0 Gradle 7.xと動作することを 意図している Android Studioの命名規則から切り離されて7.0.0に。 こちらはセマンティックバージョニングを採用している。

Slide 31

Slide 31 text

What's new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ 31 ● 4.1 ● 4.2 ● Android Studio Arctic Fox 2020.3.1 (バージョンの命名 の変更) ● Android Gradle Plugin :7.0.0 (バージョンの命名の 変更) ● 迅速なUIデザイン ○ Composeのための機能 ○ ... ● 新しいデバイス。大きな端末も小さな端末も ○ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ○ ... ● 開発者の生産性の向上 ○ WorkManager Inspector ○ Migrate to Non-Transitive R Classes… ○ ...

Slide 32

Slide 32 text

What's new in Android development tools 迅速なUIデザイン 32 Jetpack Compose Live Literalによって 文字列などの変更がすぐに見られる Enable literal decorationsで 対応できるところを明示できる Peview Emulator Code

Slide 33

Slide 33 text

What's new in Android development tools 迅速なUIデザイン 33 ● ライトテーマやダークテーマの確認が@Preview を使うことでかんたんにできる ● プレビューの左の歯車(Gutter icon)からかんた んに設定を変更できる。 ● アニメーションのPreviewが表示でき(Animation inspector)、速度を落としてアニメーションを再生 できる。 ● 他にもComposeのConstraintLayoutの プレビューができたり、プレビュー上でクリックす ると その要素に飛べたりたくさんの機能がある。

Slide 34

Slide 34 text

What's new in Android development tools 迅速なUIデザイン 34 ● ライトテーマやダークテーマの確認が@Preview を使うことでかんたんにできる ● プレビューの左の歯車(Gutter icon)からかんた んに設定を変更できる。 ● Interactive mode ● アニメーションのPreviewが表示でき (Animation inspector)、速度を落としてアニ メーションを再生できる。 ● 他にもComposeのConstraintLayoutの プレビューができたり、プレビュー上でクリックす ると その要素に飛べたりたくさんの機能がある。

Slide 35

Slide 35 text

What's new in Android development tools 35 いくつかの機能はPreferences | Experimentalを開いて有効にしないといけない機能もあるので注意 🕵 (最初見つけられなくてハマった)

Slide 36

Slide 36 text

What's new in Android development tools 各バージョンのAndroid Studioの新機能と命名規則に ついて 3つのテーマ 36 4.1 4.2 Android Studio Arctic Fox 2020.3.1 (バージョンの命名の 変更) Android Gradle Plugin :7.0.0 (バージョンの命名の変更) ● 迅速なUIデザイン ○ Composeのための機能 ○ ... ● 新しいデバイス。大きな端末も小さな端末も ○ フォルダブル、AndroidTV、WearOSへの対応 (別にイベント があるのでスキップ) ○ ... ● 開発者の生産性の向上 ○ WorkManager Inspector ○ Migrate to Non-Transitive R Classes… ○ ...

Slide 37

Slide 37 text

Migrate to Non-Transitive R Classes 37 ● Android StudioでNon-Transitive R Classesに 移行するリファクタリングが追加になった。 Non-Transitive R Classesとは? Android Studioの機能

Slide 38

Slide 38 text

Non-Transitive R Classesとは 38 マルチモジュールでの環境では、 ライブラリのRクラスがマージされていくのでリソースの重複がおこり、 これがビルド時間などに影響する。 これをライブラリのRクラスを直接見るようにすることで、 マージしないようにできる。 大規模なアプリだとRクラスのフィールドの数が1万を超えることも。 Transitive R Class Non Transitive R Class

Slide 39

Slide 39 text

Migrate to Non-Transitive R Classes 39 Android Gradle Pluginには昔から android.namespacedRClassという名前であった機能🕵 Androidでは有名なエンジニアの Jake Whartonさんも褒めていた。 (19% フィールドを少なくできたそう) Non-Transitive R Classesとは? https://twitter.com/JakeWharton/status/1032396431787794432 より https://developer.android.com/studio/releases/gradle-plugin?hl=lt&skip_cache=true#4-1-0 より

Slide 40

Slide 40 text

Migrate to Non-Transitive R Classes 40 移行ソースコード DroidKaigiの公式アプリでも試しに入れてみたので、ど んな差分か見たい方はどうぞ🕵 移行するときには Rクラスが重複することになるので Kotlinだとうまくimport aliasを駆使すると良い (そこまでは移行してくれない) https://github.com/DroidKaigi/conference-app-2021/pull/508

Slide 41

Slide 41 text

What's new in Android Gradle Plugin 41 Tools

Slide 42

Slide 42 text

What's new in Android Gradle Plugin 新機能の紹介 Variant API 42 ● Configuration caching ● Non-transitive R classへの 対応でLintが追加になった ● Lintがモジュールごとに キャッシュされるように ● ドキュメントが利用可能に ○ https://developer.androi d.com/reference/tools/g radle-api 動的な動作のための androidComponents DSLが 追加され、 そこでvariantに対して、より柔 軟な設定ができるようになった Legacy Transform APIは柔軟 性に優れていたが、複雑だった パフォーマンスが高く、もっとか んたんに利用できる ASM API

Slide 43

Slide 43 text

What's new in Android Gradle Plugin 新機能の紹介 Variant API 43 ● Configuration caching ● Non-transitive R classへの 対応でLintが追加になった ● Lintがモジュールごとに キャッシュされるように ● ドキュメントが利用可能に ○ https://developer.androi d.com/reference/tools/g radle-api 動的な動作のための androidComponents DSLが 追加され、 そこでvariantに対して、より柔 軟な設定ができるようになった Legacy Transform APIは柔軟 性に優れていたが、複雑だった パフォーマンスが高く、もっとか んたんに利用できる ASM API

Slide 44

Slide 44 text

What's new in Android Gradle Plugin Configuration caching 44 Configuration phaseのTask Treeなどの情報を キャッシュでき、かなりビルド時間が短縮できる ./gradlew --configuration-cache を走らせると、configuration cacheに問題があれば 問題があるプラグインなどをhtmlレポートで教えてくれる 🕵 org.gradle.unsafe.configuration-cache=true 上記をgradle.propertiesで宣言すると常に有効になる https://youtu.be/AZBW5StgF8o?t=40

Slide 45

Slide 45 text

What's new in Android Gradle Plugin Configuration caching 45 DroidKaigiの公式アプリで ./gradlew --configuration-cache assembleDebug して表示されたレポート Kotlin NativeとLicense pluginがひっかかった模様。 License pluginのほうは対応されているみたい。 https://youtrack.jetbrains.com/issue/KT-43293

Slide 46

Slide 46 text

What's new in Android Gradle Plugin 新機能の紹介 Variant API 46 ● Configuration caching ● Non-transitive R classへの 対応でLintが追加になった ● Lintがモジュールごとに キャッシュされるように ● ドキュメントが利用可能に ○ https://developer.androi d.com/reference/tools/g radle-api 動的な動作のための androidComponents DSLが 追加され、 そこでvariantに対して、より柔 軟な設定ができるようになった Legacy Transform APIは柔軟 性に優れていたが、複雑だった パフォーマンスが高く、もっとか んたんに利用できる ASM API

Slide 47

Slide 47 text

What's new in Android Gradle Plugin Variant API 47 Variant関連のAPIを作り直してより柔軟に設定できるようになった。 onVariant() {}ではGradleのProvider/Propertyを使うAPIが追加されている そもそもGradleのProvider/Propertyとはなにか? From: https://youtu.be/AZBW5StgF8o?t=340

Slide 48

Slide 48 text

What's new in Android Gradle Plugin GradleのProvider/Propertyとはなにか? 今までのやり方が何が問題だったのか🕵 48 ● Gradleのビルドの中のプロパティの値がいつ利用できるようになるのかよく分からない。 ○ 例: とりあえずproject.afterEvaluate{} 呼んだり、タスクに依存してみたりしている。 ● タスクの依存関係を設定しつつ、outputFileとinputFileなどをつなげる必要がある。 ○ 例: 設定がうまくいかず、うまく取得できなかったりする。 ● Configuration phaseでファイルを読み込んだりして、タスクに設定するとConfiguration phaseが重たく なる。 ○ 例: Version nameに設定するためにgitコマンドからバージョンとったり。。 でもcleanのときには必要ないタスクもある。 これをLazy Configuration = Provider/Propertyで解決できる。 https://docs.gradle.org/current/userguide/lazy_config uration.html#lazy_properties より

Slide 49

Slide 49 text

What's new in Android Gradle Plugin 今までのやり方 49 タスク同士がdependsOnで繋げる方法 From Gradle properties to AGP APIs (Android Dev Summit '19) https://youtu.be/OTANozHzgPc?t=328 これからのやり方 GradleのProvider、Propertyというのをタス クに宣言しておき、それでつなげることで Lazy Configurationが使える!

Slide 50

Slide 50 text

What's new in Android Gradle Plugin Variant API 50 右の例ではVariant APIの onVariants{} を利用して、 ファイルに文字列を書き出し、 それを利用して applicationIdを設定している What’s new in Android Gradle plugin https://youtu.be/AZBW5StgF8o?t=379

Slide 51

Slide 51 text

What's new in Android Gradle Plugin ASM API 51 コード変換を行うAPI Transform APIは柔軟性に優れていたが、複雑だった AGP 4.2にバイトコード変換専用の新しいAPIが追加された コードを少なくでき、ビルド速度も速くなる。 https://github.com/android/gradle-recipes で サンプルコードが利用できる Android Code Searchで検索したところすでにDagger Hiltの コード生成で利用されているようだった🕵 https://cs.android.com/search?q=AsmClassVisitorFactory What’s new in Android Gradle plugin https://youtu.be/AZBW5StgF8o?t=562

Slide 52

Slide 52 text

What's new in Android testing tools Tools 52

Slide 53

Slide 53 text

What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified Test Platform (UTP) 53 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる

Slide 54

Slide 54 text

What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified Test Platform (UTP) 54 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる

Slide 55

Slide 55 text

What's new in Android testing tools GradleとAndroid Studioのテストランナーを統合 55 今までAndroid Studio上で実行したときとGradle上で実行したとき で結果が異なる場合があった From: https://developer.android.com/studio/preview/features#automated-test-snapshots 同じGradle Test Runnerで実行するように Android Studio Arctic Fox : Unit Testでの統合 Android Studio Bumblebee : Instrumentation Testでの統合 (Android Studio上で設定が必要) Android Studio上で結果が確認できる。

Slide 56

Slide 56 text

What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified Test Platform (UTP) 56 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる

Slide 57

Slide 57 text

What's new in Android testing tools Unified Test Platform (UTP) 57 旧称 Nitrogen テストを大規模に実施するための拡張可能な テスト実行のための仕組み プラグインのモジュールによって 拡張が可能になっている。

Slide 58

Slide 58 text

What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified Test Platform (UTP) 58 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時のEmulator のスナップショットが利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる

Slide 59

Slide 59 text

What's new in Android testing tools 59 GradleのDSLで管理する テスト中に仮想デバイスのイ メージのダウンロード、デバイ スの作成シャットダウン、 キャッシュまでGradleが管理 する testOptionsに右のように 記述 Gradle Managed Devices ./gradlew -Pandroid.experimental.androidTest.useUnifiedTestPlatform=true pixel2api29DebugAndroidTest

Slide 60

Slide 60 text

What's new in Android testing tools GradleとAndroid Studioのテ ストランナーの統合 Unified Test Platform (UTP) 60 同じテスト環境で実行されるよ うになった テストを大規模に実施するための拡張可能な テスト実行のための仕組み テストで失敗した時の Emulatorのスナップショットが 利用できる Test retention Gradle Managed Devices Gradleでエミュレーター を管理できる Test Matrix 複数の端末でテストを 並行に実行できる

Slide 61

Slide 61 text

What's new in Android testing tools 61 UTPによる機能。 テストで失敗した時のEmulatorのスナップショットが利用できる Test retention

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

テスト結果のフォルダに 大きいスナップショットファイルが保存される

Slide 65

Slide 65 text

テスト結果のフォルダにあったtest-result.pbのprotobufファイルをインポートできる

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

What's new in Android testing tools UTPがどう拡張可能になっているのか プラグインの仕組みを少しだけ見てみる🕵 68 https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:build-system/gradle-core/src/main/java/com/android/build/gradle/internal/testing/utp/UtpConfigFactory.kt;l=310-333;drc=2d2dacf249752a1e382b9b1ea47940ef1c10bea1 どうやらHostPluginというinterfaceがあり、 それを実装することによってプラグインを作ること ができるようで、 それによってTest retention (コード上はIcebox)な どさまざまな実装がされており、拡張可能になって いそうでした。

Slide 69

Slide 69 text

What's new in design tools Design & Tools 69

Slide 70

Slide 70 text

What's new in the Design tool ツール系新機能 ConstraintLayout & MotionLayout 70 ● Accessibility integration ● Layout Validation ● Motion Editor ● Layout Inspector ● AVD Preview ConstraintLayout 2.0 ● Flow virtual layoutで複雑な画面が 作れるように ● Companion Motion Editor ConstraintLayout 2.1 ● Baseline constraintの指定方法や マイナスのmargin指定などの新し い機能の追加 ● Carousel ● MotionEffect ● など ConstraintLayout in Compose ● ConstraintSetを抜き出すことがで きる。 MotionLayout Light ComposeでMotionLayoutができるも の(未完成) Composeのプレビューの機能 Compose ConstraintLayout

Slide 71

Slide 71 text

What's new in the Design tool ツール系新機能 ConstraintLayout & MotionLayout 71 ● Accessibility integration ● Layout Validation ● Motion Editor ● Layout Inspector ● AVD Preview ● ConstraintLayout 2.0 ● Flow virtual layoutで複雑な画面が 作れるように ● Companion Motion Editor ConstraintLayout 2.1 ● Baseline constraintの指定方法や マイナスのmargin指定などの新し い機能の追加 ● Carousel ● MotionEffect ● など ConstraintLayout in Compose ● ConstraintSetを抜き出すことがで きる。 MotionLayout Light ComposeでMotionLayoutができるも の(未完成) Composeのプレビューの機能 Compose ConstraintLayout

Slide 72

Slide 72 text

What's new in the Design tool ヘルパーオブジェクトの追加 72 Carousel 非常に複雑な外観を持つインパクトが大きい美しい アニメーションをかんたんに作成できる ほとんどプログラミングする必要がない

Slide 73

Slide 73 text

What's new in the Design tool ヘルパーオブジェクトの追加 73 MotionEffect MotionLayoutで利用できるヘルパー オブジェクト アニメーションの動く 方向を単方向に制限することで 快適なイメーションを作れる MotionEffectなし MotionEffectあり

Slide 74

Slide 74 text

What's new in the Design tool ツール系新機能 ConstraintLayout & MotionLayout 74 ● Accessibility integration ● Layout Validation ● Motion Editor ● Layout Inspector ● AVD Preview ● ConstraintLayout 2.0 ● Flow virtual layoutで複雑な画面が 作れるように ● Companion Motion Editor ConstraintLayout 2.1 ● Baseline constraintの指定方法や マイナスのmargin指定などの新し い機能の追加 ● Carousel ● MotionEffect ● など ConstraintLayout in Compose ● ConstraintSetを抜き出すことがで きる。 MotionLayout Light ComposeでMotionLayoutができるも の(未完成) Composeのプレビューの機能 Compose ConstraintLayout

Slide 75

Slide 75 text

What's new in the Design tool ConstraintLayout in Compose 75 Composeの ConstraintLayoutに機能が増 えているので、 ちょっと基本的なところから見 ていきます。

Slide 76

Slide 76 text

ConstraintLayout in Compose 76 constrainAsで制約を書くこと で 画像のようにレイアウトを書くこ とができる

Slide 77

Slide 77 text

ConstraintLayout in Compose 77 レイアウトの制約(ConstraintSet)をレ イアウトと 分離して書くことができる

Slide 78

Slide 78 text

ConstraintLayout in Compose 78 このConstraintSet(レイアウト の制約)はjsonから作ることが できる。 (サーバーから取得した値とか も使えるかも??)

Slide 79

Slide 79 text

MotionLayout Lite🕵 79 Composeで、 MotionLayoutを使って ConstraintSetを2つ作って progressを渡すことで、 間をアニメーションさせることが できる。 (このスライドを書いている時ま だ未リリース) GitHubのコードにはマージ済 み

Slide 80

Slide 80 text

What's new in the Design tool 80 ConstraintLayoutのリポジトリに CarouselやMotionEffectや MotionLayout Liteなどを 試せるプロジェクトが置いてある🕵 https://github.com/androidx/constraintlay out ConstraintLayoutのリポジトリにい ろんなサンプルが🕵

Slide 81

Slide 81 text

Summary 81 What’s new in Jetpack Measuring Jank and Startup with Macrobenchmark What’s new in Android development tools What's new in Android Gradle Plugin What's new in Android testing tools What's new in the Design tool Jetpack Tool 下記のJetpackとToolについてと、 試してみて発見したことなどを見ていき ました🕵

Slide 82

Slide 82 text

82 And so much more...

Slide 83

Slide 83 text

Thank you! 83 takahirom(@new_runnable) Takahiro Menju Google Developers Expert for Android CyberAgent, Inc. ABEMA DroidKaigi App Owner