ハンズオンで学ぶAndroid学習フロー(Kotlin編)　2018-8-4追記

# ハンズオンで学ぶAndroid
業務で必要だったので、Androidの開発の勉強を行いました。
Swiftに慣れているので言語はKotlinを選択しました。同じ境遇の方がいれば役立ててもらえると嬉しいです。

学習するにあたって有用と感じた記事を紹介しています。kotlin製のハンズオンを多く抑えてあるので、自分と同じ境遇でかつ手を動かして学習したい方にはおすすめです。

学習の仕方としては、一つ一つググって出てきた解説を読み漁って概要をつかんだあと、そのあとにハンズオン形式で実際にコードを書いて行くというやり方がいいと思います。

## 学習できる内容
優先順位が高そうなものから降順になっています。
##### ・android studioの使い方、レイアウトの仕方や画面遷移などの基本
##### ・[よく使う定番ライブラリ](http://kobakei.hatenadiary.jp/entry/2017/12/07/004503)
##### ・retrofit2、Gsonを用いたAPI通信
##### ・MVVMアーキテクチャとDataBinding
##### ・リアクティブプログラミング　(RxJava)
##### ・DI/ディペンデンシーインジェクション (Dagger2)

# 実際のフロー
## 1.androidのノリを掴む
[SCC2017-SlideShare](https://www.slideshare.net/KenjiSakashita/scc2017)
超シンプルでとっつきやすいハンズオン。まずはこれでノリを掴もう。

## 2.通信の仕方をサクッと学ぶ
[Kotlinで書くAndroidアプリハンズオン]
(https://qiita.com/deco/items/2f703f5b50653c194740#%E4%BD%BF%E7%94%A8%E3%81%99%E3%8I)
qiitaAPIを用いたハンズオン形式になっている。
APIリクエストの書き方がわかります。

---------------ここから重くなってくる---------------------------------------
## 3.DataBindingおよびLiveDataについて
[Android MVVM 設計2](http://nekojarashi.hatenablog.jp/entry/2018/01/19/Android_MVVM_%E8%A8%AD%E8%A8%88_2)
ハンズオン形式ではありませんが、githubにソースコードが上がっていて解説があるので十分参考になりました。

## 4.android architechture componentについて
[Android Architecture Components 初級 （ MVVM + LiveData 編 ）](https://qiita.com/Tsutou/items/69a28ebbd69b69e51703)
この記事にはお世話になった。~~javaで書かれてる以外は~~すごいよかった。

関連してmvvmについての理解をより深めたい方はどうぞ。スライドもついている。
[KotlinとDataBindingとMVVMとか](https://rei19.hatenablog.com/entry/2017/04/07/173435)
上記リンクについてdroid会議での[発表動画](https://academy.realm.io/jp/posts/droidkaigi17-mvvm-with-databinding/)もありました。

## 5.RxJava
リアクティブプログラミングという言葉自体は知っていたが、なんとなくハードルが高い気がしていて敬遠していた。業務で使っていると言うことなので、
[リアクティブプログラミングとRxJavaの概要]
(https://codezine.jp/article/detail/9570)
[【Android】RxJavaでコレクション操作、Http通信（非同期処理）を行うための知識
](https://qiita.com/Yuki_Yamada/items/a0855189988539c18b8f)
上記ふたつの記事でまず概要を掴むといいと思います。
CodeZineのマーブルダイアグラムの図の解説が理解に役立ちました。

## 6.DI (Dagger2)
概要
[Android Dagger2 with Kotlin](https://qiita.com/SYABU555/items/43b9d9edc100c92970d0)
ハンズオン
[Dagger2 + Retrofit2 + RxAndroidで通信してみる
](https://qiita.com/MuuKojima/items/8088b43876dc8d3d1745)今までの良い復習になる。なお言語はJava
## 7.総まとめ
[mvvm-with-kotlin-android-architecture-components-dagger-2-retrofit-and-rxandroid](https://proandroiddev.com/mvvm-with-kotlin-android-architecture-components-dagger-2-retrofit-and-rxandroid-1a4ebb38c699)
平易な英語かつ丁寧な解説。かつ今までやったことが全て出てきて非常に有用だった。お金とっていいレベルだと感じた教材でした。これが見つけられたかそうでないかで、雲泥の差だったと思う。かなりおすすめ。（Mediumって絶対良質な記事が多い）

## 所感
android architechture component周辺の理解が関門だった。全体的にKotlinでの記事が少なく学習しにくい部分があった。
MVVM,LiveData、DataBinding, RxJavaと概念が出てきたが上記の流れに沿って理解した。ことにしておく。
自分にマッチした記事さえ見つかればスムーズに学習を進めることができたので、やはり良い教材見つけるゲーだなと感じた。

論旨からは反れるがQiitaというサービスのありがたみを非常に感じた。
先人への畏敬の念を深めました。ありがとうございます！！

# 番外編
### ListViewとかAdapterとか
android独自の概念で馴染みがなかった。下の記事がよくまとまっている。
[【Android】ListViewを使うための基礎知識(1)
](http://outofmem.hatenablog.com/entry/2014/10/29/040510)おまけにこのブログで良質だと感じたものを紹介。[
【Android】【Retrofit】Retrofit 2.0.1使い方メモとハマりどころメモ](http://outofmem.hatenablog.com/entry/2016/04/15/005541)

### レイアウト
[LinearLayoutとRelativeLayoutの使い方をまとめてみた](http://d.hatena.ne.jp/Korsakov/20110131/1296504108)
ios開発者はこちらを参考にするとレイアウトについては問題ないんじゃないでしょうか

### ライブラリについて
[Android開発における定番ライブラリ22選
](http://kobakei.hatenadiary.jp/entry/2017/12/07/004503)よく使うものがまとめれれていてよかった

### Stack/Fragmentについて
Android独自の概念で学習が必要。大規模なアプリではFragmentの理解は必要なので別途学習しよう。追記したい。
追記　この記事を抑えておけばおkでした。
[AndroidStudioの標準デザインパターンで分かるFragment入門 - Qiita](https://qiita.com/Hoshi_7/items/bee2588397348a4e0105)