新しいAndroidプロジェクトを作るならこれ！Android設計＆Kotlin入門資料集2019

# この記事のターゲット
- 新しいAndroidプロジェクトの開発を始めるので、ベストプラクティスを知りたい
- Androidアプリの開発をやっているが、最近の設計をどこからキャッチアップしていいかわからない

# この記事に載っていないこと
- Androidアプリ開発の基本学習のための資料

# Android設計入門

[Androidアーキテクチャことはじめ ― 選定する意味と、MVP、Clean Architecture、MVVM、Fluxの特徴を理解する - エンジニアHub｜若手Webエンジニアのキャリアを考える！](https://employment.en-japan.com/engineerhub/entry/2018/01/17/110000)

## Jetpack（Android Architecture Components）

新しくプロジェクトを作るのであればJetpackをフル活用するべき。


> Jetpack は、優れた Android アプリを簡単に開発できるようにするための Android ソフトウェア コンポーネントのコレクションです。
> ─ [Android Jetpack](https://developer.android.com/jetpack)

[アプリのアーキテクチャ ガイド | Android Developers](https://developer.android.com/jetpack/docs/guide)

### 実践

[Kotlin + Architecture Component + Dagger2によるAndroidアプリ設計 - Qiita](https://qiita.com/satorufujiwara/items/0f95ccfc3820d3ee1370)

Google公式のAndroidArchitectureComponents実装サンプル集(2019/04/10追記)
[googlesamples/android-architecture-components: Samples for Android Architecture Components.](https://github.com/googlesamples/android-architecture-components)

## Flux

> データフローを単一方向にするアーキテクチャです。
Action、Dispatcher、Store、Viewという4つのコンポーネントがあり、それぞれ次のような役割を担っています。

[Flux | Application Architecture for Building User Interfaces](https://facebook.github.io/flux/)

### 実践

[Architecture Components + Flux (+ Kotlin)によるAndroidアプリ設計 - Qiita](https://qiita.com/satorufujiwara/items/dfc55fc2e0316ae5d8fe)

## DI

最近はレイヤードアーキテクチャにしてテストを書きやすくして、レイヤー間はDIで依存性注入するみたいな感じが主流になってきている。

[今日から始める依存性の注入 - DroidKaigi 2019](https://droidkaigi.jp/2019/timetable/69623/)

## テスト

テストについてはこれだけ読めばOK。

[PEAKS（ピークス）｜Androidテスト全書](https://peaks.cc/A1F05296/android_testing)

## 新規開発を始める前に

[新規チームで新規開発を始める時にやること - Speaker Deck](https://speakerdeck.com/kgmyshin/xin-gui-timudexin-gui-kai-fa-woshi-merushi-niyarukoto)

# Androidアプリ設計実装サンプル

## Android Architecture Blueprints

Googleが公式に公開している、TODOアプリを題材にした様々なAndroidアプリアーキテクチャの実装サンプル。

[googlesamples/android-architecture: A collection of samples to discuss and showcase different architectural tools and patterns for Android apps.](https://github.com/googlesamples/android-architecture)

## DroidKaigi公式アプリ

日本で最も参考になるオープンソースアプリ。

### 2019(Flux)
[DroidKaigi/conference-app-2019: The Official Conference App for DroidKaigi 2019 Tokyo](https://github.com/DroidKaigi/conference-app-2019)

### 2018(AAC)
[DroidKaigi/conference-app-2018: The Official Conference App for DroidKaigi 2018 Tokyo](https://github.com/DroidKaigi/conference-app-2018)


### 2017(MVVM)
[DroidKaigi/conference-app-2017: The Official Conference App for DroidKaigi 2017 Tokyo](https://github.com/DroidKaigi/conference-app-2017)

## Google Codelabs

各コンポーネントのサンプルコードライブラリ。

[Google Codelabs](https://codelabs.developers.google.com/?cat=Android)

# Kotlin入門

Javaで開発をやったことがあれば、この2つを読めばKotlinの感覚がつかめる。

[Google I/O 2017 : Introduction to Kotlin (和訳/要約) - Qiita](https://qiita.com/satorufujiwara/items/490c1499acec1a921258)

[Kotlin入門までの助走読本(PDF)](https://drive.google.com/file/d/0Bylpznm149-gTGRjOFRkWm9PODg/view)

### 公式サイト

Kotlinの最新の情報やリファレンスを読むなら公式サイトが確実。

[Kotlin Programming Language](https://kotlinlang.org/)

### オンラインチュートリアル

[Kotlin Koans: The Best Way To Learn Kotlin for Java Developers](https://play.kotlinlang.org/koans/overview)

### アンチパターン

[Kotlinアンチパターン | DroidKaigi 2018](https://droidkaigi.jp/2018/timetable?session=16969)

# あとがき

資料の多くは@konifarに紹介してもらいました。多謝！
他にもおすすめの資料があったら是非コメントしてください。