これからはじめるAndroid開発 / DevFest 2020

80a3a3857a55f154d23acb705eff72cc?s=47 star_zero
October 17, 2020

これからはじめるAndroid開発 / DevFest 2020

80a3a3857a55f154d23acb705eff72cc?s=128

star_zero

October 17, 2020
Tweet

Transcript

  1. これからはじめる Android開発

  2. • Kenji Abe • Android, Kotlin GDE • Cookpad Inc.

    • @STAR_ZERO About me
  3. Android開発は難しい?

  4. 開発環境と言語

  5. Android Studio • IntelliJ IDEAベースのIDE • Stable、RC、Beta、Alphaがある • バージョンによって使える機能が異なる ◦

    https://developer.android.com/studio/releases ◦ https://developer.android.com/studio/preview/features/
  6. 4.0: 3D View 4.1: Database Inspector 4.1: Emulator in Android

    Studio
  7. • Java • Kotlin • C/C++ 言語

  8. • 表現力と簡潔さ • Null Safety • Javaとの相互運用 • Kotlin Coroutines

    Kotlin
  9. Kotlin-first https://developer.android.com/kotlin/first

  10. プロジェクト構成

  11. • ソースコード ◦ Java, Kotlin, C/C++ • リソースファイル ◦ Layout

    ◦ String ◦ Image ◦ など プロジェクト構成
  12. プロジェクト構成 • AndroidManifest.xml ◦ アプリの設定 ◦ Activity, Serviceなどの定義 ◦ 使用する権限

    ◦ 必要な端末機能 ◦ https://developer.android.com/guide/topics/manifest/manif est-intro
  13. プロジェクト構成 • Gradle ◦ ビルド設定 ◦ ライブラリの依存関係 ◦ アプリの設定 applicationId,

    sdkVersionなど ◦ https://developer.android.com/studio/build
  14. ライブラリ

  15. Jetpack • Android開発を加速させてくれるライブラリたち ◦ バージョン互換 ◦ ボイラープレートの軽減 ◦ Kotlin拡張(ktx) •

    プラットフォームAPIからは独立 • 高頻度でアップデートされる • https://developer.android.com/jetpack
  16. 代表的なJetpackライブラリ • AppCompat ◦ 古いOS互換、Material Design • Lifecycle ◦ Activity/Fragment等のライフサイクル管理

    ◦ LiveData/ViewModel • Room ◦ SQLiteへのアクセス
  17. 代表的なJetpackライブラリ • Paging ◦ RecyclerViewの簡単ページング • Navigation ◦ 主にFragment間の画面遷移 ◦

    Navigation Editorで画面遷移を定義 • WorkManager ◦ バックグラウンドタスク
  18. よく使われるライブラリ • Timber ◦ ログ拡張 • OkHttp, Retrofit ◦ ネットワーク処理、APIアクセス

    • Moshi, GSON, kotlinx.serialization ◦ JSONパーサー
  19. よく使われるライブラリ • Glide, Coil, Picasso ◦ 画像読み込み • Dagger ◦

    DIライブラリ
  20. 知っておくと良いこと

  21. ActivityとFragment • Activityが画面の基本単位 • FragmentはUI部品やロジックを持てる ◦ 1つのActivityに複数のFragment ◦ 独自のライフサイクル •

    Jetpackのを必ず使う ◦ andoridxのパッケージ • https://developer.android.com/ guide/components/fragments
  22. ライフサイクル • Activity/Fragmentはライフサイクルがある • 起動時、別画面に遷移したとき、バックグラウン ド移行したとき、など ◦ onCreate, onStart, onStop,

    など • 適切な箇所で処理する必要がある • ActivityとFragmentでは異なる
  23. https://developer.android.com/guide/components/activities/activity-lifecycle https://developer.android.com/guide/components/fragments

  24. 画面サイズ / 解像度 • 端末によって画面サイズや解像度が異なる • 解像度ごとに別の画像を指定できる • テキストサイズはユーザーが変更可能 •

    https://developer.android.com/training/multiscreen/screenden sities
  25. Application Not Responding(ANR) • UIスレッドで時間のかかるような処理を行わない • アプリが反応しなくなったり、ANRダイアログが表 示される • 非同期で処理を行うようにする

    • https://developer.android.com/training/ articles/perf-anr
  26. • 権限によってはユーザーの許可が必要 • <= Android 5.1: Install time • >=

    Android 6: Runtime • >= Android 11: One-time • ユーザーは設定から許可を取り消せる • 必ずベストプラクティスに従った実装する • https://developer.android.com/guide/topics/permissions/overv iew Permission
  27. apk / aab • apk ◦ 実行ファイルをまとめた圧縮ファイル ◦ 端末に必要のないリソースファイルも含まれる ◦

    ファイルサイズが大きい
  28. apk / aab • aab (Android App Bundle) ◦ Google

    Playから端末に必要なファイルのみ ダウロードされる ◦ Dynamic Deliveryにも対応可能 ◦ 2021年後半から新規アプリは必須予定 ◦ https://developer.android.com/guide/app-bundle
  29. apk lang: JA lang: EN lang: ES lang: DE lang:

    FR lang: KO mdpi hdpi xhdpi xxhdpi aab lang: JA xxhdpi
  30. Architecture

  31. Architecture • MVVM, MVP, Flux • Guide to app architecture

    ◦ https://developer.android.com/jetpack/guide ◦ アーキテクチャのガイド ◦ Jetpackを使用、相性が良い
  32. https://developer.android.com/jetpack/guide

  33. Codelabs

  34. Codelabs • チュートリアル形式で学ぶことが出来る • 実際に手を動かしながら進めるので実装イメージ を理解しやすい • 古くて動かないのもあるで注意

  35. https://codelabs.developers.google.com/?cat=Android

  36. None
  37. https://developer.android.com/courses/android-basics-kotlin/course

  38. Documents/Link

  39. ドキュメント • Android Developers ◦ https://developer.android.com/ • Kotlin Programming Language

    ◦ https://kotlinlang.org/
  40. リリースノート • Jetpack ◦ https://developer.android.com/jetpack/androidx/versions/a ll-channel • Android Studio ◦

    https://androidstudio.googleblog.com/
  41. ブログなど • Android Developer Blog ◦ https://android-developers.googleblog.com/ • Android Developers

    (Medium) ◦ https://medium.com/androiddevelopers • Android Developers (Youtube Channel) ◦ https://www.youtube.com/c/AndroidDevelopers/
  42. ソースコード • Android Code Search ◦ https://cs.android.com/ • GitHub ◦

    https://github.com/androidx
  43. Thank you!