Upgrade to Pro — share decks privately, control downloads, hide ads and more …

長期運用アプリのリファクタリングを考える

shinmiy
October 05, 2022

 長期運用アプリのリファクタリングを考える

Android始まって以来の大きな転換期を迎えている今、リリースしてから年月が経過している長期運用アプリの中にはそろそろ構造的に無理が生じているものも増えてきているのではないでしょうか?

Jetpack Composeが発表され、アプリアーキテクチャガイドでベストプラクティスが案内されていますが、試行錯誤を繰り返しながら運用しているアプリではなかなかついていくことに苦労することも多いです。運用中のアプリの開発を止めるわけにはいかずフルスクラッチという選択肢が取れないこともあるでしょう。

このセッションでは
- ゴッドアクティビティが乱立しているアプリの分解方法
- 段階的なJetpack Compose化
- リファクタリングにおける効率的なAndroid Studioの使い方
など、アプリのアーキテクチャの方向性が明確化してきた中で長期運用しているアプリをリフレッシュする方法を考えます

shinmiy

October 05, 2022
Tweet

More Decks by shinmiy

Other Decks in Programming

Transcript

  1. 5 2017/2018 What's new in Kotlin 1.3 https://kotlinlang.org/docs/whatsnew13.html Android and

    Architecture https://android-developers.googleblog.com/2017/05/android-and-architecture.html
  2. 6 2021 Jetpack Compose is now 1.0: announcing Android’s modern

    toolkit for building native UI https://android-developers.googleblog.com/2021/07/jetpack-compose-announcement.html Rebuilding our guide to app architecture https://android-developers.googleblog.com/2021/12/rebuilding-our-guide-to-app-architecture. html
  3. 7

  4. 11

  5. 12

  6. 15

  7. 23

  8. 24

  9. 25

  10. 27

  11. 28

  12. 29

  13. 30

  14. 31

  15. 32

  16. 33

  17. 34

  18. 39 xx xx xx xx xx xx xx xx xx

    xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx class FooActivity: Activity { override fun onCreate() { doHoge() doFuga() } override fun onDestroy() { doHuga() } private fun doHoge() { why.are = you.reading the.fine.print() if (theres.nothing) { here.to(see) } } private fun doFuga() { db.hoge { result -> if (result.isSuccessful) { val builder = AlertDialog.Builder(this) builder.setTitle(R.string.submit_dialog_title) builder.setMessage(R.string.submit_dialog_message) builder.setPositiveButton(R.string.ok) { p0, p1 -> Logger.log(SubmitLog()) val message = R.string.submit_complete Toast.makeText(this, message, Toast.LENGTH_LONG) .show() finish() } } } } } xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx class FooActivity: Activity { override fun onCreate() { doHoge() doFuga() } override fun onDestroy() { doHuga() } private fun doHoge() { why.are = you.reading the.fine.print() if (theres.nothing) { here.to(see) } } private fun doFuga() { db.hoge { result -> if (result.isSuccessful) { this.showDialog() } else { finish() } } } }
  19. 40

  20. 43

  21. 44

  22. 45

  23. 46

  24. 47

  25. 48

  26. 49

  27. 50

  28. 51

  29. 52

  30. 53

  31. 54

  32. 55

  33. 57

  34. 58