今年もAndroid開発状況を個人的な観点からまとめたいと思います。
去年のはこちら
Kotlin
Kotlinはもう言うことは特にないですね。
個人的には KSP がどうなるかが気になるところですね。
Coroutines
Android11のリリースと合わせて正式にCoroutinesが推奨される非同期処理となりました。(あとAsyncTaskがDeprecatedになりましたね)
これまで以上にCoroutinesを使っていく場面が増えてくると思いますし、Jetpackライブラリでも当たり前のように使われていくと思います。
また、StateFlowやSharedFlowなどの便利なものも出てきています。
まだ触ったことない方はぜひチャレンジしてみてください。
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などのマルチプラットフォームも出てきています。
選択肢も多い中でどうするかを自分たちのプロジェクトでしっかり見極めていきましょう。
今年もたくさんのアップデートがあると思うので、ぼく個人としても色々紹介していきたいなと思います。