Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DroidKaigi 2023 Unleashing the Power of Android Studio

mhidaka
September 14, 2023

DroidKaigi 2023 Unleashing the Power of Android Studio

知っていると役に立つ、アプリ開発の問題を解決する、あなたの知らないAndroid Studioの真の力を解き放ちましょう!

現在のアプリ開発はJetpack Composeの登場により新しい変化を迎えつつあります。一方で、たくさんの技術を組み合わせて動くことから、
効率的な開発や変化への追従が難しいと感じる方も多いのではないでしょうか。
セッションではAndroid Studioの最新機能を使ったデバッグ手法や生産性向上テクニックを紹介します。
開発者個人の生産性向上やチーム開発を加速する機能や手法についても触れるため初学者から業務利用者まで幅広い開発者を対象とします。

- プログラミングの生産性を向上するAndroid Studioの最新機能紹介
- 不具合につまずかないアプリ開発のためのデバッグ手法
- パフォーマンスと品質を両立するツール活用
- チーム開発をスムーズにするプロジェクト、IDE運用術

セッションは発表時点での最新バージョンのAndroid Studioを利用します(セッション応募時はAndroid Studio Hedgehogですが、これより新しいバージョンを利用する場合があります)

mhidaka

September 14, 2023
Tweet

More Decks by mhidaka

Other Decks in Technology

Transcript

  1. Unleashing
    the Power of Android Studio
    mhidaka / Masahiro Hidaka

    View Slide

  2. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 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

    View Slide

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

    View Slide

  12. 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 より(筆者作図)

    View Slide

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

    View Slide

  14. 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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 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

    View Slide

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

    View Slide

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

    View Slide

  23. 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 より(筆者作図)

    View Slide

  24. ビルド時間を計測する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

    View Slide

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

    View Slide

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

    View Slide

  27. 依存関係のダウンロード時間とリポジトリごとのダウンロード時間が把握できる
    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

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 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も追加できるアップデートを実施

    View Slide

  37. Android vitals対応App Quality Insights
    発生頻度や時期、デバイス
    やバージョンなどの条件でク
    ラッシュログの絞り込みに対

    開発者はAndroid Studio
    上での作業に集中でき、品
    質向上に寄与
    37
    Hedgehog
    https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html

    View Slide

  38. 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

    View Slide

  39. 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

    View Slide

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

    View Slide

  41. 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

    View Slide

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

    View Slide

  43. 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より

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide