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

Image for post
Image for post
Photo by Moritz Knöringer on Unsplash

今年もAndroid開発状況を個人的な観点からまとめたいと思います。
去年のはこちら

Kotlin

Kotlinはもう言うことは特にないですね。

個人的には KSP がどうなるかが気になるところですね。

Coroutines

Android11のリリースと合わせて正式にCoroutinesが推奨される非同期処理となりました。(あとAsyncTaskがDeprecatedになりましたね)

これまで以上にCoroutinesを使っていく場面が増えてくると思いますし、Jetpackライブラリでも当たり前のように使われていくと思います。

また、StateFlowSharedFlowなどの便利なものも出てきています。

まだ触ったことない方はぜひチャレンジしてみてください。

https://developer.android.com/kotlin/coroutines

既存アプリで移行すべきかどうかはプロジェクト内で決めてもらうのが良いですが、ぼくが今やってるのは少しずつ移行しはじめています。

Jetpack Compose

これを書いてる時点ではまだalphaですが、動かせる状況になってきましたし、ドキュメントも出てきました。これまでのViewシステムとは異なるので、ぜひ一度触っておくことをオススメします。

https://developer.android.com/jetpack/compose

実際のプロダクションに投入するにはまだ厳しいとは思います。実際に主流になるには1年くらい後になるのかなって思っています。

個人としてはベータリリースくらいで一度プロダクションでチャレンジしてみようかなって画策してたりします。

Androidとは別ですがCompose for Desktopもあるので、こちらも注目したいです。

Android Studio

大きな変化としては、Android Studio(AS)とAndroid Gradle Plugin(AGP)のバージョンが分かれることになりました。

ASはIntelliJに合わせた形になり、AGPはGradleに合わせた形になります。しばらくは同時にリリースされるらしいです。

これが良い方向にいけばよいですが、個別にアップデートするとバグったりするんじゃないかなぁって心配してます。このあたりは様子をみながらやっていったほうが良さそうです。

あと、Aから始まるコードネームシリーズが始まりましたね。Androidのバージョンで断念したのに、またやるんだっていうのが率直な感想です。

Jetpack

去年もたくさんアップデートがありました。

https://developer.android.com/jetpack/androidx/versions

個人的に気になったのをいくつかピックアップします。

Paging

念願の3.0がでました。実装はだいぶ楽になってます。またKotlinで実装されていてCoroutinesにも対応しています。

https://developer.android.com/topic/libraries/architecture/paging/v3-overview

これまで触ってなかった人にとっても導入しやすいかなと思います。

Fragment

Fragmentの管理について内部実装が新しくなりました。詳しくは以下の記事を読んでもらえると。

Fragment 1.3.0-alpha08からはデフォルトで有効になっています。

残念ながら去年のうちにMultiple back stacksのサポートは入りませんでしたが、今年は期待したいです。

https://issuetracker.google.com/issues/80029773

DataStore

SharedPreferencesの置き換えを目的とした新しいライブラリが発表されています。

まだalphaですが、今後はこちらをつかっていくようになると思います。
まだちゃんと触ってないのでやっていきたいと思いますが、既存アプリの移行は大変そうだなぁって。

GitHub

これまでずっとAOSP上で開発が進んでいましたが、いくつかのライブラリはGitHubでもコントリビュートできるようになりました。

Dagger

Hiltの登場によってDaggerに対する学習コストを下げることが可能になり、導入しやすくなりました。これまでDaggerを触ってきた人にとっても記述が簡単になりメリットも大きいです。

https://developer.android.com/training/dependency-injection/hilt-android

Daggerを敬遠してた人も再チャレンジしてみると良いと思います。

マルチプラットフォーム

去年からFlutterがかなり盛り上がってきています。ぼくは随分前に少し触った程度なので詳しくはないのですが、コミュニティも盛り上がってますし、プロダクションで使用してるところも増えてきてます。今年も引き続き勢いはあるのかなって思います。

一方で、Kotlin Multiplatform Mobile (KMM)もあります。こちらは国内では採用事例は少ないかなとは思いますが、今年はもう少し盛り上がってほしいなって思ってたりします。

個人としてはマルチプラットフォームはトラウマ的なものがあって、かなり慎重になっています。KMMのほうは既存アプリを段階的に移行もできますし、あとから剥がすことも可能になってるので、個人的にはこちらをやっていきたいなって思ってます。あと、Jetpack Composeも使いたいので。

初学者にとって

個人的に一番危惧してることですが、初学者がどこから学べばよいのか分かりにくくなってるし、範囲が広くなってきています。

ただ、学習に使えるCodelabなどはあるので、それらをうまく活用していくのが良いのかなって思います。

https://developer.android.com/courses/android-basics-kotlin/course

https://codelabs.developers.google.com/?cat=android

インターネットには古い情報もあるので、必ず公式ドキュメントを見る癖をつけることを強くオススメします。

まとめ

引き続きAndroid開発の進化は早い状況です。Jetpack Composeによって、これまでのViewシステムとは別の思考が必要になったりもします。また、FlutterやKMMなどのマルチプラットフォームも出てきています。

選択肢も多い中でどうするかを自分たちのプロジェクトでしっかり見極めていきましょう。

今年もたくさんのアップデートがあると思うので、ぼく個人としても色々紹介していきたいなと思います。

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store