Slide 1

Slide 1 text

Unleashing the Power of Android Studio mhidaka / Masahiro Hidaka

Slide 2

Slide 2 text

A Brief History of Android Studio Android Studio Electric Eel | 2022.1.1 Android Studio Flamingo | 2022.2.1 Android Studio Giraffe | 2022.3.1 Android Studio Hedgehog | 2023.1.1 Android Studio Iguana | 2023.2.1 E F G H I

Slide 3

Slide 3 text

Android Studio - Stable Release Timeline Electric Eel 2023.1 Giraffe🦒 2023.7 Flamingo🦩 ※Stable リリース日を基準として(筆者調べ) 2023.4

Slide 4

Slide 4 text

2023 . 2 . 1 バージョンの読み方 Android Studio Iguana IntelliJ 年次とmajorバージョン Studio mejorバージョン ..

Slide 5

Slide 5 text

主要な機能 Android Studioの 進化を正しく捉える ● UI Tools for coding ● Build system ● App Inspection 5

Slide 6

Slide 6 text

Android Studioを構成する主要機能 Android Studioの新機能をカテゴライズして理解することで活用を促進 ● IntelliJ : 統合開発環境として使いやすく。 ● UI Tools : コードを素早く、生産性を向上。 ● Build : ビルドを効率的に、無駄を排除。 ● Inspect : 不具合を減らし、高品位に。 6

Slide 7

Slide 7 text

IntelliJ 統合開発環境の新機能 ● 新しいUIテーマの採用 ● 不具合診断とレポート機能 ● JDK17 Bundle ● パフォーマンス改善 7

Slide 8

Slide 8 text

新しいUIテーマをサポート 見た目も、操作性もすっきり ● 視覚的な複雑さを軽減 ● 大事な機能へ楽にアクセス できる操作性 ● 利用タイミングに応じて複 雑な機能を段階的に公開し てわかりやすく 8 Giraffe https://www.jetbrains.com/help/idea/new-ui.html

Slide 9

Slide 9 text

診断ツールとバグレポート 新しいバグ報告ツールの登場 Help > Collect Logs and Diagnostic Data ログやシステム情報が 添付された状態での 報告が可能 Android Studio(IDE)の 改善スピード向上が目的 9 Giraffe

Slide 10

Slide 10 text

Android StudioにJDK 17がバンドル Flamingo Canary 3以降、Android Studio IDEにバンドルされるJDKが17に変更 ● FlamingoでのビルドがAndroid Gradle Plugin 8.0へ更新されたことに起因 ○ Electric EelまではAndroid Gradle Plugin 7.4でJDK11を利用 ● Android StudioにバンドルされたJDKを使うプロジェクトの場合、移行でビルドが 壊れる ○ Flamingo以上で動くようにプロジェクトを修正するべきだが、旧来の AGP 7.4(Gradle 7.4)もサ ポートしようと思ったら JVM指定に変更が必要。いわゆる「最新の Android Studioでしかビルドで きません」状態。 10 Flamingo

Slide 11

Slide 11 text

macOSのMetal APIに対応 Android Studio Flamingo以降ではmacOSのMetal APIに対応。レンダリング パ フォーマンスが向上しています。 ● IntelliJ 2022.2プラットフォームでの更新内容を取り込み。定期的な追従を可能に している。 ● その他にも ○ Android Gradle Plugin 8.0(Gradle 8.0)に移行 ○ Kotlinでコード ハイライト、補完、使用箇所の検索などのパフォーマンス向上 11 Flamingo

Slide 12

Slide 12 text

Note. Android Studio Versionと AGPの関係性 利用可能な最新に合わせると良いことが多い 12 AS version Recommend AGP (Gradle version) Iguana 8.3 (3.2-8.3)? Hedgehog 8.2 (3.2-8.2) Giraffe 8.1 (3.2-8.1) Flamingo 8.0 (3.2-8.0) Electric Eel 7.4 (3.2-7.4) https://developer.android.com/studio/releases より(筆者作図)

Slide 13

Slide 13 text

UI Tools コーディングを支える新機能 ● Live Edit ● デバイス・ミラーリング ● Compose Multipreview ● Dynamic color Preview ● Firebase Test Lab devices 13

