Slide 1

Slide 1 text

© 2025 ANDPAD All Rights Reserved. 1 読もう! Android build ドキュメント 2025-03-14 DroidKaigi.collect { #17@Tokyo } Shota Nagahori (@nashcft)

Slide 2

Slide 2 text

© 2025 ANDPAD All Rights Reserved. Confidential 2 自己紹介 ● Shota Nagahori ● SWE @ Chat team, ANDPAD Inc. ● X, GitHub, etc.: nashcft

Slide 3

Slide 3 text

© 2025 ANDPAD All Rights Reserved. Confidential 3 ある日の X の TL にて https://x.com/AndroidDev/status/1894477468846710844

Slide 4

Slide 4 text

© 2025 ANDPAD All Rights Reserved. Confidential 4 Android build に関するドキュメント更新のお知らせ ● ドキュメントの構成を整理したよ ● Android build overview のセクションを追加したよ ● 依存に関するページを2つ追加したよ ○ Verification のページ ○ Upgrade strategy のページ

Slide 5

Slide 5 text

© 2025 ANDPAD All Rights Reserved. Confidential 5 なるほど

Slide 6

Slide 6 text

© 2025 ANDPAD All Rights Reserved. Confidential 6 ということで (?) Android build のドキュメントを全部読んだ ● この辺ちゃんと読んだことがなかった のでとりあえず全部読んだ ● 皆さんは全部読む必要はないです ○ 特定のケースでのみ必要になる 情報みたいなのもあるので ● Zenn のスクラップにメモがある ○ https://zenn.dev/nashcft/scraps/84ff9 44b86428e https://x.com/nashcft/status/1896558871331893440

Slide 7

Slide 7 text

© 2025 ANDPAD All Rights Reserved. Confidential 7 おすすめページを4つ紹介 ● どちらかというと入門寄り ○ Android アプリ開発者が Gradle について学ぶならこの辺から読み始めるの が良さそう、というもの ○ Gradle のあれこれを「おまじない」ではなくするための知識をつける ● 方向性としては登場人物や役割、仕組みの把握に役立つページ ○ 「何をしているのか? 何が起きているのか?」という背景知識の獲得のため ○ 「〇〇をするにはどうしたらいいの?」の語彙や精度を高めるため

Slide 8

Slide 8 text

© 2025 ANDPAD All Rights Reserved. Confidential 8 おすすめ1: Gradle build overview ● https://developer.android.com/build/gradle-build-overview ● 新しいセクション Android build overview の overview ● Gradle というビルドシステムの世界観をざっくりと俯瞰 ○ e.g. ■ Task という実行単位を組み合わせて仕事をする ■ 設定は DSL で build file に、ロジックは plugin として分離して記述する ■ Project の外部のライブラリ等を取り込んで (依存して) 利用することができる ■ etc. ● このページだけ読んで何かできるようになるわけではないけど、コンセプトの把握・理解は 「筋の良い発想」ができるようになるための下地として重要

Slide 9

Slide 9 text

© 2025 ANDPAD All Rights Reserved. Confidential 9 おすすめその2: Configure your build ● https://developer.android.com/build ● Manage your build セクションの overview ● Android のビルド設定に関わるいくつかの概念と、 Gradle project に含まれる各種設定ファ イルの紹介 ● 皆さんが見たり開発したりしている (Android) Gradle project の中で出会うファイルたちが どんな役割を持っていて、それらに何を書くべきなのかが把握できる ○ そもそもそれらのファイルがどこにあるのかを知りたかったら Android build overview セクションの Android build structure のページを読もう ● Manage your build や Manage your dependencies セクションの各ページへの導入にもなる ○ これらのセクションは build.gradle 周辺で行う設定に関する話が多いので、慣れない内 はよく訪れることになるかも

Slide 10

Slide 10 text

© 2025 ANDPAD All Rights Reserved. Confidential 10 おすすめその3: Gradle dependency resolution ● https://developer.android.com/build/gradle-dependency-resolution ● 依存の扱われ方の話 ○ Project は外部ライブラリ等の依存を指定できる (直接依存) ○ 依存先も依存を持っていることがあるし、依存先の依存先も... ■ これらも project の依存として追加される (推移的依存) ○ 全ての依存を取得した結果、同じものがバージョン違いも含め複数取れることがある ■ Gradle は上手いこと重複を無くして成果物のサイズを抑えてくれる (ここの話) ● 直接依存を更新した時に全然違うところで壊れる原因でもある ● この仕組みを把握していると依存更新に関する調査 (影響を調べる時とか、悪さしている箇所 を探す時とか) で役に立つ

Slide 11

Slide 11 text

© 2025 ANDPAD All Rights Reserved. Confidential 11 おすすめ4: Upgrade dependency versions ● https://developer.android.com/build/version-upgrade-strategies ● 依存の更新でしくじらないためにすることまとめ、みたいなページ ○ このページだけ Gradle の仕組みではなく開発者の取り組みに関する話をしている ● 依存更新にはベネフィットだけでなく変更によるリスクもある ○ 推移的依存の存在もあってパッと見でわかりにくい変更影響があるみたいな文脈 ● リスクと正しく向き合うために考えること、やること ○ 依存の更新をするにあたって考慮することは何か? ○ 更新による影響調査・リスク分析ではどのようなことをしたら良いか? ○ リスクを回避する? 克服する? ● 割と内容盛りだくさんだけど、大切度が高いので頑張って読んでほしい

Slide 12

Slide 12 text

© 2025 ANDPAD All Rights Reserved. Confidential 12 おまけ: その他の所感 ● Gradle について Android 文脈で適度な分量に絞って体系的にまとめられた学習資料として扱 いやすいものが出たなという所感 ○ Gradle 入門として Android build overview, Manage your build, Manage dependencies 辺りを資料にして社内勉強会とかやったら良さそう ● Tool and library interdependencies は構成が現状あまり整理されていないので注意 ○ 「Tool と project 構成要素の関係の話」と「依存に関する話」を分けてほしい ○ Semantic versioning とか scope の話はここですることだろうか ● これすき: Java versions in Android builds ○ 「Gradle を実行する JDK」と「project のビルドに使う JDK」と「ビルドの成果物の 互換 Java バージョン (target JVM version)」は別々の設定だよ、という話 ○ AGP 8 への更新でビルドの実行に JDK 17 が要求された件でハチャメチャになった人た ちはこれを読んで今後の Java 関連の更新に備えましょう

Slide 13

Slide 13 text

© 2025 ANDPAD All Rights Reserved. Confidential 13 Thank you 🙏