初Androidアプリ開発 学習内容備忘録


# 内容

初Androidアプリ開発で学習した流れの備忘録、リンク集
（※ 学習中のため、今後も更新予定）

# アプリ アーキテクチャ

[アプリのコンポーネント](https://developer.android.com/guide/components/fundamentals?hl=ja#Components)

[初めての Android アプリを作成する](https://developer.android.com/codelabs/basic-android-kotlin-compose-first-app?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-1-pathway-2%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-first-app&%3Bhl=ja&hl=ja#0)
[Jetpack Composeを使ってみた](https://qiita.com/kota_2402/items/7bbdd87be8024785e25b)

[アプリ アーキテクチャ ガイド](https://developer.android.com/topic/architecture?hl=ja)

- [UI レイヤ](https://developer.android.com/topic/architecture/ui-layer?hl=ja)
- [ドメインレイヤ](https://developer.android.com/topic/architecture/domain-layer?hl=ja)
- [データレイヤ](https://developer.android.com/topic/architecture/data-layer?hl=ja)

[DroidKaigi 2018 - MVVMベストプラクティス](https://youtu.be/PVZSG_2RGqI): View, ViewModel, Modelの役割、関心の分離について

# Kotlin文法

- [Kotlin プログラミング言語を学ぶ](https://developer.android.com/kotlin/learn?hl=ja)
- [Kotlin文法 - 関数とラムダ](https://qiita.com/k5n/items/964d765767a65cc3de5b)
- [[Kotlin]はじめてのジェネリクス クラスや関数で使ってみよう！](https://pouhon.net/kotlin-generics/3627/)

# (open, enum, data, abstract, sealed) class, object, interface

- [A.2 Kotlin のクラス、オブジェクト、インタフェース](https://zenn.dev/msksgm/books/implementing-server-side-kotlin-development/viewer/appendix-a-02-object-of-kotlin)
- [継承可能なクラスを作成する (open, abstract, override)](https://maku77.github.io/kotlin/basic/extend.html)
- [Kotlinのsealed classを使いこなす](https://qiita.com/kikuchy/items/ad89a12029082be8d218)

`sealed interface`はサンプルコードのUiStateに使われている

# サンプルコード

[architecture-templates](https://github.com/android/architecture-templates/tree/base)

以下機能が含まれたサンプル

- Room Database
- Hilt
- ViewModel, read+write
- UI in Compose, list + write (Material3)
- Navigation
- Repository and data source
- Kotlin Coroutines and Flow
- Unit tests
- UI tests using fake data with Hilt

# DI（依存注入）, Hilt

- [依存性注入（Dependency Injection: DI）について理解する](https://zenn.dev/tokium_dev/articles/dependency-injection-watanabe)
- [Hiltの使い方](https://qiita.com/MoriokaReimen/items/750644062b3f5bec18ed)
- [AndroidでToDoアプリを作ってみるシリーズ「DIとHilt」](https://www.youtube.com/watch?v=2-B-X0NwrEM)

# Coroutines

- [【Android】はじめてのCoroutines](https://qiita.com/iTakahiro/items/e39533b7fc07573a14da#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB)
- [KotlinFest2019 「Kotlin コルーチンを理解しよう 2019](https://youtu.be/6Es0TADKByQ)

# Coroutines Flow, StateFlow, SharedFlow

- [Kotlin Coroutines Flow とは。](https://qiita.com/mi_iroha/items/78721a53cb113a82a1b1#flow%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9)
- [kotlin coroutinesのFlow, SharedFlow, StateFlowを整理する](https://at-sushi.work/blog/24/)
- [［Kotlin］ わかりやすく StateFlow の動作を解説してみる](https://qiita.com/kaleidot725/items/9710a560295a84363755)
- [StateFlow と SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow?hl=ja)

# UiState

- [UiStateを使った状態管理](https://star-zero.medium.com/uistate%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E7%8A%B6%E6%85%8B%E7%AE%A1%E7%90%86-4d88c6d575f0)

# Room

- [【Android】はじめてのRoom](https://qiita.com/iTakahiro/items/7e0d63140ae4dac10d18)

# Retrofit

- [【Android】Retrofit で HTTP 通信を行う](https://smile-jsp.hateblo.jp/entry/android/retrofit-basic)

# パッケージ、モジュール

各ファイルのトップにパッケージ名（`package xxx.yyy`）が記載されている
同パッケージのクラス、関数は参照可能

- [Packageとimportについて【Kotlin】](https://qiita.com/Soregashi1227/items/d295d16c9b8da94fc628)

可視性修飾子`internal`が付いたクラスは同モジュールからのみ参照可能

- [Kotlin - 可視性](https://blog.y-yuki.net/entry/2019/05/22/090000)
- [【Android】マルチモジュールって何？](https://qiita.com/mi_iroha/items/25ba51e0772c4aaf71e1)