Slide 14

Slide 14 text

Live EditがComposableに対応 Live Editがコンポーザブルの リアルタイム更新に対応 ● Live Editはアプリの再デプロイ をしなくても変更内容を反映で きる機能 ● コンポーザブルの変更にも対応 し、実行中のデバイス上で UIを すぐに確認できる 14 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html Android Gradle Plugin (AGP) 8.1 or higher and Jetpack Compose Runtime 1.3.0 or higher.

Slide 15

Slide 15 text

Live Editの利用方法 Settings > Editor > Live Edit > enable 15 Giraffe (Stable) Flamingo (Experimental) https://developer.android.com/jetpack/compose/tooling/iterative-development#limitations

Slide 16

Slide 16 text

デバイス・ミラーリング HedgehogからはRunning Devices windowに統合表示 ● 実機に触れずに IDEから操作できて便利 ● あまり知られてないが ファイルのドラッグ&ドロップが可能。 ファイルがAPKの場合はインストール。 その他の場合デバイスのダウンロード フォルダにコピーされる仕様。 16 Hedgehog Electric Eel (Experimental) https://developer.android.com/studio/preview/features#device-mirroring

Slide 17

Slide 17 text

Compose Multipreview templates 新しいマルチプレビューAPIの テンプレートが登場 @PreviewScreenSizes @PreviewFontScales @PreviewLightDark @PreviewDynamicColors 17 Hedgehog https://developer.android.com/studio/preview/features#compose-multipreview-templates

Slide 18

Slide 18 text

Dynamic color Preview Material 3のLook & Feelを 確認できるプレビュー機能 18 Flamingo https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html Themed app icon Preview

Slide 19

Slide 19 text

Compose Animation Previewでの新しいAPIサポート Animatiion PreviewがExtend animationに対応 ● animate*AsState ● CrossFade ● rememberInfiniteTransition ● AnimatedContent (updateTransitionとAnimatedVisibility含) 多くのCompose API をサポート。Composeアニメーション をデバッグできる新しいピッカーも追加 19 https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html Giraffe

Slide 20

Slide 20 text

Firebase Test Lab devices with Gradle Managed Devices Gradle Managed DevicesでFirebase Test Labのデバイスを使った自動インスト ルメント化テストが実行できるように。AGP 8.2.0-alpha03以降が必要。 大規模なテスト自動化、ビルドシステムとの統合による安定化、管理の完全性というメ リットを訴求。 20 Hedgehog https://developer.android.com/studio/preview/features#ftl-gmd Read more : Android Developers Scale your tests with Gradle Managed Devices

Slide 21

Slide 21 text

Build ビルドタイムをもっと短く ● Improved Sync ● Build Analyzer ● SDK Upgrade Assistant ● Kotlin DSL Gradle Script ● Version Catalog ● and more 21

Slide 22

Slide 22 text

Improved Sync performance Electric EelからGradle Sync時のプロジェクトインポートを並列実行化。パフォーマン スが向上。 このGradle 7.4ではGradle Syncの一部がデフォルトで並列実行される。そのため非 常に大規模なプロジェクトでSync速度向上(実測60%との報告) 22 Electric Eel

Slide 23

Slide 23 text

Note. Android Studioは ”統合”開発環境 Android Studio Giraffeに対応したプロジェク トと言った時、2種類に分類できる。 ● Giraffeで起動可能なプロジェクト ● Giraffeで扱える最新ビルド環境に更新し たプロジェクト GifaffeならGradle 8.1やAGP 8.1、Compose Runtimeライブラリなどのバージョン要件を満た すことで最大の効果を発揮 23 https://developer.android.com/studio/releases より(筆者作図)

Slide 24

Slide 24 text

ビルド時間を計測するBuild Analyzer Build Analyzerはビルドが遅い問題を解決するためのツール ● Electric Eel: ダウンロードの影響度合いを可視化 ● Flamingo: ビルドプロセスのカテゴリ表示 ● Giraffe: Gradle Sync中の予期しない依存関係ダウンロードの可視化 24 Electric Eel Flamingo Giraffe https://android-developers.googleblog.com/2023/01/android-studio-electric-eel.html https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html

