2025年にAndroidアプリを作る
(dev.to)最近の基準でのAndroidアプリ開発環境の紹介
- ビルド: gradle
- ビルド設定: convention plugin
- 依存関係管理: version catalog
- build cache の導入
- ビルド性能分析: build-scan
- モジュール構成: featureごとに分離
- ネットワーキング - retrofit
- jsonマッピング - kotlinx serialization
- 永続データ保存 - jetpack datastore, room
- DI - koin
- 画像ローダー - coil
- UI - compose
- View と ViewModel 間のコミュニケーション - flow
- コード品質管理 - ktlint , konsist
- 単体テスト - junit 4
7件のコメント
良い記事をありがとうございます
たまたまAndroidアプリのビルドエンジニアとして落ち着いた立場の人間として意見を残すなら……
> ビルド : gradle
非常に大規模だったり複雑だったりしても、gradle を使うべきです……(遠い目)
非常に大規模または複雑なプロジェクトで gradle のビルド性能を改善するために、以下のプロジェクトが進められているので、大きなプロジェクトで gradle を使用中なら、早め早めにマイグレーションの準備をしておくとよいです。
> モジュール構成 : feature ごとに分離
個人的には、アーキテクチャレイヤーをあえてビルドシステムに露出させる理由はないと思っています。
私が管理しているアプリでは、feature-api / feature-impl というモジュールをビルドシステムに露出させるようにしています。
このように構成すると、feature-impl のコード変更が feature-api を参照する他のモジュールに影響を与えないため(依存性の分離)、incremental build や build cache hit rate の向上に大いに役立ちます。
> 単体テスト - junit 4
これは Google の決定が大きな役割を果たしたように思います。
しかし、最近リリースされた screenshot testing plugin は JUnit5 ベースです.
とはいえ、最新技術(?)を導入しようとすると JUnit4 が足かせになることがしばしばあるので、個人的には JUnit5 へ移行してほしいというささやかな願いがあります。
https://docs.gradle.com/develocity/test-distribution/
junit-vintage-engineを使えば大きな修正なしに junit4 のテストを junit5 で動かすことはできますが、オーバーヘッドがかなり大きいです。(おおよそ 20% ほど遅くなります)わあ、一族の栄光ですね
ウィルソンです!
うーん……余談ですが、ここ数年の間に、スタートアップの多くはFlutterを採用する一方で、METAやOpenAIのような大企業はネイティブに向かうという奇妙な現象が見られていますね……
ちょうど今年 Android アプリを作ってみようと思っていたので、役に立つ指針になりました。笑