2019年1月におけるAndroid開発状況

2019年1月におけるAndroid開発状況について簡単にまとめておきます。

ぼくが感じる個人的見解なので、人によっては違う印象だと思います。あくまで参考程度にしてもらえると。

Kotlin

おそらく、ほとんどのプロジェクトがKotlinで書かれてると思います。新規プロジェクトでJavaを選択するのはかなりレアなのかと思います。

公式ドキュメントもKotlinでの記述が増えてますし、ktxとして便利な拡張関数も提供されてます。

Coroutines

去年正式にリリースされたCoroutinesですが、まだ無理に入れる必要はないかなと思っています。特に既存プロジェクトに関しては。

新規プロジェクトに関しては導入するのもアリだと思いますが、必ずチームで相談しましょう。

Jetpackも対応が進んでるので、いずれはCoroutinesが当たり前になるかもしれません。

今すぐ慌ててやる必要はないと思いますが、しっかり素振りをしておく必要があると思っています。

Jetpack

最近はGoogleがいろいろ便利なライブラリを提供してくれてるので、必要なものをどんどん使っていきましょう。

以下に積極的に使ったほうが良いものを上げておきます。

DataBinding

嫌いな方もいるかと思いますが、個人的には必須なものだと思っています。Viewへの反映が楽になるので便利です。

ViewModel

画面回転時のデータの保持や、Fragment間のデータ共有などで使えます。あとは今後Foldable Phone対応でも必要になってくるでしょう

LiveData

データの変更通知に使います。ViewModelやDataBindingと一緒に使われることが多いですね。

ConstraintLayout

特別な理由がなければConstraintLayoutを使ったほうがレイアウトが組みやすいし、変にネストしないので良いと思います。
あと慣れないうちはXMLを直接触るのではなく、GUIで組むようにしたほうが良いでしょう。(下手にXMLだけでやると、変な制約でたまたま動いてるようなレイアウトになりますので)

Room

今だとSQLiteを使うときはコレ一択ではないですかね。Pagingなんかとも組み合わせられるし、Coroutinesにも対応してたりします。

その他

PagingやWorkManagerなどは必要に応じて使っていくと良いと思います。個人的にはNavigationに期待してます。

AndroidX

Support Libraryが28までなので、今後はAndroidXに移行していく必要があります。

新し目のプロジェクトだとそこまで大変ではないと思いますが、古いプロジェクトだと移行がだいぶ大変になってきます。しっかり計画を立てて早めに移行するようにしたほうが良いでしょう。Third-partyライブラリがブロッカーになってたりもするので、そのあたりもしっかり確認しましょう。

AndroidXはAOSPでオープンに開発されてるので、Gerritを眺めるのも面白いかもしれません。

設計

MVC、MVP、MVVM、Fluxなどなど、色々あると思いますが、個人的にはGoogleが推奨している設計に従ったほうが、Jetpackと相性が良いので、簡単に使えたり、新しいものも入れやすくなると思います。

MVVM + Repositoryパターンですね。

DI

最も多いのはDagger2だと思いますが、だいぶ学習コストが高いのが難点ですね。ただ、Googleのサンプルではよく使われてるので、知っておくとコードを読むとき助けになると思います。

最近よく聞くのはKOINですかね。Dagger2に比べるとだいぶ理解しやすいと思います。ただ、設定をミスすると実行時エラーになるので注意が必要ですね。

どちらを使うべきかは、チーム内でよく検討したほうが良いかなと思います。(個人的はDagger2推しですが)

Multi Module

これはやってる人もいるかと思いますが、Dynamic Featureに対応するかどうかで依存関係が逆になるので、注意が必要です。

以下の記事が参考になると思います。

DI使ってる場合は更に工夫が必要なので、意外と大変だったりします。

Android App Bundle

aabですね。インストール時のアプリ容量が減るので、可能なら移行したほうが良いでしょう。ただ、動作確認がPlayConsoleの内部テスト等を使う必要があるので、ちょっと面倒ですね。

Multi Platform

Kotlin/NativeでMulti Platformをやるっていうのも今は選択肢としてあります。モデルの部分なんかはやりやすそうですね。まだこのあたりは事例も少ないですが、チャレンジとしては面白そうです。

まとめ

簡単にまとめましたが、Architecture Componentsが登場してからはGoogleが良いものをどんどん提供してくれてるので、それに乗っかるようにするのが、安心なのかなと思っています。