Slide 25

Slide 25 text

Download impact in Build Analyzer 25 Electric Eel https://android-developers.googleblog.com/2023/01/android-studio-electric-eel.html

Slide 26

Slide 26 text

Build Analyzer task categorization Buildをタスクの種類やプラグインなどでカテゴライズ 26 Flamingo

Slide 27

Slide 27 text

依存関係のダウンロード時間とリポジトリごとのダウンロード時間が把握できる Gradle syncでのダウンロード統計 27 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html Read more : Android Developers Troubleshoot build performance with Build Analyzer

Slide 28

Slide 28 text

Android SDK Upgrade Assistant targetSdkVersionのアップグレードに必要な手順 を IDE の中で確認できる機能。アプリのメンテナンス の手間を省力化 ● Tools > Android SDK Upgrade Assistant ● アップグレード対応のドキュメント参照、破壊的 変更と対応方法などツールウインドウ内での確 認が可能に 28 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html

Slide 29

Slide 29 text

Gradle Build ScriptのKotlin DSL対応 Android Studio GiraffeからKotlin DSLがビルドスクリプトのデフォルトに変更 ● build.gradleがbuild.gradle.ktsに変更 ○ ビルドツールのGradle 8.2でのデフォルトはKotlin DSLに置き換え済み ※GiraffeはGradle 8.1なので時差があるものの方向性は一致 ● 可読性やコンパイル時チェック、Lintサポートなどがメリット ○ アプリと周辺環境の両方が Kotlinだけを覚えることで整う状況が望ましい(初学者やアプリ開発者 の習熟曲線がよい) 29 Giraffe https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds

Slide 30

Slide 30 text

Gradle Version Catalog対応 依存関係を 1 か所で管理し、マルチモジュールやプロジェクト間で依存関係を共有でき る機能。ウィザードでのデフォルトに。 ● HedgehogではTOMLファイルのVersion Catalog内でもコード補完(⌘+Space)および依 存関係の参照(⌘+B)が有効化 ● build.gradleファイルからもVersion Catalog内の宣言位置にジャンプ可能 30 Giraffe (Experimental) Hedgehog (Stable) https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html https://developer.android.com/studio/preview/features#gradle-version-catalogs Read more : Android Developers Migrate your build to version catalogs

Slide 31

Slide 31 text

[Windows] ウイルス対策ソフトによるビルド遅延を検出 WindowsのみのUpdate。 Build Analyzerがウイルス対策ソフトウェアによってビルド・パフォーマンスが悪化して いる可能性を検知(社内IT管理者に伝えて除外してもらいましょう)。 31 Hedgehog https://android-developers.googleblog.com/2023/07/android-studio-giraffe-is-stable.html

Slide 32

Slide 32 text

Baseline Profilesモジュールのウィザード File > New > New Module > Baseline Profile Generator モジュール ウィザードがベースラインプロ ファイルに対応。 アプリ起動を早くするためのプロファイル作 成が楽に(雛形の提供)。 32 Iguana https://developer.android.com/studio/preview/features#baseline-profiles-module-wizard

Slide 33

Slide 33 text

Inspect 不具合を減らし、品質を高める ● All-new Logcat ● Network Inspector ● App Quality Insights ● Compose Trace 33

Slide 34

Slide 34 text

Logcatの全面刷新 フィルタ、カスタマイズが便利に 使いやすく進化。 34 Electric Eel https://android-developers.googleblog.com/2023/01/android-studio-electric-eel.html

Slide 35

Slide 35 text

Network Inspector traffic interception 35 Flamingo https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html Network Inspectorがすべてのト ラフィックを表示できるように。 ステータス コード、応答ヘッダー や本文など通信内容がわかる ほか、監視したい独自ルールを 用意してアプリへの応答を書き 換え可能

Slide 36

Slide 36 text

App Quality Insightsを使った品質検査 IDEから直接、Firebase Crashlyticsレポートを確認できる機能。 スタックトレースからのジャンプやコードハイライト等 36 Electric Eel Flamingo https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html FlamingoではAndroid Studio内でNotesも追加できるアップデートを実施

