(TBD) Jetpack Compose ではなく Android View で書いた方が実装早くすみませんか? と言われたときに考えること

「一旦 Android View で組んであとから Jetpack Compose 化したらどうですか? 最初から Jetpack Compose でやる必要なくないですか?」

と言われたときどうしよう案件

オチはない

基本的に説得材料集めるために書いてるので視点は偏っているし、裏付けがあるわけでない内容もあるので話半分で眺めてね


  • これ読んで
  • Google が時期主力 UI 開発ツールキットとして移行を推奨している
    • 開発リソースは Jetpack Compose へ寄っていくことが予想できる
  • 故に Android View はそのうちメンテナンスモードになる
    • https://twitter.com/JimSproch/status/1394978976700018690?s=20
      • もうメンテナンスモード入ってるぽい?
      • Jim Sproch 氏は Jetpack Compose 生みの親
    • 新機能の追加は限定的になっていく
    • 直接 Android View の話ではないが、 DataBinding(と ViewBinding) はメンテナンスモードへの移行がアナウンスされている
      • https://issuetracker.google.com/issues/173030256
      • これは DataBinding の依存する kapt がメンテナンスモードに入っているから
      • kapt 後継の ksp に対応する予定はない
      • kapt は Kotlin 2.0 で正式導入される K2 Compiler では現状サポートされていない
      • Jetpack Compose への移行が推奨されている
      • 実際に使えなくなることはそうないと思うが、これがなくなると Android View での開発は片腕をもがれたような状態になる
        • なにかのタイミングで deprecated されるかもしれないものに依存して開発を続けるのか?
  • Jetpack Compose は OS に組み込まれておらず、独立したライブラリ(群)として提供されている
    • Android View と異なり、クライアント OS のバージョンに関わらず最新の機能が使える
      • 不具合修正も同様に、アプリ側でライブラリの更新をすれば取り込める
  • 最近(といってもだいぶ昔からだけど)のトレンドである宣言的プログラミングを採用している
    • UI 定義とふるまいの定義が同じ場所にあるから、ファイルを行ったり来たりする無駄がない
  • Android View よりもテストが書きやすい
  • コードが少なくてすむ
    • 顕著なのは RecyclerView
  • Android View の方が実装速度はやい?
    • そんなことはない
    • しかし習熟度の関係で一時的に Android View で作ったほうが早い、と思われる場面はありそう
      • 書き直す時間まで考えると倍になる
      • 正直「書き直す時間がもらえるだろう」と確信できる信頼関係があるなら(あるいはいスケジュールに組み込んでもらえてるなら)、 Android View で書いちゃってもいいんでないの、とは思う
    • Jetpack Compose は拡張性を念頭に作られているので、カスタムコンポーネントは作成しやすい
    • Android View ではめんどくさくて諦めていたテストも書いているから、ちょっと時間はかかってるかもしれないがトータルで品質は上がっている説
      • テスト書いてる場合に限る
        • -> というかテスト書きましょう
  • ビルドがはやい
  • アプリサイズが小さくなる
  • 新技術へのモチベーションで効率アップ
  • そもそも「あとから Jetpack Compose 化」する機会は訪れるのか

基本的に

  • 今コストかかってるかもしれないが、長いスパンで見ると品質や開発速度は上がってますよ
  • そもそも「(習熟度の問題があるから) Android View のほうが早く実装できますよ」は幻想
  • Jetpack Compose で書くと技術広報や採用でもアピールできますよ
  • 価値観が合わないので転職しますね
    • 実際タイトルのようなことを言われてモヤッと/イラッとした、ということは良好な信頼関係気づけてない説ありません?

みたいな選択肢になるんじゃない(暴言がすぎる)