스팀 앱 개발기 #150 - 개발 계획: 후속 보강 작업
개발 계획: 후속 보강 작업
Jetpack Compose로 마이그레이션. 1단계부터 4단계까지 완료했했습니다. 다음 기능을 개발하고 싶지만, 혹시 추가로 보강해야 할 게 있는지 클로드에게 물어봤습니다. 역시나 해야 할 것들이 남아 있네요. 내용은 아래와 같습니다.
다음에는 아래 4가지 작업들을 단계별로 진행할 예정입니다. 다음부터는 클로드에게 물어본 질문들도 리스트로 정리할 것입니다.
추천 후속 작업
1. Compose 마이그레이션 연장선 (높은 우선순위)
PostImagePagerActivity / ProfileImageActivity 정리
두 Activity가 아직 ComposeView + setContentView() 방식(하이브리드)을 사용 중입니다. SplashActivity처럼 setContent {} 방식으로 전환하면 마이그레이션이 완전히 일관됩니다.
VoteListActivity → Navigation Compose 통합
앞서 논의한 내용대로, 장기적으로 단일 Activity 구조로 통합하는 작업입니다. SharedViewModel 방식으로 PostContentViewModel의 ActiveVote 데이터를 공유하면 됩니다.
2. 레거시 의존성 제거 (중간 우선순위)
DataBinding 의존성 제거build.gradle에서 dataBinding { enabled = true } 설정이 남아 있을 수 있습니다. 레이아웃 XML을 모두 삭제했으므로 제거 가능합니다.
RxJava 사용 여부 점검BaseViewModel에 compositeDisposable이 남아 있습니다. 프로젝트 전반에서 RxJava가 실제로 사용 중인지 점검하고, 미사용이면 의존성을 제거할 수 있습니다.
ViewModelProvider → by viewModels() 통일PostImagePagerActivity, ProfileImageActivity가 아직 ViewModelProvider(this).get(...) 방식을 사용 중입니다.
3. Architecture 개선 (중간 우선순위)
AccountDetailsViewModel StateFlow 전환collectAsState() 대신 collectAsStateWithLifecycle()을 사용하고 있는지 확인 및 통일이 필요합니다.
PostImagePagerActivity / ProfileImageActivity Hilt 적용
두 Activity가 @AndroidEntryPoint 없이 ViewModelProvider를 직접 사용 중입니다. Hilt 방식으로 통일하면 일관성이 높아집니다.
4. 테스트 (낮은 우선순위)
Compose UI 테스트 추가
현재 Compose 화면들에 대한 UI 테스트가 없습니다. VoteListScreen, PostScreen 등 주요 화면부터 추가를 고려할 수 있습니다.
ViewModel 단위 테스트 보강
StateFlow 기반으로 전환된 ViewModel들에 대한 단위 테스트를 추가하면 안정성이 높아집니다.
요약
| 작업 | 우선순위 | 난이도 |
|---|---|---|
PostImagePagerActivity / ProfileImageActivity setContent {} 전환 | 높음 | 낮음 |
| DataBinding / RxJava 의존성 제거 | 높음 | 낮음 |
VoteListActivity → Navigation Compose 통합 | 중간 | 중간 |
Hilt / by viewModels() 통일 | 중간 | 낮음 |
| Compose UI 테스트 추가 | 낮음 | 높음 |
가장 빠르게 효과를 볼 수 있는 작업은 PostImagePagerActivity / ProfileImageActivity 정리와 DataBinding 의존성 제거입니다.
지난 스팀 앱 개발기
- #149 - 개발 완료: Jetpack Compose 마이그레이션 4단계
- #148 - 개발 완료: Jetpack Compose 마이그레이션 3단계
- #147 - 개발 완료: Jetpack Compose 마이그레이션 2단계
- #146 - 개발 완료: Jetpack Compose 마이그레이션 1단계
- #145 - 개발 계획: Jetpack Compose 마이그레이션
- #144 - 개발 완료: 리팩토링: 타입 안전성과 일관성 개선
- #143 - 개발 완료: 내비게이션 컴포즈 활용하여 프로필 화면으로부터 다른 화면 이동
- #142 - 개발 완료: API 연동 코드 자동 생성 방안
- #141 - 개발 완료: Main2Activity 관련 리팩토링
- #140 - 개발 완료: Navigation Compose 활용하여 태그 화면에서 포스트 화면 이동
- #139 - 개발 완료: Main2Activity 클래스를 추가하고 내비게이션 라이브러리 변경
- #138 - 개발 완료: Hilt 라이브러리 활용한 의존성 주입 구현
- #137 - 개발 완료: libs.versions.toml 파일 생성
- #136 - 개발 완료: 사용자 히스토리 화면에서 스팀파워 보상을 SP로 보여주기
- #135 - 개발 완료: 태그 및 포스트 리스트 화면에서 텍스트의 HTML 태그 제거
- #134 - 개발 완료: (1) 태그/포스트 리스트 화면의 포스트 항목에 댓글 개수 보여주기 (2) 댓글 리스트를 Jetpack Compose로 리뉴얼
- #133 - 개발 완료: (1) 검색 버튼 클릭시 키보드 숨기기 (2) 버그 수정: 팔로잉 계정 수 오류
- #132 - 개발 완료: 포스트 이미지 페이저 화면에 XML 대신 Jetpack Compose 적용
- #131 - 개발 완료: 프로필 이미지 화면에 XML 대신 Jetpack Compose 적용
- #130 - 개발 완료: 태그 화면에 XML 대신 Jetpack Compose 적용
- #129 - 개발 완료: 지갑 화면에 XML 대신 Jetpack Compose 적용
- #128 - 개발 완료: 포스트 리스트 화면에 XML 대신 Jetpack Compose 적용
- #127 - 개발 완료: 프로필 화면에 XML 대신 Jetpack Compose 적용
- #126 - 개발 완료: 계정 히스토리 화면에 XML 대신 Jetpack Compose 적용
- #125 - 개발 완료: 댓글 리스트 바텀시트에 XML 대신 Jetpack Compose 적용
- #124 - 개발 완료: 포스트 화면에 XML 대신 Jetpack Compose 적용
- #123 - 개발 완료: 계정 상세 화면
- #122 - 개발 완료: 포스트 화면에서 댓글 리스트 보여주기
- #121 - 개발 완료: 사용자 히스토리 화면에서 항목 클릭시 링크 팝업 띄우기
- #120 - 개발 완료: 사용자 히스토리 화면
- #119 - 개발 완료: Comments, Replies 화면
- #118 - 개발 완료: 포스트(Posts) 화면
- #117 - 개발 완료: 블로그 화면
- #116 - 개발 완료: 프로필 화면
- #115 - 개발: 프로필 화면 구현에 필요한 ProfileViewModel 클래스 개발
- #114 - 수정: 태그 화면의 포스트 리스트 항목 레이아웃 변경
- #113 - 오류 수정: 태그 리스트 로딩 중 다른 화면 이동하면 앱 비정상 종료
- #112 - 포스트 화면에서 보팅 리스트 화면으로 연결
- #111 - 시작 화면 추가
- #110 - 오류 수정: 지갑 화면 시작시 오류 토스트 뜸
- #109 - 개선: 태그 입력하고 검색 버튼 클릭 또는 엔터 키 누르면 키보드 닫기
- #108 - 개선: 태그 검색창에 엔터 키 적용
- #107 - 버그 수정: 태그 화면 복귀시 포스트 리스트 다시 로딩됨
- #106 - 포스트 화면 개발
- #105 - 포스트 화면의 로직 처리를 담당할 PostViewModel 클래스 개발
- #104 - 포스트 내용 읽기 기능을 Repository, Use Case 패턴에 적용
- #103 - 포스트 내용을 읽기 위한 bridge.get_discussion API 연동 코드 작성
- #102 - 포스트 내용을 읽기 위한 bridge.get_discussion API
- #101 - build.gradle에서 라이브러리 이름과 버전 통합
- #1 ~ #100
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!
Upvoted! Thank you for supporting witness @jswit.
🎉 Congratulations!
Your post has been upvoted by the SteemX Team! 🚀
SteemX is a modern, user-friendly and powerful platform built for the Steem community.
🔗 Visit us: www.steemx.org
✅ Support our work — Vote for our witness: bountyking5