Slide 37

Slide 37 text

Android vitals対応App Quality Insights 発生頻度や時期、デバイス やバージョンなどの条件でク ラッシュログの絞り込みに対 応 開発者はAndroid Studio 上での作業に集中でき、品 質向上に寄与 37 Hedgehog https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html

Slide 38

Slide 38 text

App Quality Insightsと バージョン管理システムを統合 gitとの統合でCrashlyticsのログからクラッシュが発 生した時点の関連コードに移動できるほか、ブラン チとの差分表示にも対応。 利用要件:gradle.propertiesに android.enableVcsInfo=trueを追加 - Android Gradle Plugin 8.3(最新α) - Crashlytics SDK v18.3またはFirebase Android Bill of Materials v32.0.0が必要 38 Iguana https://developer.android.com/studio/preview/features#aqi-vcs

Slide 39

Slide 39 text

Composeのトレース対応 Android StudioプロファイラでのSystem TraceがComposeに対応 実際にrecomposeされているCompose 関数を把握できるメリット - Compose UI: 1.3.0-beta01以上 - Compose Compiler: 1.3.0以上 39 Flamingo (experimental) https://developer.android.com/studio/releases/past-releases/as-flamingo-release-notes?hl=ja#compose-tracing

Slide 40

Slide 40 text

デバッグ中のCompose state情報表示 40 recompose調査に便利な機能 ● コンポーザブル関数にブレークポイン トを設定すると、デバッガでコンポー ザブルのパラメータとその状態を表 示できるように ● デバッガで止めることで、どの変更が 原因でrecomposeしたか、パラメー タの変更を特定可能 Hedgehog https://developer.android.com/studio/preview/features#compose-state-in-debugger

Slide 41

Slide 41 text

Test against configuration changes with the Espresso Device API ● Android Studio Iguanaではconfiguration changeに対するテスト機能を追加 ● Espresso Device API を使用してデバイスに回転 や画面の展開などの構成変更を再現 ○ 仮想デバイス上で構成変更をシミュレートしてテストするこ とから(実機ではないので)UIアクションごとに検証可能と なり信頼性が高まるとしている 41 Iguana https://developer.android.com/studio/preview/features#espresso-device-api

Slide 42

Slide 42 text

移行計画 Android Studioを使いこなす ● Android Studioの現在地 ● プロジェクト移行 42

Slide 43

Slide 43 text

Current Status of Android Studio 安定版、ベータ、プレビューの状況(2023/9/14現在) Android Studio Giraffe | 2022.3.1 Patch 1 Android Studio Hedgehog | 2023.1.1 Beta 4 Android Studio Iguana | 2023.2.1 Canary 3 Android Studio Iguana | 2023.2.1 Nightly 2023-9-11 Channel Stable Preview -Beta Preview - Canary Nightly https://androidstudio.googleblog.com/ Release Updatesより

Slide 44

Slide 44 text

Android Studioのリリースサイクル Android Studioはおおむね3ヶ月ごとのリリースサイクルを維持。 2023年9月現在、IguanaがでておりStudio Botなど新しい機能への期待も高い しかし近年の開発環境は高度化していて、維持したり新しい機能を使いこなしたりする 負担が増して、バランスに悩むのも事実 44 生産性 学びやすさ、開発しやすさ 複雑性 コードや機能の増加

Slide 45

Slide 45 text

Android Studioを使いこなすために Android Studioの新機能をIDE、UI Tools、ビルド、検査と分けて紹介しました。紹介し た順に導入しやすく、後半にいくほど開発プロジェクトへの影響範囲が広くなります。 ● 生産性を上げるためには、レガシー振り返り(現在地の評価)が重要 ○ メンテナンスを継続できるか。負債として剥がせなくなっていないか ● 公式の機能やライブラリをよく知ってエコシステムの中を泳ぐ開発計画 ○ 3ヶ月ごとの移行計画や開発効率を意識した環境構築、優先順位づけ 45

Slide 46

Slide 46 text

Unleashing the Power of Android Studio Thank you for watching ! mhidaka / Masahiro Hidaka [email protected]