Slide 1

Slide 1 text

これからはじめる Android開発

Slide 2

Slide 2 text

● Kenji Abe ● Android, Kotlin GDE ● Cookpad Inc. ● @STAR_ZERO About me

Slide 3

Slide 3 text

Android開発は難しい?

Slide 4

Slide 4 text

開発環境と言語

Slide 5

Slide 5 text

Android Studio ● IntelliJ IDEAベースのIDE ● Stable、RC、Beta、Alphaがある ● バージョンによって使える機能が異なる ○ https://developer.android.com/studio/releases ○ https://developer.android.com/studio/preview/features/

Slide 6

Slide 6 text

4.0: 3D View 4.1: Database Inspector 4.1: Emulator in Android Studio

Slide 7

Slide 7 text

● Java ● Kotlin ● C/C++ 言語

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

プロジェクト構成

Slide 11

Slide 11 text

● ソースコード ○ Java, Kotlin, C/C++ ● リソースファイル ○ Layout ○ String ○ Image ○ など プロジェクト構成

Slide 12

Slide 12 text

プロジェクト構成 ● AndroidManifest.xml ○ アプリの設定 ○ Activity, Serviceなどの定義 ○ 使用する権限 ○ 必要な端末機能 ○ https://developer.android.com/guide/topics/manifest/manif est-intro

Slide 13

Slide 13 text

プロジェクト構成 ● Gradle ○ ビルド設定 ○ ライブラリの依存関係 ○ アプリの設定 applicationId, sdkVersionなど ○ https://developer.android.com/studio/build

Slide 14

Slide 14 text

ライブラリ

Slide 15

Slide 15 text

Jetpack ● Android開発を加速させてくれるライブラリたち ○ バージョン互換 ○ ボイラープレートの軽減 ○ Kotlin拡張(ktx) ● プラットフォームAPIからは独立 ● 高頻度でアップデートされる ● https://developer.android.com/jetpack

Slide 16

Slide 16 text

代表的なJetpackライブラリ ● AppCompat ○ 古いOS互換、Material Design ● Lifecycle ○ Activity/Fragment等のライフサイクル管理 ○ LiveData/ViewModel ● Room ○ SQLiteへのアクセス

Slide 17

Slide 17 text

代表的なJetpackライブラリ ● Paging ○ RecyclerViewの簡単ページング ● Navigation ○ 主にFragment間の画面遷移 ○ Navigation Editorで画面遷移を定義 ● WorkManager ○ バックグラウンドタスク

Slide 18

Slide 18 text

よく使われるライブラリ ● Timber ○ ログ拡張 ● OkHttp, Retrofit ○ ネットワーク処理、APIアクセス ● Moshi, GSON, kotlinx.serialization ○ JSONパーサー

Slide 19

Slide 19 text

よく使われるライブラリ ● Glide, Coil, Picasso ○ 画像読み込み ● Dagger ○ DIライブラリ

Slide 20

Slide 20 text

知っておくと良いこと

Slide 21

Slide 21 text

ActivityとFragment ● Activityが画面の基本単位 ● FragmentはUI部品やロジックを持てる ○ 1つのActivityに複数のFragment ○ 独自のライフサイクル ● Jetpackのを必ず使う ○ andoridxのパッケージ ● https://developer.android.com/ guide/components/fragments

Slide 22

Slide 22 text

ライフサイクル ● Activity/Fragmentはライフサイクルがある ● 起動時、別画面に遷移したとき、バックグラウン ド移行したとき、など ○ onCreate, onStart, onStop, など ● 適切な箇所で処理する必要がある ● ActivityとFragmentでは異なる

Slide 23

Slide 23 text

https://developer.android.com/guide/components/activities/activity-lifecycle https://developer.android.com/guide/components/fragments

Slide 24

Slide 24 text

画面サイズ / 解像度 ● 端末によって画面サイズや解像度が異なる ● 解像度ごとに別の画像を指定できる ● テキストサイズはユーザーが変更可能 ● https://developer.android.com/training/multiscreen/screenden sities

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

● 権限によってはユーザーの許可が必要 ● <= Android 5.1: Install time ● >= Android 6: Runtime ● >= Android 11: One-time ● ユーザーは設定から許可を取り消せる ● 必ずベストプラクティスに従った実装する ● https://developer.android.com/guide/topics/permissions/overv iew Permission

Slide 27

Slide 27 text

apk / aab ● apk ○ 実行ファイルをまとめた圧縮ファイル ○ 端末に必要のないリソースファイルも含まれる ○ ファイルサイズが大きい

Slide 28

Slide 28 text

apk / aab ● aab (Android App Bundle) ○ Google Playから端末に必要なファイルのみ ダウロードされる ○ Dynamic Deliveryにも対応可能 ○ 2021年後半から新規アプリは必須予定 ○ https://developer.android.com/guide/app-bundle

Slide 29

Slide 29 text

apk lang: JA lang: EN lang: ES lang: DE lang: FR lang: KO mdpi hdpi xhdpi xxhdpi aab lang: JA xxhdpi

Slide 30

Slide 30 text

Architecture

Slide 31

Slide 31 text

Architecture ● MVVM, MVP, Flux ● Guide to app architecture ○ https://developer.android.com/jetpack/guide ○ アーキテクチャのガイド ○ Jetpackを使用、相性が良い

Slide 32

Slide 32 text

https://developer.android.com/jetpack/guide

Slide 33

Slide 33 text

Codelabs

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Documents/Link

Slide 39

Slide 39 text

ドキュメント ● Android Developers ○ https://developer.android.com/ ● Kotlin Programming Language ○ https://kotlinlang.org/

Slide 40

Slide 40 text

リリースノート ● Jetpack ○ https://developer.android.com/jetpack/androidx/versions/a ll-channel ● Android Studio ○ https://androidstudio.googleblog.com/

Slide 41

Slide 41 text

ブログなど ● 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/

Slide 42

Slide 42 text

ソースコード ● Android Code Search ○ https://cs.android.com/ ● GitHub ○ https://github.com/androidx

Slide 43

Slide 43 text

Thank you!