Androidアプリエンジニアがよく見るサイトとチュートリアル

Android アプリエンジニアがよく見るであろうサイトや、Android アプリ開発を勉強するときにどこから手をつければいいのか学習のチュートリアルを紹介しようと思います。　　

## 公式ドキュメント
- [Android の公式ドキュメント](https://developer.android.com/)
    - 日本語のページは情報が古く更新されていない時がよくあるため、公式ドキュメントのページを見るときは `?hl=en` をつけて極力英語のページを見るようにしましょう
- [Kotlin の公式ドキュメント](https://kotlinlang.org/)
- [Material Design の公式ドキュメント](https://material.io/)

## 開発環境
- [Android Studio](https://developer.android.com/studio?hl=en)
    - プレビュー版は[こっち](https://developer.android.com/studio/preview?hl=en)   


## 情報収集
- [Android Code Search](https://cs.android.com/)
    - Jetpack や Android のコードを検索できるサイト
        - 今後リリース予定のライブラリの実装やライブラリのコードを検索するときに使うことがある
    - Jetpack に関しては [GitHub にミラー](https://github.com/androidx/androidx)が存在するのでこちらの方が慣れていて見やすい場合もある
- [AndroidX releases](https://developer.android.com/jetpack/androidx/versions?hl=en)
    - Jetpack のライブラリが更新されたらここにリリースノートが記載される
        - alpha / beta のライブラリの変更まで追いかけることができると今後の実装方針とかを立てやすくなる
        - [Ian Lake 氏の Twitter](https://twitter.com/ianhlake)でもよく更新内容のまとめを流してくれるのでフォローしておくのもおすすめ
- [Android Dagashi](https://androiddagashi.github.io)
    - 1 週間の Android 関連の情報をまとめてくれているサイト
        - 毎週日曜の夜に更新されるので、これを見ておくだけでも Android アプリ開発周りの情報を知ることができる
- [Android Developers Blog](https://android-developers.googleblog.com/)
    - Android だけでなく Google Play の更新情報も掲載される
- [公式 YouTube チャンネル](https://www.youtube.com/user/androiddevelopers)
    - Google I/O や Dev Summit のセッション動画や、Tips の動画もアップロードされているので、チャンネル登録しておきましょう
- Google I/O、Android Dev Summit
    - セッションの中で新しい OS バージョンの話や開発環境の話、ライブラリに今後実装予定の話、初心者向けの話もあったりするので、このイベントの内容はキャッチアップしましょう  
- [DroidKaigi](https://droidkaigi.jp/2021/)
    - 日本で行われる　Android アプリ開発の大型カンファレンス
        - Android アプリ開発に関係するセッションを見たり情報共有の場となっている
        - [YouTube チャンネル](https://www.youtube.com/channel/UCgK6L-PKx2OZBuhrQ6mmQZw)にセッションのアーカイブがあり、現在でも役に立つ知見がたくさんあるので見ることをおすすめ

## よく使われるライブラリ
- [material-components-android](https://github.com/material-components/material-components-android)
    - AndroidView で使用する Material Design のライブラリで Jetpack ではなく別のライブラリとして開発されている
- [Dagger/Hilt](https://github.com/google/dagger)
    - ドキュメントは[こちら](https://dagger.dev/)
        - Android 開発で公式ドキュメントにも記載されていて、よく利用される DI ライブラリ
- [Accompanist](https://github.com/google/accompanist)
    - Jetpack Compose で使う便利なライブラリ集
- [ConstraintLayout](https://github.com/androidx/constraintlayout)
    - Android View や Jetpack Compose で制約によるレイアウトをする場合に使用するライブラリ
    - ConstraintLayout のライブラリの中には MotionLayout という簡単にアニメーションを実装できる仕組みも含まれている
	

## よく参考にされる OSS プロジェクト
- [android/compose-sample](https://github.com/android/compose-samples)
    - Jetpack Compose のサンプルアプリ集
- [android/architecture-components-samples](https://github.com/android/architecture-components-samples)
    - Jetpack のライブラリのサンプルコードが集まったプロジェクト
- [android/sunflower](https://github.com/android/sunflower)
    - Jetpack のライブラリを使用したサンプルアプリ
- [android/user-interface-samples](https://github.com/android/user-interface-samples)
    - Widget や Drag and Drop などの UI 周りのサンプルコードが集まったプロジェクト
- [android/animation-samples](https://github.com/android/animation-samples)
    - アニメーション周りのサンプルコードが集まったプロジェクト
- [DroidKaigi/conference-app-2021](https://github.com/DroidKaigi/conference-app-2021)
    - DroidKaigi のアプリ
        - Jetpack Compose とか KMM とか最近のアプリ開発で使われるものを積極的に取り入れて開発されている
            - 初めての OSS への contribute としてこのプロジェクトに PR を出してみるのはおすすめ
- [google/iosched](https://github.com/google/iosched)
    - Google I/O のアプリ
        - 2021 年は Google I/O 自体がオンライン開催ということもありアプリの公開はなかったが、LargeScreen 対応が入るなどコードは更新されている
	

## 学習チュートリアル
- Android アプリ開発の勉強をするにあたり公式から [Codelabs](https://codelabs.developers.google.com/?cat=android) というものが用意されており、初心者向けのものから新しい技術を学ぶものまで様々な項目がある
    - Codelabs には数多くの項目がありどこから始めればいいかわからないということもあり、初心者用に [Training](https://developer.android.com/courses?hl=en) のページが用意されている

### 初心者向け
- [Android Basics in Kotlin](https://developer.android.com/courses/android-basics-kotlin/course?hl=en)
    - Kotlin を用いた Android アプリ開発の基本コース
    - プロジェクトの作成、レイアウト、Navigation、Retrofit、coroutines、Room、WorkManager など Android アプリ開発に必要な知識が一通り得ることができる
- [kotlin-bootcamp](https://developer.android.com/courses/kotlin-bootcamp/overview?hl=en)
    - Kotlin の言語機能をメインに勉強するコース
- [pathways/coroutines](https://developer.android.com/courses/pathways/android-coroutines)
    - Kotlin coroutines の基本的なことから Jetpack のライブラリとの連携を一通り勉強するコース
        - Kotlin coroutines の深いところまでは触れられていないので、これと合わせて [Kotlin から出ているチュートリアル](https://kotlinlang.org/docs/coroutines-overview.html#tutorials)も見てみることをおすすめ

### ワンランク上を目指す
- [pathways/compose](https://developer.android.com/courses/pathways/compose)
    - Jetpack Compose を用いた開発を一通り学べるコース
        - これを一通りすると Jetpack Compose 開発に必要な知識がおおよそ身につくが、結構ボリュームがある
- [pathways/android-architecture](https://developer.android.com/courses/pathways/android-architecture)
    - Android アプリ開発の[アーキテクチャガイド](https://developer.android.com/jetpack/guide?hl=en)が 2021/12/15 に更新され、そのアーキテクチャを学ぶことができるコース