// 네이버 서치 사이트 등록 // 구글 서치 사이트 등록

 

새롭게 시작할 뉴스 앱 프로젝트를 기획하고, 이 앱을 개발하게 되었는지 그 배경과 함께 아키텍처 설계 전략을 공유하려고 합니다.

 

저는 다음과 같은 이유로 이 앱을 개발하고 싶었습니다.

매일 뉴스와 기사를 보는데, 내가 원하는 뉴스와 기사만을 선별해서 볼 수는 없을까?
한국 뿐만 아니라 해외 기사들도 함께 볼 수는 없을까?
내가 원하는 카테고리(IT, 경제, 주식)의 기사를 한 곳에 모아서  볼 수 있다면 좋을 것 같아!

 

MyNewsTaste 앱은 유저가 원하는 카테고리(IT, 경제, 주식 등)를 선택할 수 있고 각 카테고리의 기사들이 등장하는 비율을 설정할 수 있는 기능을 제공할 예정입니다. 마치 IT 기사 2개, 경제 1개, 주식 1개와 같이 우선순위와 빈도를 정하여 기사를 접하는데 지루함이 느껴지지 않게 말이죠.

 

 

이 프로젝트를 시작하며 개발자로서 달성하고 싶은 설계 목표가 있습니다.

1. 멀티 모듈 구조
2. 클린 아키텍처 기반, 관심사의 분리 철칙 준수

 

 

프로젝트가 커지면 코드베이스가 복잡해지기 마련입니다. 유지보수성, 빌드 속도, 테스트 커버리지, 팀 협업 모든 것을 고려했을 때, 모듈 단위로 책임을 잘게 쪼개고 각 모듈이 오직 자신의 역할만 수행하도록 설계하는 것이 핵심이라 믿습니다.

 

프로젝트 개요

이 앱은 크게 다음 세 가지 화면을 포함합니다.

  1. 메인 화면
    • 5개의 탭을 배치
    • 각 탭은 1) MyNewsTaste 2) 종합 뉴스, 3)사회 4) 경제 5) 찜한 기사
  2. 설정 화면
    • 사용자가 관심 카테고리와 비율을 지정
  3. 상세 화면
    • 기사를 클릭했을 때 본문과 이미지를 보여주는 화면

 

백엔드 데이터는 News APINaver API에서 가져오고,
사용자가 저장한 기사는 Room DB에 영구 저장합니다.

 

 

 

멀티모듈 구조

:app  - 최상위 Application, 네비게이션 호스트

:core:ui - 공통 UI 컴포넌트(ArticleCard, LoadingIndicator 등)
:core:local - Room DB, SharedPreferences
:core:network - API 정의(NewsApiService, NaverApiService), Retrofit/OkHttp 설정
:core:domain - UseCase, 인터페이스(ArticleRepository, SettingsRepository)
:core:data -  domain 인터페이스 구현체

:feature-articlelist - 5개의 탭을 제공하는 UI, ViewModel, Fragment
:feature-settings - 설정 UI, ViewModel, Fragment
:feature-articledetail - 기사 상세 내용 UI, ViewModel, Fragment

 

필요한 기능들을 위와 같이 멀티모듈로 구성하였습니다.

Compose로 Ui단을 구성할 수 있으나 View로 개발할 예정입니다.

그 이유는 View에서 Compose로 전환하는 단계의 경험을 쌓고 싶기 때문입니다.

또한, 멀티모듈과 클린아키텍처를 기반으로 한다면 더더욱 View에서 Compose로 전환하기 쉬울것으로 예상됩니다.

 

클린아키텍처를 실현하기 위하여 의존 관계는 항상 유의하며 지켜야합니다.
app feature
feature → domain

data → domian 
core-local, core-network → data

 

 

멀티모듈 구조관심사의 분리를 철칙으로 삼아:

  • 유지보수성 높은 코드
  • 확장성 보장된 설계
  • 테스트와 협업 모두 효율적인 환경

을 만들어 갈 예정입니다.

앞으로 이 구조를 바탕으로 각 기능을 하나씩 구현하며,
학습한 내용과 실전 꿀팁을 공유하겠습니다.

 

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

Bitmap의 inSampleSize를 적용하지 않고, 원본을 그대로 Bitamp으로 변환한 후 Crop을 진행하는 동영상

- Composable의 Animation이 렉이 걸리고 부드럽지 못하다.

 

 

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

Bitmap의 inSampleSize를 계산하여 다운샘플링이 적용된 Bitmap으로 Crop을 진행하는 동영상

- Composable의 Animation이 가볍게 동작하며 렉이 없음을 알 수 있다.

집중모드
"내가 너의 비서가 되어줄게, 넌 집중만해"

아이폰 유저로서 집중모드를 유용하게 쓰고 있어,

집중모드에 대해 소개해드리려고 합니다.

내가 잠자는 동안에 알림에 방해를 받고 싶지 않다면?

 

