38 ポイント 投稿者 xguru 2025-03-12 | 7件のコメント | WhatsAppで共有

最近の基準での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件のコメント

 
kipsong133 2025-03-13

良い記事をありがとうございます

 
ganadist 2025-03-12

たまたまAndroidアプリのビルドエンジニアとして落ち着いた立場の人間として意見を残すなら……

> ビルド : gradle

非常に大規模だったり複雑だったりしても、gradle を使うべきです……(遠い目)
非常に大規模または複雑なプロジェクトで gradle のビルド性能を改善するために、以下のプロジェクトが進められているので、大きなプロジェクトで gradle を使用中なら、早め早めにマイグレーションの準備をしておくとよいです。

> モジュール構成 : feature ごとに分離

個人的には、アーキテクチャレイヤーをあえてビルドシステムに露出させる理由はないと思っています。
私が管理しているアプリでは、feature-api / feature-impl というモジュールをビルドシステムに露出させるようにしています。

  • feature-app :
    • データモデル、または他のモジュールと連携する interface
  • feature-impl:
    • feature の実際の実装

このように構成すると、feature-impl のコード変更が feature-api を参照する他のモジュールに影響を与えないため(依存性の分離)、incremental build や build cache hit rate の向上に大いに役立ちます。

> 単体テスト - junit 4

これは Google の決定が大きな役割を果たしたように思います。

 
ganadist 2025-03-12

とはいえ、最新技術(?)を導入しようとすると JUnit4 が足かせになることがしばしばあるので、個人的には JUnit5 へ移行してほしいというささやかな願いがあります。
https://docs.gradle.com/develocity/test-distribution/

junit-vintage-engine を使えば大きな修正なしに junit4 のテストを junit5 で動かすことはできますが、オーバーヘッドがかなり大きいです。(おおよそ 20% ほど遅くなります)

 
kingori 2025-03-12

わあ、一族の栄光ですね

 
gera1d 2025-03-14

ウィルソンです!

 
brainer 2025-03-12

うーん……余談ですが、ここ数年の間に、スタートアップの多くはFlutterを採用する一方で、METAやOpenAIのような大企業はネイティブに向かうという奇妙な現象が見られていますね……

 
tsboard 2025-03-12

ちょうど今年 Android アプリを作ってみようと思っていたので、役に立つ指針になりました。笑