以前、記念日を忘れないためのWebアプリを作りました。
しかし、致命的な弱点がありました。それはオンラインじゃないと動かないということです。つまり、飛行機で上空にいるタイミングで「もう少しで結婚記念日だわね〜」みたいな会話になった時に、何年目だっけ!?というのをすぐに確認できません!!!
というわけでAndroidアプリとしてオフラインで動くように作りました。あと通知でリマインドする機能も追加。これでばっちりです。
開発メモ
という理由に加えて、2020年になってから久しぶりに仕事でもガッツリとAndroidアプリ開発に携わることにもなったので、練習がてら作り初めてみたのです。
久しぶりのAndroidアプリ開発は、以前と比べてとても快適になっていました。これまでにもいろいろなアーキテクチャやコンポーネントがありましたが、2020年時点では Jetpack というラベル付けで提供されるものを使うと良さそうです。
快適とはいえ学ぶことは多かったので、どんなことを調べたっけなというのをメモ。
Kotlin
プログラミング言語はJavaではなくKotlinになってる。Kotlin Bootcamp Courseというcodelabをやりつつ公式ドキュメントを参照するというのをやった。Kotlin イン・アクション という本も読んだけどKotlinのバージョンが古いので、こちらも公式ドキュメントを参照しながら。特にCoroutine周りは公式ドキュメントが読みながらコード書いてみるのが良い。
- Reference - Kotlin Programming Language
- codelab: Kotlin Bootcamp Course
- Kotlinイン・アクション
- Coroutins Guide
Jetpack
Kotlinを使ったAndroidアプリ開発のcodelabをやった。Jetpackコンポーネントも使いつつなので良い。
Android KTXを使うといろいろ便利。以下をよく使う。
- Fragment KTXの
by viewModels
- Lifecycle KTXの
viewLifeCycleOwner
codelabが終わったらすぐに以下の記事を読んでおけばよかった。
Dagger
DIコンテナ。Android DevelopersにもDaggerのページがあるし、codelabも用意されているのでデファクトスタンダード感。これらのドキュメントのViewModelはJetpackのViewModelではないのでちょっと混乱した...
- Dependency injection in Android | Android デベロッパー | Android Developers
- codelab: Using Dagger in your Android app - Kotlin
Dagger単体ならまだしもAndroidと合わせて使うと難しい。この本読みながらいろいろ試行錯誤した。
DaggerのAndroid拡張はドキュメントや本を読んでもスッと入ってこない。SubComponentを良い感じに取り扱う方法は結局よく分からず。
テスト
テストはユニットテストをちょっとしか書けていない。ViewModelとLiveDataを使ったテストは難しい。。いろいろ読み漁った。
- codelab: Advanced Android in Kotlin 05.1: Testing Basics
- Android Architecture Componentとテスト2019年7月版 / Testing Android Architecture Components in 2019-07 - Speaker Deck
- Easy Coroutines in Android: viewModelScope - Android Developers - Medium
- kotlinx-coroutines-test
- LiveDataのUnitTest - Kenji Abe - Medium
しかもJUnit5を普通に使うだけだとうまくいかないのを解決できずJUnit4を使ってる。Androidのコンポーネントに依存しないテストはJUnit5で書くなどして、バージョン4と5が混在しても大丈夫。あんまり覚えてないけど、この記事ぱらぱらと読んだ気がする...。
モックライブラリのMockKは使いやすいと思った。
一覧画面
codelabには出てこないけどやりたかったこと。
スクロールするとUIにないデータを取りにいくという処理はpagingを使う。
スクロールに応じてToolbarやFloating Action Buttonを動かすにはCoodinateLayoutを使う。
UIの細かいところ
角丸にするのがよく分からなかったり...
リップル対応したり...
アイコン
こちらを使って W
の1文字で...
ライセンス表記
使用しているライブラリのライセンス表示はこちらを使って。
開発中のデバッグ
このスライドがとても参考になった。
おしまい
Androidは自分のためのアプリをつくって日常で使えて良いですね!