내가 회사에 있는 동안에 등록되어 있지 않은 연락처로부터 전화를 거절하고 싶다면?
운전하는 동안에 전화를 받지 않고 자동으로 문자를 전달하고 싶다면?

이 모든것을 집중모드로 제어할 수 있습니다.

 

iOS 16 집중모드

집중 모드는 크게 6가지로 분류할 수 있습니다. 
1) 방해금지 모드

2) 개인 시간

3) 수면

4) 업무

5) 운전

6) 사용자화(여러개 설정 가능)

 

iOS 16 방해금지모드

+ 추가 버튼을 클릭하여 건조기 설치 기사로 부터 오는 알림을 모두 허용할 수 있습니다.

즉, 꼭 연락이 필요한 사람은 이러한 기능을 통해 알림을 허용해줄 수 있습니다.

전화 통화 또한 수신하고자 하는 사람을 선택할 수 있습니다.

1) 모든 사람

2) 허용된 사람만 (건조기 설치 기사)

3) 즐겨찾기

4) 연락처만

 

 

 

 

나의 아이폰에 저장되어 있지 않은 연락처들은

모두 거절할 수 있는 방법으로 4)를 이용하실 수 있으십니다.

저는 이 방법으로 모르는 번호(스팸 확률이 높은)는

전화 수신을 하지 않도록 설정하여 사용하고 있습니다.

이게 저는 상당히 유용하다고 생각합니다. 👍

또는 어떤 앱으로부터 알림을 허용할 것인지 +추가 버튼을 이용하여 설정할 수 있습니다.

갤러리아 앱의 경우 할인혜택 및 행사 알림을 받고자 한다면

갤러리아를 추가하여 항상 알림을 받도록 설정할 수 있습니다.

"긴급" 알림도 허용할 수 있습니다.

 

잠금 화면을 집중모드마다 변경하고 싶다면 

잠금 화면을 선택할 수 있는 기능도 제공하고 있습니다.

잠금 화면 뿐만 아니라, 홈 화면 페이지 선택도 가능합니다 😁

 

시계 페이스 또한 설정할 수 있습니다.

집중 모드에 따라 잠금화면, 홈화면, 시계 페이스 다양하게 설정이 가능하므로

수면 시간에는 수면과 어울리는 사진

업무 모드에는 동기부여가 될 수 있는 사진 등

자유롭게 선택하여 집중 모드를 활용해보실 수 있으십니다.

 

 

집중모드를 활성화 할 수 있는 방법에는 수동도 있지만

"자동으로 켜기" 기능이 있습니다.

 

1)스마트 활성화

사용자의 위치, 앱 사용 사용 등의 신호를 기반으로

하루 중 적절한 시간에 '방해금지 모드' 집중 모드를 자동으로 켭니다.

 

2) 시간

ex) 오후 12:30 ~ 오전 2:30 평일

자신의 수면 시간을 설정하여 특정 시간대에

수면모드를 켜는것도 좋은 방법이 될 것 같네요.

 

3) 위치

ex) 신촌역 세브란스 병원에 도착하였을 때

 

직장의 위치를 설정하여 업무에 집중하고싶다면,

업무모드를 위치 기반으로 활성화 해보시길 추천드립니다.

4) 앱

ex) 리니지 앱을 켰을 때

 

리니지 앱을 실행하였을 때 게임모드를 실행하여 전화를 수신하지 않도록

설정할 수도 있겠죠.

 

iOS의 집중모드는 이렇게 다양하게 사용될 수 있습니다.

 

마지막으로 집중모드 필터 기능이 있습니다.

1. 앱 필터

1) 메시지

메시지에서 원하는 메시지만 표시할 수 있도록 합니다.

예를 들면 업무 중에 알림을 허용한 사람과의 대화만 표시할 수 있습니다.

 

2) 캘린더

캘린더는 업무 캘린더만 켜도록 설정할 수 있습니다.

 

3) Mail

원하는 메일 계정을 선택하여 해당 메일 계정의 알림 및 표시할 수 있습니다

 

4) 사파리

탭그룹을 여러개 사용하신다면, 업무중에 업무 탭만 활성화할 수 있습니다.

2. 시스템 필터

1) 저전력 모드

수면모드의 경우 전력을 낮춰 배터리를 아껴볼 수 있겠네요!

 

2) 화면 스타일

다크모드, 라이트모드 중에 선택할 수 있습니다

 

 


 

iOS 집중모드를 적극 활용해보시면 보다 편리함을 느끼실 수 있으십니다.

마치 제 곁에 비서가 있는 것 처럼 제어할 수 있습니다.

iOS 에서 제공하는 단축어와 함께라면 더욱 응용이 가능합니다.

예를 들면

"퇴근 후 도착하면 개인시간 모드(모든 앱 알림허용 및 모든전화 수신)를

키고 블루투스 오디오를 실행하여 유튜브 뮤직의 좋아하는 노래들 중 랜덤으로 재생"

이런 기능이 가능해집니다.

 

   집중모드를 활용하여 삶의 질을 높여보시길 바랍니다.

+ Recent posts